Active 0.0.42 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +6 -0
- data/.irbrc +21 -0
- data/.rspec +1 -0
- data/.rvmrc +2 -0
- data/Active.gemspec +28 -29
- data/Gemfile +4 -0
- data/History.txt +5 -2
- data/{README.txt → README.md} +4 -20
- data/Rakefile +11 -17
- data/lib/Active.rb +11 -79
- data/lib/active/activity.rb +7 -0
- data/lib/active/article.rb +7 -0
- data/lib/active/asset.rb +205 -0
- data/lib/active/errors.rb +9 -0
- data/lib/active/query.rb +225 -0
- data/lib/active/result.rb +7 -0
- data/lib/active/results.rb +6 -0
- data/lib/active/training.rb +7 -0
- data/lib/active/version.rb +3 -0
- data/lib/ext/hash_extensions.rb +8 -0
- data/spec/asset_spec.rb +47 -0
- data/spec/search_spec.rb +383 -432
- data/spec/spec_helper.rb +23 -2
- metadata +113 -116
- data/bin/Active +0 -7
- data/lib/.DS_Store +0 -0
- data/lib/services/.DS_Store +0 -0
- data/lib/services/IActivity.rb +0 -39
- data/lib/services/_ats.rb +0 -215
- data/lib/services/active_works.rb +0 -167
- data/lib/services/activity.rb +0 -512
- data/lib/services/address.rb +0 -17
- data/lib/services/ats.rb +0 -229
- data/lib/services/dto/user.rb +0 -9
- data/lib/services/gsa.rb +0 -205
- data/lib/services/reg_center.rb +0 -270
- data/lib/services/sanitize.rb +0 -108
- data/lib/services/search.rb +0 -494
- data/lib/services/validators.rb +0 -124
- data/rspec-tm +0 -1
- data/rvmrc +0 -1
- data/spec/.DS_Store +0 -0
- data/spec/Active_spec.rb +0 -28
- data/spec/activeworks_spec.rb +0 -60
- data/spec/activity_spec.rb +0 -421
- data/spec/ats_spec.rb +0 -106
- data/spec/benchmark/search_bench.rb +0 -55
- data/spec/custom_matchers_spec.rb +0 -27
- data/spec/gsa_spec.rb +0 -210
- data/spec/reg_spec.rb +0 -173
- data/spec/search_memcached_spec.rb +0 -42
- data/spec/validators_spec.rb +0 -19
- data/test/test_Active.rb +0 -0
- data/version.txt +0 -1
data/lib/services/address.rb
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
module Active
|
2
|
-
module Services
|
3
|
-
class AddressDeprecated
|
4
|
-
attr_accessor :name, :state, :city, :state, :zip, :lat, :lng, :country
|
5
|
-
def initialize(data={})
|
6
|
-
@name = data[:name]
|
7
|
-
@state = data[:state]
|
8
|
-
@city = data[:city]
|
9
|
-
@state = data[:state]
|
10
|
-
@zip = data[:zip]
|
11
|
-
@lat = data[:lat]
|
12
|
-
@lng = data[:lng]
|
13
|
-
@country = data[:country]
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
data/lib/services/ats.rb
DELETED
@@ -1,229 +0,0 @@
|
|
1
|
-
require 'digest/sha1'
|
2
|
-
module Active
|
3
|
-
module Services
|
4
|
-
|
5
|
-
class ATSError < StandardError; end
|
6
|
-
|
7
|
-
class ATS < IActivity
|
8
|
-
|
9
|
-
attr_reader :metadata_loaded
|
10
|
-
# EXAMPLE Data hash
|
11
|
-
# {"destinationID"=>"", "assetId"=>"A9EF9D79-F859-4443-A9BB-91E1833DF2D5", "substitutionUrl"=>"1878023", "city"=>"Antioch", "contactName"=>"City of Antioch", "trackbackurl"=>"http://www.active.com/page/Event_Details.htm?event_id=1878023&assetId=A9EF9D79-F859-4443-A9BB-91E1833DF2D5", "category"=>"Activities", "zip"=>"94531", "userCommentText"=>nil, "location"=>"Multi-use Room (prewett) - Prewett Family Park & Center", "latitude"=>"37.95761", :asset_id=>"A9EF9D79-F859-4443-A9BB-91E1833DF2D5", "searchWeight"=>"1", "country"=>"United States", "participationCriteria"=>"All", "dma"=>"San Francisco - Oakland - San Jose", "isSearchable"=>"true", :asset_name=>"Fitness, Pilates Mat Class (16 Yrs. & Up)", :substitution_url=>"1878023", :asset_type_id=>"EA4E860A-9DCD-4DAA-A7CA-4A77AD194F65", "row"=>"1", "image1"=>"http://www.active.com/images/events/hotrace.gif", "startDate"=>"2010-09-13", "contactPhone"=>"925-779-7070", :asset_type_name=>"Active.com Event Registration", "onlineDonationAvailable"=>"0", "avgUserRating"=>nil, "market"=>"San Francisco - Oakland - San Jose", "assetTypeId"=>"EA4E860A-9DCD-4DAA-A7CA-4A77AD194F65", "assetName"=>"Fitness, Pilates Mat Class (16 Yrs. & Up)", "channel"=>"Not Specified", "seourl"=>"http://www.active.com/not-specified-recware-activities/antioch-ca/fitness-pilates-mat-class-16-yrs-and-up-2010", :xmlns=>"http://api.asset.services.active.com", :url=>"http://www.active.com/page/Event_Details.htm?event_id=1878023", "mediaType"=>"Recware Activities", "startTime"=>"18:15:00", "endTime"=>"18:15:00", "contactEmail"=>"dadams@ci.antioch.ca.us", "eventResults"=>nil, "longitude"=>"-121.7936", "endDate"=>"2010-09-13", "onlineRegistrationAvailable"=>"true", "onlineMembershipAvailable"=>"0", "state"=>"California"}
|
12
|
-
# {"destinationID"=>"", "assetId"=>"D9A22F33-8A14-4175-8D5B-D11578212A98", "substitutionUrl"=>"1847738", "city"=>"Encino", "contactName"=>"Lilliane Ballesteros", "trackbackurl"=>"http://www.active.com/page/Event_Details.htm?event_id=1847738&assetId=D9A22F33-8A14-4175-8D5B-D11578212A98", "category"=>"Activities", "zip"=>"91406", "userCommentText"=>nil, "location"=>"Balboa Park/Lake Balboa", "latitude"=>"34.19933", :asset_id=>"D9A22F33-8A14-4175-8D5B-D11578212A98", "searchWeight"=>"1", "country"=>"United States", "participationCriteria"=>"All", "dma"=>"Los Angeles", "isSearchable"=>"1", :asset_name=>"2nd Annual weSPARK 10K Run & 5K Run Walk", :substitution_url=>"1847738", :asset_type_id=>"EA4E860A-9DCD-4DAA-A7CA-4A77AD194F65", "row"=>"1", "image1"=>"http://www.active.com/images/events/hotrace.gif", "startDate"=>"2010-11-14", "contactPhone"=>"818-906-3022", :asset_type_name=>"Active.com Event Registration", "onlineDonationAvailable"=>"0", "avgUserRating"=>nil, "market"=>"Los Angeles", "assetTypeId"=>"EA4E860A-9DCD-4DAA-A7CA-4A77AD194F65", "assetName"=>"2nd Annual weSPARK 10K Run & 5K Run Walk", "channel"=>["Running", "Walking"], "seourl"=>"http://www.active.com/running/encino-ca/2nd-annual-wespark-10k-run-and-5k-run-walk-2010", :xmlns=>"http://api.asset.services.active.com", :url=>"http://www.active.com/page/Event_Details.htm?event_id=1847738", "mediaType"=>["Event", "Event\\10K", "Event\\5K"], "startTime"=>"8:00:00", "endTime"=>"8:00:00", "contactEmail"=>"lilliane@wespark.org", "eventResults"=>nil, "longitude"=>"-118.4924", "endDate"=>"2010-11-14", "onlineRegistrationAvailable"=>"1", "onlineMembershipAvailable"=>"0", "state"=>"California", "estParticipants"=>"1400", "eventURL"=>"http://www.wespark.org"}
|
13
|
-
|
14
|
-
def initialize(data={},preload_metadata=false)
|
15
|
-
# need to hold on to original data
|
16
|
-
@data = data
|
17
|
-
@asset_id = data[:asset_id]
|
18
|
-
@url = data[:url]
|
19
|
-
@asset_type_id = data[:asset_type_id]
|
20
|
-
@title = data[:asset_name] if data[:asset_name]
|
21
|
-
@substitution_url = data[:substitution_url]
|
22
|
-
# @metadata_loaded = false
|
23
|
-
# load_metadata if preload_metadata
|
24
|
-
end
|
25
|
-
|
26
|
-
def source
|
27
|
-
:ats
|
28
|
-
end
|
29
|
-
|
30
|
-
|
31
|
-
def title
|
32
|
-
# load_metadata unless @metadata_loaded
|
33
|
-
# if @data.has_key?("assetName")
|
34
|
-
@data["assetName"]
|
35
|
-
# else
|
36
|
-
# @title
|
37
|
-
# end
|
38
|
-
end
|
39
|
-
|
40
|
-
def url
|
41
|
-
# load_metadata unless @metadata_loaded
|
42
|
-
if @data.has_key?("seourl")
|
43
|
-
@data["seourl"]
|
44
|
-
elsif @data.has_key?("trackbackurl")
|
45
|
-
@data["trackbackurl"]
|
46
|
-
else
|
47
|
-
@url
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
def categories
|
52
|
-
# load_metadata unless @metadata_loaded
|
53
|
-
categories = @data["channel"]
|
54
|
-
if categories.class==String
|
55
|
-
[@data["channel"]]
|
56
|
-
else
|
57
|
-
@data["channel"]
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
def address
|
62
|
-
# load_metadata unless @metadata_loaded
|
63
|
-
@address = validated_address({
|
64
|
-
:name => @data["location"],
|
65
|
-
:address => @data["address"],
|
66
|
-
:city => @data["city"],
|
67
|
-
:state => @data["state"],
|
68
|
-
:zip => @data["zip"],
|
69
|
-
:lat => @data["latitude"],
|
70
|
-
:lng => @data["longitude"],
|
71
|
-
:country => @data["country"]
|
72
|
-
})
|
73
|
-
end
|
74
|
-
|
75
|
-
def start_date
|
76
|
-
# load_metadata unless @metadata_loaded
|
77
|
-
if @data.has_key?("startDate")
|
78
|
-
if @data.has_key?("startTime")
|
79
|
-
(DateTime.parse "#{@data["startDate"]} #{@data["startTime"]}")
|
80
|
-
else
|
81
|
-
(DateTime.parse @data["startDate"])
|
82
|
-
end
|
83
|
-
else
|
84
|
-
nil
|
85
|
-
end
|
86
|
-
end
|
87
|
-
|
88
|
-
def start_time
|
89
|
-
start_date
|
90
|
-
end
|
91
|
-
|
92
|
-
def end_date
|
93
|
-
# load_metadata unless @metadata_loaded
|
94
|
-
if @data.has_key?("endDate")
|
95
|
-
if @data.has_key?("endTime")
|
96
|
-
(DateTime.parse "#{@data["endDate"]} #{@data["endTime"]}")
|
97
|
-
else
|
98
|
-
(DateTime.parse @data["endDate"])
|
99
|
-
end
|
100
|
-
else
|
101
|
-
nil
|
102
|
-
end
|
103
|
-
end
|
104
|
-
|
105
|
-
def end_time
|
106
|
-
end_date
|
107
|
-
end
|
108
|
-
|
109
|
-
|
110
|
-
def category
|
111
|
-
categories.first
|
112
|
-
end
|
113
|
-
|
114
|
-
def desc
|
115
|
-
# load_metadata unless @metadata_loaded
|
116
|
-
if @data.has_key?("allText")
|
117
|
-
@data["allText"]
|
118
|
-
elsif @data.has_key?("summary")
|
119
|
-
@data["summary"]
|
120
|
-
end
|
121
|
-
end
|
122
|
-
|
123
|
-
def contact_name
|
124
|
-
# load_metadata unless @metadata_loaded
|
125
|
-
@data["contactName"] if @data.has_key?("contactName")
|
126
|
-
end
|
127
|
-
|
128
|
-
def contact_email
|
129
|
-
# load_metadata unless @metadata_loaded
|
130
|
-
@data["contactEmail"] if @data.has_key?("contactEmail")
|
131
|
-
end
|
132
|
-
def contact_phone
|
133
|
-
@data["contactPhone"] if @data.has_key?("contactPhone")
|
134
|
-
end
|
135
|
-
|
136
|
-
def substitutionUrl
|
137
|
-
@data[:substitution_url]
|
138
|
-
end
|
139
|
-
|
140
|
-
def user
|
141
|
-
email = contact_email
|
142
|
-
u = User.new
|
143
|
-
u.email = email if Validators.email(email)
|
144
|
-
u.first_name = contact_name
|
145
|
-
u.phone = contact_phone
|
146
|
-
u
|
147
|
-
end
|
148
|
-
|
149
|
-
|
150
|
-
# EXAMPLE
|
151
|
-
# lazy load the data for some_crazy_method
|
152
|
-
# def some_crazy
|
153
|
-
# return @some_crazy unless @some_crazy.nil?
|
154
|
-
# @some_crazy = @data[:some_crazy_method_from_ats].split replace twist bla bla bla
|
155
|
-
# end
|
156
|
-
|
157
|
-
def self.find_by_id(id)
|
158
|
-
begin
|
159
|
-
c = Savon::Client.new("http://api.amp.active.com/asset-service/services/AssetService")
|
160
|
-
c.request.headers["Api-Key"] = "6npky9t57235vps5cetm3s7k"
|
161
|
-
r = c.get_asset_by_id! do |soap|
|
162
|
-
soap.namespace = "http://api.asset.services.active.com"
|
163
|
-
soap.body = "<context><userId></userId><applicationId></applicationId></context><assetId>#{id}</assetId>"
|
164
|
-
end
|
165
|
-
ats = ATS.new(r.to_hash[:get_asset_by_id_response][:out])
|
166
|
-
ats.load_metadata
|
167
|
-
|
168
|
-
return ats
|
169
|
-
|
170
|
-
rescue Savon::SOAPFault => e
|
171
|
-
raise ATSError, "Couldn't find activity with the id of #{id} error #{e.inspect}"
|
172
|
-
return
|
173
|
-
end
|
174
|
-
end
|
175
|
-
|
176
|
-
def load_metadata
|
177
|
-
metadata = ATS.get_asset_metadata(@asset_id)
|
178
|
-
@data.merge! Hash.from_xml(metadata.to_hash[:get_asset_metadata_response][:out])["importSource"]["asset"]
|
179
|
-
@metadata_loaded=true
|
180
|
-
end
|
181
|
-
|
182
|
-
private
|
183
|
-
|
184
|
-
def self.get_asset_metadata(id)
|
185
|
-
c = Savon::Client.new("http://api.amp.active.com/asset-service/services/AssetService")
|
186
|
-
c.request.headers["Api-Key"] = "6npky9t57235vps5cetm3s7k"
|
187
|
-
r = c.get_asset_metadata! do |soap|
|
188
|
-
soap.namespace = "http://api.asset.services.active.com"
|
189
|
-
soap.body = "<context><userId></userId><applicationId></applicationId></context><assetId>#{id}</assetId>"
|
190
|
-
end
|
191
|
-
# puts "==========="
|
192
|
-
# puts r.to_hash[:get_asset_metadata_response][:out].inspect
|
193
|
-
return r
|
194
|
-
end
|
195
|
-
|
196
|
-
#
|
197
|
-
# def self.get_asset_metadata(id)
|
198
|
-
# search_hash = Digest::SHA1.hexdigest("ats_m_#{id}")
|
199
|
-
# if Active.CACHE
|
200
|
-
# cached_version = Active.CACHE.get(search_hash)
|
201
|
-
# return cached_version if cached_version
|
202
|
-
# end
|
203
|
-
#
|
204
|
-
# c = Savon::Client.new("http://api.amp.active.com/asset-service/services/AssetService")
|
205
|
-
# c.request.headers["Api-Key"] = "6npky9t57235vps5cetm3s7k"
|
206
|
-
# r = c.get_asset_metadata! do |soap|
|
207
|
-
# soap.namespace = "http://api.asset.services.active.com"
|
208
|
-
# soap.body = "<context><userId></userId><applicationId></applicationId></context><assetId>#{id}</assetId>"
|
209
|
-
# end
|
210
|
-
# ats = ATS.new(r.to_hash[:get_asset_metadata_response][:out])
|
211
|
-
# Active.CACHE.set(search_hash, ats) if Active.CACHE
|
212
|
-
# return ats
|
213
|
-
# end
|
214
|
-
|
215
|
-
def self.get_asset_by_id(id)
|
216
|
-
c = Savon::Client.new("http://api.amp.active.com/asset-service/services/AssetService")
|
217
|
-
c.request.headers["Api-Key"] = "6npky9t57235vps5cetm3s7k"
|
218
|
-
r = c.get_asset_by_id! do |soap|
|
219
|
-
soap.namespace = "http://api.asset.services.active.com"
|
220
|
-
soap.body = "<context><userId></userId><applicationId></applicationId></context><assetId>#{id}</assetId>"
|
221
|
-
end
|
222
|
-
ats = ATS.new(r.to_hash[:get_asset_by_id_response][:out])
|
223
|
-
return ats
|
224
|
-
end
|
225
|
-
|
226
|
-
|
227
|
-
end # end ats
|
228
|
-
end
|
229
|
-
end
|
data/lib/services/dto/user.rb
DELETED
data/lib/services/gsa.rb
DELETED
@@ -1,205 +0,0 @@
|
|
1
|
-
module Active
|
2
|
-
module Services
|
3
|
-
|
4
|
-
class GSAError < StandardError; end
|
5
|
-
|
6
|
-
class GSA < IActivity
|
7
|
-
require 'nokogiri'
|
8
|
-
require 'open-uri'
|
9
|
-
# require 'active_support/core_ext/hash/'
|
10
|
-
|
11
|
-
attr_accessor :asset_type_id
|
12
|
-
|
13
|
-
# EXAMPLE Data hash
|
14
|
-
# {"title"=>"Birds of a Feather Run | Ashland, Oregon 97520 | Thursday ...", "language"=>"en", "url"=>"http://www.active.com/running/ashland-or/birds-of-a-feather-run-2010", "escapedUrl"=>"http://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"=>"http://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"=>"http://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"=>"http://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; ... "}
|
15
|
-
|
16
|
-
def initialize(json={})
|
17
|
-
# need to hold on to original data
|
18
|
-
@data = HashWithIndifferentAccess.new(json) || HashWithIndifferentAccess.new
|
19
|
-
# self.title = @data['meta']['assetName'] || nil
|
20
|
-
self.title = @data['title'] || nil
|
21
|
-
end
|
22
|
-
|
23
|
-
def source
|
24
|
-
:gsa
|
25
|
-
end
|
26
|
-
|
27
|
-
def title=(value)
|
28
|
-
@title = value
|
29
|
-
if @title
|
30
|
-
@title = @title.split("|")[0].strip if @title.include?("|")
|
31
|
-
@title = @title.gsub(/<\/?[^>]*>/, "")
|
32
|
-
@title = @title.gsub("...", "")
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
def url
|
37
|
-
if @data["meta"].has_key?("seourl")
|
38
|
-
@data["meta"]["seourl"]
|
39
|
-
else
|
40
|
-
@data["url"]
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
# def event_url
|
45
|
-
# @data["meta"]["organizationWebsite"] rescue
|
46
|
-
# end
|
47
|
-
|
48
|
-
def categories
|
49
|
-
arr = []
|
50
|
-
if @data["meta"]["channel"].class==String
|
51
|
-
if @data["meta"]["channel"].index(",")
|
52
|
-
arr << @data["meta"]["channel"].split(",")
|
53
|
-
else
|
54
|
-
arr << @data["meta"]["channel"]
|
55
|
-
end
|
56
|
-
else
|
57
|
-
arr << @data["meta"]["channel"]
|
58
|
-
end
|
59
|
-
arr.flatten!
|
60
|
-
end
|
61
|
-
|
62
|
-
def asset_id
|
63
|
-
return nil unless @data["meta"] and @data["meta"]["assetId"]
|
64
|
-
value = @data["meta"]["assetId"]
|
65
|
-
@asset_id = (value.class==Array) ? value[0] : value
|
66
|
-
end
|
67
|
-
|
68
|
-
def asset_type_id
|
69
|
-
return nil unless @data["meta"] and @data["meta"]["assetTypeId"]
|
70
|
-
@data["meta"]["assetTypeId"]
|
71
|
-
end
|
72
|
-
|
73
|
-
def primary_category
|
74
|
-
# do we have it in the seo url?
|
75
|
-
if @data["meta"].has_key?("seourl")
|
76
|
-
seo_channel = @data["meta"]["seourl"].split("/")
|
77
|
-
if seo_channel.length > 2 and categories
|
78
|
-
categories.each do |cat|
|
79
|
-
return cat if cat.downcase==seo_channel[3].downcase
|
80
|
-
end
|
81
|
-
else
|
82
|
-
return "unknown"
|
83
|
-
end
|
84
|
-
end
|
85
|
-
if categories.nil?# && categories.empty?
|
86
|
-
return "unknown"
|
87
|
-
else
|
88
|
-
return categories.first
|
89
|
-
end
|
90
|
-
end
|
91
|
-
|
92
|
-
def address
|
93
|
-
@address = HashWithIndifferentAccess.new({
|
94
|
-
:name => @data["meta"]["location"],
|
95
|
-
:city => @data["meta"]["city"],
|
96
|
-
:lat => @data["meta"]["latitude"],
|
97
|
-
:lng => @data["meta"]["longitude"],
|
98
|
-
:country => @data["meta"]["country"]
|
99
|
-
})
|
100
|
-
@address[:address] = @data["meta"]["eventAddress"] || @data["meta"]["location"] || nil
|
101
|
-
@address[:state] = @data["meta"]["eventState"] || @data["meta"]["state"]
|
102
|
-
@address[:zip] = @data["meta"]["eventZip"] || @data["meta"]["zip"]
|
103
|
-
@address
|
104
|
-
end
|
105
|
-
|
106
|
-
def start_date
|
107
|
-
if @data.has_key?("meta") and @data["meta"].has_key?("eventDate")
|
108
|
-
DateTime.parse( @data["meta"]["eventDate"] )
|
109
|
-
elsif @data.has_key?("meta") and @data["meta"].has_key?("startDate")
|
110
|
-
DateTime.parse( @data["meta"]["startDate"] )
|
111
|
-
else
|
112
|
-
nil
|
113
|
-
end
|
114
|
-
end
|
115
|
-
|
116
|
-
def start_time
|
117
|
-
start_date
|
118
|
-
end
|
119
|
-
|
120
|
-
def end_date
|
121
|
-
if @data.has_key?("meta") and @data["meta"].has_key?("endDate")
|
122
|
-
DateTime.parse @data["meta"]["endDate"]
|
123
|
-
else
|
124
|
-
nil
|
125
|
-
end
|
126
|
-
end
|
127
|
-
|
128
|
-
def end_time
|
129
|
-
end_date
|
130
|
-
end
|
131
|
-
|
132
|
-
def category
|
133
|
-
primary_category
|
134
|
-
end
|
135
|
-
|
136
|
-
def last_modified
|
137
|
-
@data["meta"]["lastModifiedDateTime"] if @data["meta"].has_key?("lastModifiedDateTime")
|
138
|
-
|
139
|
-
end
|
140
|
-
|
141
|
-
def online_registration
|
142
|
-
if @data["meta"].has_key?("onlineRegistrationAvailable")
|
143
|
-
(@data["meta"]["onlineRegistrationAvailable"].downcase == "true") ? true : false
|
144
|
-
end
|
145
|
-
end
|
146
|
-
|
147
|
-
# def contact_email
|
148
|
-
# if @data["meta"].has_key?("contactEmail") && !@data["meta"]["contactEmail"].blank?
|
149
|
-
# @data["meta"]["contactEmail"]
|
150
|
-
# end
|
151
|
-
# end
|
152
|
-
|
153
|
-
def desc
|
154
|
-
if @data["meta"].has_key?("allText") && !@data["meta"]["allText"].blank?
|
155
|
-
@data["meta"]["allText"]
|
156
|
-
elsif @data["meta"].has_key?("summary") && !@data["meta"]["summary"].blank?
|
157
|
-
@data["meta"]["summary"]
|
158
|
-
elsif @data.has_key?("summary") && !@data["summary"].blank?
|
159
|
-
@data["summary"]
|
160
|
-
else
|
161
|
-
""
|
162
|
-
end
|
163
|
-
end
|
164
|
-
|
165
|
-
def user
|
166
|
-
email = @data["meta"]["contactEmail"] || nil
|
167
|
-
u = User.new
|
168
|
-
u.email = email if Validators.email(email)
|
169
|
-
u.first_name, u.last_name = parse_contact_name(@data["meta"]["contactName"])
|
170
|
-
u.phone = @data["meta"]["contactPhone"] || nil
|
171
|
-
u
|
172
|
-
end
|
173
|
-
|
174
|
-
# substitutionUrl could be formatted like this
|
175
|
-
# 1. "meta":{"substitutionUrl":"vistarecreation/registrationmain.sdi?source=showAsset.sdi&activity_id=4900"}
|
176
|
-
# 2. "meta":{"substitutionUrl":"4900"}
|
177
|
-
def substitutionUrl
|
178
|
-
if @data["meta"].has_key?("substitutionUrl")
|
179
|
-
if /activity_id=/ =~ @data["meta"]["substitutionUrl"]
|
180
|
-
@data["meta"]["substitutionUrl"].split("activity_id=")[1]
|
181
|
-
else
|
182
|
-
@data["meta"]["substitutionUrl"]
|
183
|
-
end
|
184
|
-
end
|
185
|
-
end
|
186
|
-
|
187
|
-
private
|
188
|
-
# parse_contact_name("Jonathan Spooner")
|
189
|
-
# return ["Jonathan","Spooner"]
|
190
|
-
# return ["Jonathan",nil]
|
191
|
-
# return [nil,nil]
|
192
|
-
def parse_contact_name(value)
|
193
|
-
return nil,nil if value.nil?
|
194
|
-
#first name is whats before the space, last name is everything else
|
195
|
-
name = value.split(" ")
|
196
|
-
fname= name[0]
|
197
|
-
name.delete_at(0)
|
198
|
-
lname = name.join(" ")
|
199
|
-
return fname,lname
|
200
|
-
end
|
201
|
-
|
202
|
-
|
203
|
-
end
|
204
|
-
end
|
205
|
-
end
|