fitgem_oauth2 0.0.1 → 0.0.2
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.
- checksums.yaml +4 -4
- data/fitgem_oauth2.gemspec +1 -1
- data/lib/fitgem_oauth2/activity.rb +9 -0
- data/lib/fitgem_oauth2/client.rb +27 -18
- data/lib/fitgem_oauth2/errors.rb +20 -0
- data/lib/fitgem_oauth2/sleep.rb +11 -0
- data/lib/fitgem_oauth2/steps.rb +11 -0
- data/lib/fitgem_oauth2/utils.rb +38 -0
- metadata +7 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 54ad6d585fffb7134b719ed81b213171337662f0
|
4
|
+
data.tar.gz: 17e07a83a551e7a93ec04b96750f9f4724c88522
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cae5964dedd83d56054f358b28fe7975bb6061a23ee62c25a2f4e31a140fbcc0089a935f0fa951237c7268c6b275ec7cdaefc488da3ced3acb667ffecdc92af8
|
7
|
+
data.tar.gz: 25b91d93e6a26b731224a30db09c70a32ce84be1b1e4be2fabeedd04933710a5e848ef71957cb5a0bf9f88d245c8f50caa417544cc52470545555444d8be1067
|
data/fitgem_oauth2.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'fitgem_oauth2'
|
3
|
-
s.version = '0.0.
|
3
|
+
s.version = '0.0.2'
|
4
4
|
s.date = '2016-01-18'
|
5
5
|
s.summary = "This gem allows requesting data from Fitbit API using OAuth2"
|
6
6
|
s.description = "This gem allows requesting data from Fitbit API using OAuth2"
|
data/lib/fitgem_oauth2/client.rb
CHANGED
@@ -1,12 +1,22 @@
|
|
1
|
+
require 'fitgem_oauth2/activity.rb'
|
2
|
+
require 'fitgem_oauth2/sleep.rb'
|
3
|
+
require 'fitgem_oauth2/steps.rb'
|
4
|
+
|
5
|
+
require 'fitgem_oauth2/utils.rb'
|
6
|
+
|
1
7
|
require 'base64'
|
2
8
|
require 'faraday'
|
3
9
|
|
4
10
|
module FitgemOauth2
|
5
11
|
class Client
|
6
12
|
|
7
|
-
|
13
|
+
attr_reader :token
|
14
|
+
|
15
|
+
attr_reader :user_id
|
8
16
|
|
9
|
-
|
17
|
+
attr_reader :client_id
|
18
|
+
|
19
|
+
attr_reader :client_secret
|
10
20
|
|
11
21
|
def initialize(opts)
|
12
22
|
@client_id = opts[:client_id]
|
@@ -32,14 +42,25 @@ module FitgemOauth2
|
|
32
42
|
@connection = Faraday.new("https://api.fitbit.com")
|
33
43
|
end
|
34
44
|
|
35
|
-
|
36
|
-
|
37
|
-
connection.get "1/user/#{user_id}/activities/date/#{format_date(date)}.json" do |request|
|
45
|
+
def get_call(url)
|
46
|
+
response = connection.get(url) do |request|
|
38
47
|
request.headers['Authorization'] = "Bearer #{token}"
|
39
48
|
request.headers['Content-Type'] = "application/x-www-form-urlencoded"
|
40
49
|
end
|
50
|
+
|
51
|
+
headers_to_keep = ["fitbit-rate-limit-limit","fitbit-rate-limit-remaining","fitbit-rate-limit-reset"]
|
52
|
+
|
53
|
+
case response.status
|
54
|
+
when 200; return JSON.parse(response.body).merge!(response.headers.slice(*headers_to_keep))
|
55
|
+
when 400; raise FitgemOauth2::BadRequestError
|
56
|
+
when 401; raise FitgemOauth2::UnauthorizedError
|
57
|
+
when 403; raise FitgemOauth2::ForbiddenError
|
58
|
+
when 404; raise FitgemOauth2::NotFoundError
|
59
|
+
when 500..599; raise FitgemOauth2::ServerError
|
60
|
+
end
|
41
61
|
end
|
42
62
|
|
63
|
+
|
43
64
|
def refresh_access_token(refresh_token)
|
44
65
|
response = connection.post('/oauth2/token') do |request|
|
45
66
|
encoded = Base64.strict_encode64("#{@client_id}:#{@client_secret}")
|
@@ -52,19 +73,7 @@ module FitgemOauth2
|
|
52
73
|
end
|
53
74
|
|
54
75
|
private
|
55
|
-
|
56
|
-
attr_accessor :connection
|
57
|
-
|
58
|
-
def format_date(date)
|
59
|
-
date
|
60
|
-
end
|
61
|
-
|
62
|
-
def get(url)
|
63
|
-
|
64
|
-
end
|
65
|
-
|
66
|
-
def raw_get(url)
|
67
|
-
end
|
76
|
+
attr_reader :connection
|
68
77
|
|
69
78
|
end
|
70
79
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module FitgemOauth2
|
2
|
+
class InvalidDateArgument < ArgumentError
|
3
|
+
end
|
4
|
+
|
5
|
+
# HTTP errors
|
6
|
+
class BadRequestError < StandardError
|
7
|
+
end
|
8
|
+
|
9
|
+
class UnauthorizedError < StandardError
|
10
|
+
end
|
11
|
+
|
12
|
+
class ForbiddenError < StandardError
|
13
|
+
end
|
14
|
+
|
15
|
+
class NotFoundError < StandardError
|
16
|
+
end
|
17
|
+
|
18
|
+
class ServerError < StandardError
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module FitgemOauth2
|
2
|
+
class Client
|
3
|
+
# This function was copied from the Fitgem project (https://github.com/whazzmaster/fitgem/blob/master/lib/fitgem/helpers.rb)
|
4
|
+
# Format any of a variety of date types into the formatted string
|
5
|
+
# required when using the fitbit API.
|
6
|
+
#
|
7
|
+
# The date parameter can take several different kind of objects: a
|
8
|
+
# DateTime object, a Date object, a Time object or a String object. Furthermore,
|
9
|
+
# the string object may be either the date in a preformatted string
|
10
|
+
# ("yyyy-MM-dd"), or it may be the string values "today" or
|
11
|
+
# "tomorrow".
|
12
|
+
#
|
13
|
+
# @param [DateTime, Date, Time, String] date The object to format into a
|
14
|
+
# date string
|
15
|
+
# @raise [Fitgem::InvalidDateArgument] Raised when the object is
|
16
|
+
# not a DateTime, Date, Time or a valid (yyyy-MM-dd) String object
|
17
|
+
# @return [String] Date in "yyyy-MM-dd" string format
|
18
|
+
def format_date(date)
|
19
|
+
if date.is_a? String
|
20
|
+
case date
|
21
|
+
when 'today'
|
22
|
+
return Date.today.strftime("%Y-%m-%d")
|
23
|
+
when 'yesterday'
|
24
|
+
return (Date.today-1).strftime("%Y-%m-%d")
|
25
|
+
else
|
26
|
+
unless date =~ /\d{4}\-\d{2}\-\d{2}/
|
27
|
+
raise FitgemOauth2::InvalidDateArgument, "Invalid date (#{date}), must be in yyyy-MM-dd format"
|
28
|
+
end
|
29
|
+
return date
|
30
|
+
end
|
31
|
+
elsif Date === date || Time === date || DateTime === date
|
32
|
+
return date.strftime("%Y-%m-%d")
|
33
|
+
else
|
34
|
+
raise FitgemOauth2::InvalidDateArgument, "Date used must be a date/time object or a string in the format YYYY-MM-DD; supplied argument is a #{date.class}"
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fitgem_oauth2
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ankit Gupta
|
@@ -32,7 +32,12 @@ extra_rdoc_files: []
|
|
32
32
|
files:
|
33
33
|
- fitgem_oauth2.gemspec
|
34
34
|
- lib/fitgem_oauth2.rb
|
35
|
+
- lib/fitgem_oauth2/activity.rb
|
35
36
|
- lib/fitgem_oauth2/client.rb
|
37
|
+
- lib/fitgem_oauth2/errors.rb
|
38
|
+
- lib/fitgem_oauth2/sleep.rb
|
39
|
+
- lib/fitgem_oauth2/steps.rb
|
40
|
+
- lib/fitgem_oauth2/utils.rb
|
36
41
|
homepage: http://rubygems.org/gems/fitgem_oauth2
|
37
42
|
licenses:
|
38
43
|
- MIT
|
@@ -58,3 +63,4 @@ signing_key:
|
|
58
63
|
specification_version: 4
|
59
64
|
summary: This gem allows requesting data from Fitbit API using OAuth2
|
60
65
|
test_files: []
|
66
|
+
has_rdoc:
|