Class: Active::Services::GSA

Inherits:
IActivity show all
Defined in:
lib/services/gsa.rb

Instance Attribute Summary collapse

Attributes inherited from IActivity

#data, #title

Instance Method Summary collapse

Methods inherited from IActivity

#validated_address

Constructor Details

#initialize(json = {}) ⇒ GSA

EXAMPLE Data hash of a Feather Run | Ashland, Oregon 97520 | Thursday …”, “language”=>“en”, “url”=>“www.active.com/running/ashland-or/birds-of-a-feather-run-2010”, “escapedUrl”=>“www.active.com/running/ashland-or/birds-of-a-feather-run-2010”, “meta”=>{“city”=>“Ashland”, “assetId”=>[“4365AF63-B2AE-4A98-A403-5E30EB6D2D69”, “4365af63-b2ae-4a98-a403-5e30eb6d2d69”], “substitutionUrl”=>“1845585”, “trackbackurl”=>“www.active.com/running/ashland-or/birds-of-a-feather-run-2010”, “contactName”=>“Hal Koerner”, “eventDate”=>“2010-09-23T00:00:00-07:00”, “eventLongitude”=>“-122.5526”, “eventId”=>“1845585”, “zip”=>“97520”, “category”=>“Activities”, “latitude”=>“42.12607”, “google-site-verification”=>“”, “participationCriteria”=>“All”, “dma”=>“Medford - Klamath Falls”, “country”=>“United States”, “sortDate”=>“2000-09-23”, “tag”=>[“event:10”, “Running:10”], “lastModifiedDateTime”=>“2010-09-23 03:04:55.463”, “lastModifiedDate”=>“2010-09-23”, “startDate”=>“2010-09-23”, “contactPhone”=>“541-201-0014”, “eventState”=>“Oregon”, “splitMediaType”=>“Event”, “onlineDonationAvailable”=>“0”, “market”=>“Medford - Klamath Falls”, “assetName”=>[“Birds of a Feather Run”, “Birds of a Feather Run”], “seourl”=>“www.active.com/running/ashland-or/birds-of-a-feather-run-2010”, “assetTypeId”=>“EA4E860A-9DCD-4DAA-A7CA-4A77AD194F65”, “channel”=>“Running”, “endTime”=>“0:00:00”, “mediaType”=>“Event”, “startTime”=>“0:00:00”, “description”=>“”, “longitude”=>“-122.5526”, “UpdateDateTime”=>“9/22/2010 11:46:24 AM”, “endDate”=>“2010-09-23”, “onlineMembershipAvailable”=>“0”, “onlineRegistrationAvailable”=>“false”, “eventZip”=>“97520”, “state”=>“Oregon”, “estParticipants”=>“2000”, “eventURL”=>“sorunners.org/”, “eventLatitude”=>“42.12607”, “keywords”=>“Event”, “summary”=>“… Similar Running Events. I Ran for Sudan - Maple Valley First Annual 10K/2Mile Kid’s Run/Walk Maple Valley, Washington Sat, Oct 02, 2010; … ”}



16
17
18
19
20
21
# File 'lib/services/gsa.rb', line 16

def initialize(json={})
  # need to hold on to original data
  @data = HashWithIndifferentAccess.new(json) || HashWithIndifferentAccess.new
  # self.title = @data['meta']['assetName'] || nil
  self.title = @data['title'] || nil
end

Instance Attribute Details

#asset_type_idObject

require ‘active_support/core_ext/hash/’



11
12
13
# File 'lib/services/gsa.rb', line 11

def asset_type_id
  @asset_type_id
end

Instance Method Details

#addressObject



92
93
94
95
96
97
98
99
100
101
102
103
104
# File 'lib/services/gsa.rb', line 92

def address
  @address = HashWithIndifferentAccess.new({
    :name    => @data["meta"]["location"],
    :city    => @data["meta"]["city"],
    :lat     => @data["meta"]["latitude"],
    :lng     => @data["meta"]["longitude"],
    :country => @data["meta"]["country"]
  })       
 @address[:address] = @data["meta"]["eventAddress"] || @data["meta"]["location"] || nil
 @address[:state] = @data["meta"]["eventState"] || @data["meta"]["state"]
 @address[:zip]   = @data["meta"]["eventZip"] || @data["meta"]["zip"]
 @address
end

#asset_idObject



62
63
64
65
66
# File 'lib/services/gsa.rb', line 62

def asset_id
  return nil unless @data["meta"] and @data["meta"]["assetId"]
  value = @data["meta"]["assetId"]
  @asset_id = (value.class==Array) ? value[0] : value
end

#categoriesObject

def event_url

@data["meta"]["organizationWebsite"] rescue

end



48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/services/gsa.rb', line 48

def categories
  arr = []
  if @data["meta"]["channel"].class==String
    if @data["meta"]["channel"].index(",")
      arr << @data["meta"]["channel"].split(",")
    else
      arr << @data["meta"]["channel"]
    end
  else
    arr << @data["meta"]["channel"]
  end  
  arr.flatten!
end

#categoryObject



132
133
134
# File 'lib/services/gsa.rb', line 132

def category
  primary_category
end

#descObject

def contact_email

if @data["meta"].has_key?("contactEmail") && !@data["meta"]["contactEmail"].blank?
  @data["meta"]["contactEmail"]
end

end



153
154
155
156
157
158
159
160
161
162
163
# File 'lib/services/gsa.rb', line 153

def desc
  if @data["meta"].has_key?("allText") && !@data["meta"]["allText"].blank?
    @data["meta"]["allText"]
  elsif @data["meta"].has_key?("summary") && !@data["meta"]["summary"].blank?
    @data["meta"]["summary"]
  elsif @data.has_key?("summary") && !@data["summary"].blank?
    @data["summary"]
  else
    ""
  end
end

#end_dateObject



120
121
122
123
124
125
126
# File 'lib/services/gsa.rb', line 120

def end_date
  if @data.has_key?("meta") and  @data["meta"].has_key?("endDate")
    DateTime.parse @data["meta"]["endDate"]
  else
    nil
  end
end

#end_timeObject



128
129
130
# File 'lib/services/gsa.rb', line 128

def end_time
  end_date
end

#last_modifiedObject



136
137
138
139
# File 'lib/services/gsa.rb', line 136

def last_modified
  @data["meta"]["lastModifiedDateTime"] if @data["meta"].has_key?("lastModifiedDateTime") 

end

#online_registrationObject



141
142
143
144
145
# File 'lib/services/gsa.rb', line 141

def online_registration
  if @data["meta"].has_key?("onlineRegistrationAvailable") 
    (@data["meta"]["onlineRegistrationAvailable"].downcase == "true") ? true : false
  end
end

#primary_categoryObject



73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# File 'lib/services/gsa.rb', line 73

def primary_category
  # do we have it in the seo url?
  if @data["meta"].has_key?("seourl")
    seo_channel = @data["meta"]["seourl"].split("/")
    if seo_channel.length > 2 and categories
      categories.each do |cat|
        return cat if cat.downcase==seo_channel[3].downcase
      end
    else
      return "unknown"
    end
  end
  if categories.nil?# && categories.empty?
    return "unknown"
  else
    return categories.first
  end
end

#sourceObject



23
24
25
# File 'lib/services/gsa.rb', line 23

def source
  :gsa
end

#start_dateObject



106
107
108
109
110
111
112
113
114
# File 'lib/services/gsa.rb', line 106

def start_date
  if @data.has_key?("meta") and  @data["meta"].has_key?("eventDate")
    DateTime.parse( @data["meta"]["eventDate"] )
  elsif @data.has_key?("meta") and  @data["meta"].has_key?("startDate")
    DateTime.parse( @data["meta"]["startDate"] )
  else
    nil
  end
end

#start_timeObject



116
117
118
# File 'lib/services/gsa.rb', line 116

def start_time
  start_date
end

#substitutionUrlObject

substitutionUrl could be formatted like this

  1. “meta”:Active::Services::GSA.“substitutionUrl”:“vistarecreation/registrationmain“substitutionUrl”:“vistarecreation/registrationmain.sdi?source=showAsset“substitutionUrl”:“vistarecreation/registrationmain.sdi?source=showAsset.sdi&activity_id=4900”

  2. “meta”:“substitutionUrl”:“4900”



177
178
179
180
181
182
183
184
185
# File 'lib/services/gsa.rb', line 177

def substitutionUrl
  if @data["meta"].has_key?("substitutionUrl")
    if /activity_id=/ =~ @data["meta"]["substitutionUrl"]
      @data["meta"]["substitutionUrl"].split("activity_id=")[1]
    else
      @data["meta"]["substitutionUrl"]
    end
  end
end

#title=(value) ⇒ Object



27
28
29
30
31
32
33
34
# File 'lib/services/gsa.rb', line 27

def title=(value)
  @title = value
  if @title 
    @title = @title.split("|")[0].strip if @title.include?("|")          
    @title = @title.gsub(/<\/?[^>]*>/, "")
    @title = @title.gsub("...", "")
  end
end

#urlObject



36
37
38
39
40
41
42
# File 'lib/services/gsa.rb', line 36

def url
  if @data["meta"].has_key?("seourl")
    @data["meta"]["seourl"]
  else
    @data["url"]
  end
end

#userObject



165
166
167
168
169
170
171
172
# File 'lib/services/gsa.rb', line 165

def user
  email        = @data["meta"]["contactEmail"] || nil
  u            = User.new
  u.email      = email if Validators.email(email)
  u.first_name, u.last_name = parse_contact_name(@data["meta"]["contactName"])
  u.phone      = @data["meta"]["contactPhone"] || nil
  u
end