Active 0.0.5 → 0.0.6

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/README.txt CHANGED
@@ -14,6 +14,13 @@ Search api for Active Network
14
14
 
15
15
  Search.search( {:location => "San Diego, CA, US"} )
16
16
 
17
+ List all categories
18
+ Active::Services::Search.CHANNELS.each do |key, value|
19
+ puts key.to_s.humanize
20
+ end
21
+
22
+
23
+
17
24
  == REQUIREMENTS:
18
25
 
19
26
  * none
data/bin/Active CHANGED
File without changes
data/lib/.DS_Store ADDED
Binary file
@@ -2,17 +2,21 @@ module Active
2
2
  module Services
3
3
  class Activity
4
4
  attr_accessor :title, :url, :category, :address, :start_date, :start_time, :end_time, :end_date, :category, :desc,
5
- :asset_id, :data
5
+ :asset_id, :asset_type_id, :data, :endIndex, :pageSize, :searchTime, :numberOfResults
6
6
  def initialize data
7
7
  @data = HashWithIndifferentAccess.new(data)
8
- self.title = @data[:title]
9
- @url = @data[:url]
8
+ self.title = @data[:title]
9
+ @url = @data[:url]
10
+ @pageSize = @data[:pageSize]
11
+ @searchTime = @data[:searchTime]
12
+ @numberOfResults = @data[:numberOfResults]
10
13
 
11
14
  unless @data[:meta].nil?
12
- self.asset_id = @data[:meta][:assetId]
13
- @start_date = Date.parse(@data[:meta][:startDate])
14
- @end_date = Date.parse(@data[:meta][:endDate]) if @data[:meta][:endDate]
15
- self.category = @data[:meta][:channel] ||= ""
15
+ self.asset_id = @data[:meta][:assetId]
16
+ self.asset_type_id = @data[:meta][:assetTypeId]
17
+ @start_date = Date.parse(@data[:meta][:startDate])
18
+ @end_date = Date.parse(@data[:meta][:endDate]) if @data[:meta][:endDate]
19
+ self.category = @data[:meta][:channel] ||= ""
16
20
 
17
21
  @desc = @data[:meta][:description] ||= ""
18
22
  @start_time = @data[:meta][:startTime] ||= ""
@@ -37,7 +41,14 @@ module Active
37
41
 
38
42
  end
39
43
 
40
- # ahhh... just use the first channel if it's an array.
44
+ def title=(value)
45
+ @title = value.gsub(/<\/?[^>]*>/, "")
46
+ if value.include?("|")
47
+ @title = @title.split("|")[0].strip!
48
+ end
49
+ end
50
+
51
+ # TODO add many channels
41
52
  def category=(value)
42
53
  @category = (value.class == Array) ? value[0] : value
43
54
  end
@@ -174,9 +174,12 @@ module Active
174
174
  http.get("#{searchurl.path}?#{searchurl.query}")
175
175
  }
176
176
 
177
- if res.code == '200'
177
+ # if res.code == '200' or res.code == '307'
178
+ if (200..307).include?(res.code.to_i)
178
179
  parsed_json = JSON.parse(res.body)
179
- parsed_json['_results'].collect { |a| Activity.new(a) }
180
+ return parsed_json["numberOfResults"] if data.has_key?(:show_number_of_results)
181
+ query_addl_info= {:endIndex=>parsed_json["endIndex"], :pageSize=>parsed_json["pageSize"], :searchTime=>parsed_json["searchTime"], :numberOfResults=>parsed_json["numberOfResults"]}
182
+ parsed_json['_results'].collect { |a| Activity.new(a.merge query_addl_info) }
180
183
  else
181
184
  raise RuntimeError, "Active Search responded with a #{res.code} for your query."
182
185
  end
@@ -188,7 +191,7 @@ module Active
188
191
  :view => "json",
189
192
  :facet => Facet.ACTIVITIES,
190
193
  :sort => Sort.DATE_ASC,
191
- :radius => "10",
194
+ :radius => "50",
192
195
  :meta => "",
193
196
  :num_results => "10",
194
197
  :page => "1",
@@ -200,6 +203,8 @@ module Active
200
203
  :end_date => "+"
201
204
  }
202
205
  options.merge!(arg_options)
206
+
207
+ return arg_options[:url] if arg_options.keys.index(:url) #a search url was specified - bypass parsing the options (trending)
203
208
 
204
209
  options[:location] = CGI.escape(options[:location]) if options[:location]
205
210
 
@@ -239,7 +244,9 @@ module Active
239
244
  # end
240
245
  #
241
246
  url = "#{SEARCH_URL}/search?api_key=#{options[:api_key]}&num=#{options[:num_results]}&page=#{options[:page]}&l=#{options[:location]}&f=#{options[:facet]}&v=#{options[:view]}&r=#{options[:radius]}&s=#{options[:sort]}&k=#{options[:keywords].join("+")}&m=#{meta_data}"
242
- # puts url
247
+ puts "//////"
248
+ puts url
249
+ puts "//////"
243
250
  url
244
251
  end
245
252
 
@@ -9,7 +9,7 @@ include Active::Services
9
9
  describe Activity do
10
10
  before(:each) do
11
11
  @valid_attributes = {
12
- :title => "2011 Walt Disney World\xAE Marathon | Lake Buena Vista, Florida <b>...</b>",
12
+ :title => "<b>2011 Walt Disney World\xAE Marathon \u003cb\u003e...\u003c/b\u003e | Lake Buena Vista, Florida <b>...</b>",
13
13
  :url => "http://www.active.com/running/lake-buena-vista-fl/walt-disney-world-marathon-2011",
14
14
  :language => "en",
15
15
  :meta => {
@@ -56,6 +56,17 @@ describe Activity do
56
56
  }
57
57
  end
58
58
 
59
+ it "should strip out html from the title" do
60
+ a = Activity.new(@valid_attributes)
61
+ a.title.should eql("2011 Walt Disney World Marathon")
62
+ end
63
+
64
+ it "should strip out unicode from the title"
65
+
66
+ it "should use the first group if title contains pipes." do
67
+
68
+ end
69
+
59
70
  it "should be a valid activity" do
60
71
  a = Activity.new(@valid_attributes)
61
72
  a.url.should eql("http://www.active.com/running/lake-buena-vista-fl/walt-disney-world-marathon-2011")
data/spec/search_spec.rb CHANGED
@@ -13,6 +13,23 @@ describe "Set up" do
13
13
  it "should call search.active.com when told to"
14
14
  end
15
15
 
16
+ describe "Handle http server codes" do
17
+ after(:each) do
18
+ FakeWeb.clean_registry
19
+ end
20
+
21
+ it "should follow a 302" do
22
+ FakeWeb.register_uri(:get, "http://search.active.com/search?api_key=&num=10&page=1&l=San+Diego%2C+CA%2C+US&f=activities&v=json&r=10&s=date_asc&k=&m=meta:startDate:daterange:today..+",
23
+ :body => '{"endIndex":5,"numberOfResults":2,"pageSize":5,"searchTime":0.600205,"_results":[{"escapedUrl": "http://www.active.com/running/calabasas-ca/calabasas-classic-5k-10k-runs-2010","language": "en","title": "Calabasas Classic 2010 - 5k \u003cb\u003e10k\u003c/b\u003e Runs | Calabasas, California 91302 \u003cb\u003e...\u003c/b\u003e","url": "http://www.active.com/running/calabasas-ca/calabasas-classic-5k-10k-runs-2010","summary": "\u003cb\u003e...\u003c/b\u003e Calabasas Classic 2010 - 5k \u003cb\u003e10k\u003c/b\u003e Runs. Based on 0 reviews. \u003cb\u003e...\u003c/b\u003e Recent Reviews Calabasas\u003cbr\u003e Classic 2010 - 5k \u003cb\u003e10k\u003c/b\u003e Runs reviews. Get Directions. Start Address. End Address \u003cb\u003e...\u003c/b\u003e ","meta": {"startDate": "2010-11-14","eventDate": "2010-11-14T08:00:00-08:00","location": "Calabasas Park Centre","tag": ["event:10", "Green:10", "Running:10"],"state": "California","eventLongitude": "-118.6789","endDate": "2010-11-14","locationName": "Calabasas Park Centre","splitMediaType": ["Event", "1 mile", "10K", "5K"],"endTime": "8:00:00","mediaType": ["Event", "Event\\1 mile", "Event\\10K", "Event\\5K"],"google-site-verification": "","city": "Calabasas","startTime": "8:00:00","assetId": ["11B01475-8C65-4F9C-A4AC-2A3FA55FE8CD", "11b01475-8c65-4f9c-a4ac-2a3fa55fe8cd"],"eventId": "1810531","participationCriteria": "All","description": "","longitude": "-118.6789","onlineDonationAvailable": "false","substitutionUrl": "1810531","assetName": ["Calabasas Classic 2010 - 5k 10k Runs", "Calabasas Classic 2010 - 5k 10k Runs"],"zip": "91302","contactPhone": "818-715-0428","sortDate": "2000-11-14","eventState": "California","eventLatitude": "34.12794","keywords": "Event","eventAddress": "23975 Park Sorrento","contactEmail": "rot10kd@yahoo.com","onlineMembershipAvailable": "false","trackbackurl": "http://www.active.com/running/calabasas-ca/calabasas-classic-5k-10k-runs-2010","country": "United States","onlineRegistrationAvailable": "true","category": "Activities","image1": "http://www.active.com/images/events/hotrace.gif","assetTypeId": "EA4E860A-9DCD-4DAA-A7CA-4A77AD194F65","lastModifiedDate": "2010-03-04 07:30:26.307","eventZip": "91302","latitude": "34.12794","UpdateDateTime": "8/18/2010 10:16:26 AM","channel": ["Running", "Walking"]}},
24
+ {"escapedUrl": "http://www.active.com/10k-race/seattle-wa/fitness-for-vitality-5k10k-3race-series-919-2010","language": "en","title": "Fitness For Vitality 5k/\u003cb\u003e10k\u003c/b\u003e 3-Race Series (9/19, 10/17, 11/21) \u003cb\u003e...\u003c/b\u003e","url": "http://www.active.com/10k-race/seattle-wa/fitness-for-vitality-5k10k-3race-series-919-2010","summary": "\u003cb\u003e...\u003c/b\u003e Fitness For Vitality 5k/\u003cb\u003e10k\u003c/b\u003e 3-Race Series (9/19, 10/17, 11/21). Based on 0 reviews. \u003cb\u003e...\u003c/b\u003e\u003cbr\u003e Reviews of Fitness For Vitality 5k/\u003cb\u003e10k\u003c/b\u003e 3-Race Series (9/19, 10. \u003cb\u003e...\u003c/b\u003e ","meta": {"summary": "\u003cp style\u003dtext-align:left\u003e\u003cfont style\u003dfont-family:UniversEmbedded;font-size:12;color:#000000; LETTERSPACING\u003d0 KERNING\u003d0\u003eRace or walk on a flat, fast, and fun course! The entire event is along the Puget Sound. Do all 3 events in the series and watch your time and fitness improve! Oatmeal post-race. 10% proceeds sh","startDate": "2010-09-19","eventDate": "2010-09-19","location": "Alki Beach Park, Seattle","tag": ["event:10", "Running:10"],"state": "Washington","endDate": "2010-11-22","locationName": "1702 Alki Ave. SW","splitMediaType": ["5K", "difficulty:Beginner", "difficulty:Advanced", "Event", "difficulty:Intermediate", "10K"],"lastModifiedDateTime": "2010-08-19 23:35:50.117","endTime": "07:59:59","mediaType": ["5K", "difficulty:Beginner", "difficulty:Advanced", "Event", "difficulty:Intermediate", "10K"],"google-site-verification": "","city": "Seattle","startTime": "07:00:00","assetId": ["39e8177e-dd0e-42a2-8a2b-24055e5325f3", "39e8177e-dd0e-42a2-8a2b-24055e5325f3"],"eventId": "E-000NGFS9","participationCriteria": "Kids,Family","description": "","longitude": "-122.3912","substitutionUrl": "E-000NGFS9","assetName": ["Fitness For Vitality 5k/10k 3-Race Series (9/19, 10/17, 11/21)", "Fitness For Vitality 5k/10k 3-Race Series (9/19, 10/17, 11/21)"],"zip": "98136","contactPhone": "n/a","eventState": "WA","sortDate": "2000-09-19","keywords": "Event","eventAddress": "1702 Alki Ave. SW","contactEmail": "n/a","dma": "Seattle - Tacoma","trackbackurl": "http://www.active.com/10k-race/seattle-wa/fitness-for-vitality-5k10k-3race-series-919-2010","seourl": "http://www.active.com/10k-race/seattle-wa/fitness-for-vitality-5k10k-3race-series-919-2010","country": "United States","onlineRegistrationAvailable": "true","category": "Activities","image1": "http://photos-images.active.com/file/3/1/optimized/9015e50d-3a2e-4ce4-9ddc-80b05b973b01.jpg","allText": "\u003cp style\u003dtext-align:left\u003e\u003cfont style\u003dfont-family:UniversEmbedded;font-size:12;color:#000000; LETTERSPACING\u003d0 KERNING\u003d0\u003eRace or walk on a flat, fast, and fun course! The entire event is along the Puget Sound. Do all 3 events in the series and watch your time and fitness improve! Oatmeal post-race. 10% proceeds sh","address": "1702 Alki Ave. SW","assetTypeId": "DFAA997A-D591-44CA-9FB7-BF4A4C8984F1","lastModifiedDate": "2010-08-19","eventZip": "98136","latitude": "47.53782","UpdateDateTime": "8/18/2010 10:16:08 AM","channel": "Running"}},
25
+ {"escapedUrl": "http://www.active.com/running/calabasas-ca/calabasas-classic-5k-10k-runs-2010","language": "en","title": "Calabasas Classic 2010 - 5k \u003cb\u003e10k\u003c/b\u003e Runs | Calabasas, California 91302 \u003cb\u003e...\u003c/b\u003e","url": "http://www.active.com/running/calabasas-ca/calabasas-classic-5k-10k-runs-2010","summary": "\u003cb\u003e...\u003c/b\u003e Calabasas Classic 2010 - 5k \u003cb\u003e10k\u003c/b\u003e Runs. Based on 0 reviews. \u003cb\u003e...\u003c/b\u003e Recent Reviews Calabasas\u003cbr\u003e Classic 2010 - 5k \u003cb\u003e10k\u003c/b\u003e Runs reviews. Get Directions. Start Address. End Address \u003cb\u003e...\u003c/b\u003e ","meta": {"startDate": "2010-11-14","eventDate": "2010-11-14T08:00:00-08:00","location": "Calabasas Park Centre","tag": ["event:10", "Green:10", "Running:10"],"state": "California","eventLongitude": "-118.6789","endDate": "2010-11-14","locationName": "Calabasas Park Centre","splitMediaType": ["Event", "1 mile", "10K", "5K"],"endTime": "8:00:00","mediaType": ["Event", "Event\\1 mile", "Event\\10K", "Event\\5K"],"google-site-verification": "","city": "Calabasas","startTime": "8:00:00","assetId": ["11B01475-8C65-4F9C-A4AC-2A3FA55FE8CD", "11b01475-8c65-4f9c-a4ac-2a3fa55fe8cd"],"eventId": "1810531","participationCriteria": "All","description": "","longitude": "-118.6789","onlineDonationAvailable": "false","substitutionUrl": "1810531","assetName": ["Calabasas Classic 2010 - 5k 10k Runs", "Calabasas Classic 2010 - 5k 10k Runs"],"zip": "91302","contactPhone": "818-715-0428","sortDate": "2000-11-14","eventState": "California","eventLatitude": "34.12794","keywords": "Event","eventAddress": "23975 Park Sorrento","contactEmail": "rot10kd@yahoo.com","onlineMembershipAvailable": "false","trackbackurl": "http://www.active.com/running/calabasas-ca/calabasas-classic-5k-10k-runs-2010","country": "United States","onlineRegistrationAvailable": "true","category": "Activities","image1": "http://www.active.com/images/events/hotrace.gif","assetTypeId": "EA4E860A-9DCD-4DAA-A7CA-4A77AD194F65","lastModifiedDate": "2010-03-04 07:30:26.307","eventZip": "91302","latitude": "34.12794","UpdateDateTime": "8/18/2010 10:16:26 AM","channel": ["Running", "Walking"]}}]}',
26
+ :status => ["302", "Found"])
27
+ results = Search.search( {:location => "San Diego, CA, US"} )
28
+ results.should have(3).items
29
+ end
30
+
31
+ end
32
+
16
33
  describe "Search URL Construction" do
17
34
 
18
35
  it "should construct a valid url with location" do
@@ -42,7 +59,7 @@ describe "Search URL Construction" do
42
59
  uri = URI.parse( Search.construct_url() )
43
60
  uri.query.include?("f=#{Facet.ACTIVITIES}").should be_true
44
61
  uri.query.include?("s=#{Sort.DATE_ASC}").should be_true
45
- uri.query.include?("r=10").should be_true
62
+ uri.query.include?("r=50").should be_true
46
63
  uri.query.include?("v=json").should be_true
47
64
  uri.query.include?("page=1").should be_true
48
65
  uri.query.include?("num=10").should be_true
@@ -141,8 +158,9 @@ describe Search do
141
158
  end
142
159
 
143
160
  describe "Call Live Data" do
161
+
144
162
  it "should find only events in the future" do
145
- results = Search.search( { :keywords => ["swim"]} )
163
+ results = Search.search( { :keywords => ["running"] } )
146
164
  results.should have(10).items
147
165
  results.each do |a|
148
166
  a.start_date.should satisfy { |d|
@@ -189,7 +207,6 @@ describe "Call Live Data" do
189
207
  results = Search.search( {:channels => [:yoga]} )
190
208
  results.should have(10).items
191
209
  end
192
-
193
210
 
194
211
  it "should find activities that have been recently added"
195
212
 
data/version.txt CHANGED
@@ -1 +1 @@
1
- 0.0.5
1
+ 0.0.6
metadata CHANGED
@@ -1,13 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: Active
3
3
  version: !ruby/object:Gem::Version
4
- hash: 21
5
4
  prerelease: false
6
5
  segments:
7
6
  - 0
8
7
  - 0
9
- - 5
10
- version: 0.0.5
8
+ - 6
9
+ version: 0.0.6
11
10
  platform: ruby
12
11
  authors:
13
12
  - Jonathan Spooner, Brian Levine
@@ -15,18 +14,16 @@ autorequire:
15
14
  bindir: bin
16
15
  cert_chain: []
17
16
 
18
- date: 2010-09-02 00:00:00 -07:00
17
+ date: 2010-09-10 00:00:00 -07:00
19
18
  default_executable:
20
19
  dependencies:
21
20
  - !ruby/object:Gem::Dependency
22
21
  name: bones
23
22
  prerelease: false
24
23
  requirement: &id001 !ruby/object:Gem::Requirement
25
- none: false
26
24
  requirements:
27
25
  - - ">="
28
26
  - !ruby/object:Gem::Version
29
- hash: 25
30
27
  segments:
31
28
  - 3
32
29
  - 4
@@ -44,6 +41,7 @@ extra_rdoc_files:
44
41
  - History.txt
45
42
  - README.txt
46
43
  - bin/Active
44
+ - lib/.DS_Store
47
45
  - version.txt
48
46
  files:
49
47
  - .bnsignore
@@ -52,6 +50,7 @@ files:
52
50
  - README.txt
53
51
  - Rakefile
54
52
  - bin/Active
53
+ - lib/.DS_Store
55
54
  - lib/Active.rb
56
55
  - lib/services/activity.rb
57
56
  - lib/services/search.rb
@@ -73,27 +72,23 @@ rdoc_options:
73
72
  require_paths:
74
73
  - lib
75
74
  required_ruby_version: !ruby/object:Gem::Requirement
76
- none: false
77
75
  requirements:
78
76
  - - ">="
79
77
  - !ruby/object:Gem::Version
80
- hash: 3
81
78
  segments:
82
79
  - 0
83
80
  version: "0"
84
81
  required_rubygems_version: !ruby/object:Gem::Requirement
85
- none: false
86
82
  requirements:
87
83
  - - ">="
88
84
  - !ruby/object:Gem::Version
89
- hash: 3
90
85
  segments:
91
86
  - 0
92
87
  version: "0"
93
88
  requirements: []
94
89
 
95
90
  rubyforge_project: Active
96
- rubygems_version: 1.3.7
91
+ rubygems_version: 1.3.6
97
92
  signing_key:
98
93
  specification_version: 3
99
94
  summary: Search api for Active Network