nike_v2 0.3.0 → 0.3.1

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/Gemfile CHANGED
@@ -1,2 +1,3 @@
1
1
  source :rubygems
2
- gemspec
2
+ gemspec
3
+ gem 'debugger'
data/README.md CHANGED
@@ -49,6 +49,27 @@ person.activities.total_fuel #fetches the metrics if they aren't already loaded
49
49
  => 394
50
50
  ```
51
51
 
52
+ As of version 0.3.0 you can cache calls to the Nike+ V2 api. We use the ApiCache (https://github.com/mloughran/api_cache) gem for this and all options in cache directive are passed to the api_cache config. Setting config.cache false disables the cache
53
+ ``` ruby
54
+ # config/initializers/nike_v2.rb
55
+ NikeV2.configure do |config|
56
+ config.cache = {
57
+ :cache => 3600
58
+ }
59
+ end
60
+ ```
61
+
62
+ Possible options:
63
+ ```
64
+ {
65
+ :cache => 600, # 10 minutes After this time fetch new data
66
+ :valid => 86400, # 1 day Maximum time to use old data
67
+ # :forever is a valid option
68
+ :period => 60, # 1 minute Maximum frequency to call API
69
+ :timeout => 5 # 5 seconds API response timeout
70
+ :fail => # Value returned instead of exception on failure
71
+ }
72
+ ```
52
73
  ## Making it Better
53
74
 
54
75
  * Fork the project.
@@ -42,15 +42,21 @@ module NikeV2
42
42
  end
43
43
 
44
44
  def fetch_more
45
- unless self.paging['next'].blank?
45
+ unless self.paging['next'].nil? || self.paging['next'] == ''
46
46
  fetch_and_build_activities
47
47
  end
48
+ self
48
49
  end
49
50
 
50
51
  def fetch_all
51
- until self.paging['next'].blank? do
52
+ until (self.paging['next'].nil? || self.paging['next'] == '') do
52
53
  fetch_and_build_activities
53
54
  end
55
+ self
56
+ end
57
+
58
+ def paging
59
+ @paging ||= ''
54
60
  end
55
61
 
56
62
  private
@@ -1,3 +1,3 @@
1
1
  module NikeV2
2
- VERSION = '0.3.0'
2
+ VERSION = '0.3.1'
3
3
  end
@@ -30,7 +30,7 @@ http_interactions:
30
30
  - keep-alive
31
31
  body:
32
32
  encoding: US-ASCII
33
- string: ! '{"data":[{"activityId":"91b501dc-4a38-44aa-b537-6095418713d8","calories":2475,"fuel":7500,"distance":19.665315,"steps":24975,"duration":"0:01:00.0000","activityType":"ALL_DAY","startTime":"2012-02-26T08:00:00Z","activityTimeZone":"America/Los_Angeles","status":"COMPLETE","deviceType":"FUELBAND","tags":[],"streams":[],"metrics":[]},{"activityId":"8554c3bb-f985-4700-a52d-6235475a10f0","calories":1848,"fuel":5555,"distance":14.6834352,"steps":18648,"duration":"0:01:00.0000","activityType":"ALL_DAY","startTime":"2012-02-25T08:00:00Z","activityTimeZone":"America/Los_Angeles","status":"COMPLETE","deviceType":"FUELBAND","tags":[],"streams":[]},{"activityId":"b7511567-9414-429a-9b7b-40ebc15af985","calories":396,"fuel":1200,"distance":3.1464504,"steps":3996,"duration":"0:01:00.0000","activityType":"ALL_DAY","startTime":"2012-02-24T08:00:00Z","activityTimeZone":"America/Los_Angeles","status":"COMPLETE","deviceType":"FUELBAND","tags":[],"streams":[]},{"activityId":"b87bb409-a618-47ee-a75e-1bb5f8daf9a6","calories":300,"fuel":900,"distance":2.3621999999999996,"steps":3000,"duration":"0:01:00.0000","activityType":"ALL_DAY","startTime":"2012-02-23T08:00:00Z","activityTimeZone":"America/Los_Angeles","status":"COMPLETE","deviceType":"FUELBAND","tags":[],"streams":[]},{"activityId":"6c6eb89c-fa42-49a6-8b04-2596297a7c3a","calories":200,"fuel":600,"distance":1.5748,"steps":2000,"duration":"0:01:00.0000","activityType":"ALL_DAY","startTime":"2012-02-22T08:00:00Z","activityTimeZone":"America/Los_Angeles","status":"COMPLETE","deviceType":"FUELBAND","tags":[],"streams":[]}],"paging":{"next":"/me/sport/activities?access_token=68d1b7f5ec3e6a1ad3b349cd73983b34&offset=6&count=5","previous":null}}'
33
+ string: ! '{"data":[{"activityId":"91b501dc-4a38-44aa-b537-6095418713d8","calories":2475,"fuel":7500,"distance":19.665315,"steps":24975,"duration":"0:01:00.0000","activityType":"ALL_DAY","startTime":"2012-02-26T08:00:00Z","activityTimeZone":"America/Los_Angeles","status":"COMPLETE","deviceType":"FUELBAND","tags":[],"streams":[],"metrics":[]},{"activityId":"8554c3bb-f985-4700-a52d-6235475a10f0","calories":1848,"fuel":5555,"distance":14.6834352,"steps":18648,"duration":"0:01:00.0000","activityType":"ALL_DAY","startTime":"2012-02-25T08:00:00Z","activityTimeZone":"America/Los_Angeles","status":"COMPLETE","deviceType":"FUELBAND","tags":[],"streams":[]},{"activityId":"b7511567-9414-429a-9b7b-40ebc15af985","calories":396,"fuel":1200,"distance":3.1464504,"steps":3996,"duration":"0:01:00.0000","activityType":"ALL_DAY","startTime":"2012-02-24T08:00:00Z","activityTimeZone":"America/Los_Angeles","status":"COMPLETE","deviceType":"FUELBAND","tags":[],"streams":[]},{"activityId":"b87bb409-a618-47ee-a75e-1bb5f8daf9a6","calories":300,"fuel":900,"distance":2.3621999999999996,"steps":3000,"duration":"0:01:00.0000","activityType":"ALL_DAY","startTime":"2012-02-23T08:00:00Z","activityTimeZone":"America/Los_Angeles","status":"COMPLETE","deviceType":"FUELBAND","tags":[],"streams":[]},{"activityId":"6c6eb89c-fa42-49a6-8b04-2596297a7c3a","calories":200,"fuel":600,"distance":1.5748,"steps":2000,"duration":"0:01:00.0000","activityType":"ALL_DAY","startTime":"2012-02-22T08:00:00Z","activityTimeZone":"America/Los_Angeles","status":"COMPLETE","deviceType":"FUELBAND","tags":[],"streams":[]}],"paging":{"next":"/me/sport/activities?access_token=foobar&offset=6&count=5","previous":null}}'
34
34
  http_version:
35
35
  recorded_at: Sun, 20 Jan 2013 04:21:05 GMT
36
36
  - request:
@@ -67,7 +67,7 @@ http_interactions:
67
67
  "calories": 581, "fuel": 1653, "distance": 2.0936965942382812, "steps": 2659,
68
68
  "duration": "7:02:00.000", "activityType": "ALL_DAY", "startTime": "2013-02-26T07:00:00Z",
69
69
  "activityTimeZone": "America/Phoenix", "status": "IN_PROGRESS", "deviceType":
70
- "FUELBAND", "tags": [], "metrics": [] } ], "paging": { "next": "/me/sport/activities?count=1&access_token=2159f27a88a8cc3b410e1529412b86f5&offset=2"
70
+ "FUELBAND", "tags": [], "metrics": [] } ], "paging": { "next": "/me/sport/activities?count=1&access_token=foobar&offset=2"
71
71
  } }'
72
72
  http_version:
73
73
  recorded_at: Wed, 27 Feb 2013 16:18:07 GMT
@@ -105,7 +105,7 @@ http_interactions:
105
105
  "calories": 581, "fuel": 1653, "distance": 2.0936965942382812, "steps": 2659,
106
106
  "duration": "7:02:00.000", "activityType": "ALL_DAY", "startTime": "2013-01-01T07:00:00Z",
107
107
  "activityTimeZone": "America/Phoenix", "status": "IN_PROGRESS", "deviceType":
108
- "FUELBAND", "tags": [], "metrics": [] } ], "paging": { "next": "/me/sport/activities?startDate=2013-01-01&access_token=2159f27a88a8cc3b410e1529412b86f5&offset=2"
108
+ "FUELBAND", "tags": [], "metrics": [] } ], "paging": { "next": "/me/sport/activities?startDate=2013-01-01&access_token=foobar&offset=2"
109
109
  } }'
110
110
  http_version:
111
111
  recorded_at: Wed, 27 Feb 2013 16:18:07 GMT
@@ -259,4 +259,80 @@ http_interactions:
259
259
  "4", "25", "22", "19", "11", "2", "23" ] } ] }'
260
260
  http_version:
261
261
  recorded_at: Sun, 20 Jan 2013 04:21:05 GMT
262
+ - request:
263
+ method: get
264
+ uri: https://api.nike.com/me/sport/activities?access_token=foobar&count=1&offset=2
265
+ body:
266
+ encoding: US-ASCII
267
+ string: ''
268
+ headers:
269
+ Accept:
270
+ - application/json
271
+ Appid:
272
+ - nike
273
+ response:
274
+ status:
275
+ code: 200
276
+ message: OK
277
+ headers:
278
+ Content-Type:
279
+ - application/json;charset=UTF-8
280
+ Date:
281
+ - Sun, 20 Jan 2013 04:21:04 GMT
282
+ Server:
283
+ - Apache
284
+ X-Swooshlet:
285
+ - app-msp-api-0 prd sin-82-app-msp-api-0
286
+ Content-Length:
287
+ - '340'
288
+ Connection:
289
+ - keep-alive
290
+ body:
291
+ encoding: US-ASCII
292
+ string: ! '{ "data": [ { "activityId": "c3337642-72db-41f7-b4a2-4da4600dfc91",
293
+ "calories": 581, "fuel": 1653, "distance": 2.0936965942382812, "steps": 2659,
294
+ "duration": "7:02:00.000", "activityType": "ALL_DAY", "startTime": "2013-02-26T07:00:00Z",
295
+ "activityTimeZone": "America/Phoenix", "status": "IN_PROGRESS", "deviceType":
296
+ "FUELBAND", "tags": [], "metrics": [] } ], "paging": { "next": "/me/sport/activities?count=1&access_token=foobar&offset=3"
297
+ } }'
298
+ http_version:
299
+ recorded_at: Thu, 14 Mar 2013 00:45:14 GMT
300
+ - request:
301
+ method: get
302
+ uri: https://api.nike.com/me/sport/activities?access_token=foobar&count=1&offset=3
303
+ body:
304
+ encoding: US-ASCII
305
+ string: ''
306
+ headers:
307
+ Accept:
308
+ - application/json
309
+ Appid:
310
+ - nike
311
+ response:
312
+ status:
313
+ code: 200
314
+ message: OK
315
+ headers:
316
+ Content-Type:
317
+ - application/json;charset=UTF-8
318
+ Date:
319
+ - Sun, 20 Jan 2013 04:21:04 GMT
320
+ Server:
321
+ - Apache
322
+ X-Swooshlet:
323
+ - app-msp-api-0 prd sin-82-app-msp-api-0
324
+ Content-Length:
325
+ - '340'
326
+ Connection:
327
+ - keep-alive
328
+ body:
329
+ encoding: US-ASCII
330
+ string: ! '{ "data": [ { "activityId": "c3337642-72db-41f7-b4a2-4da4600dfc92",
331
+ "calories": 581, "fuel": 1653, "distance": 2.0936965942382812, "steps": 2659,
332
+ "duration": "7:02:00.000", "activityType": "ALL_DAY", "startTime": "2013-02-26T07:00:00Z",
333
+ "activityTimeZone": "America/Phoenix", "status": "IN_PROGRESS", "deviceType":
334
+ "FUELBAND", "tags": [], "metrics": [] } ], "paging": {
335
+ } }'
336
+ http_version:
337
+ recorded_at: Thu, 14 Mar 2013 00:45:14 GMT
262
338
  recorded_with: VCR 2.4.0
@@ -19,6 +19,12 @@ describe NikeV2::Activities do
19
19
  person.activities(:count => 1).length.should == 1
20
20
  end
21
21
 
22
+ it 'should fetch_all and return an array of Nike::Activity' do
23
+ (a = person.activities(:count => 1).fetch_all).should be_kind_of(NikeV2::Activities)
24
+ a.first.should be_kind_of(NikeV2::Activity)
25
+ a.length.should == 3
26
+ end
27
+
22
28
  it 'should accept the start_date parameter, camelcase it and return an array of Nike::Activity' do
23
29
  pending
24
30
  # person.activities(:count => 1).should be_kind_of(NikeV2::Activities)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nike_v2
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: