fitgem_oauth2 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.
- checksums.yaml +4 -4
- data/fitgem_oauth2.gemspec +10 -3
- data/lib/fitgem_oauth2/activity.rb +86 -0
- data/lib/fitgem_oauth2/body_measurements.rb +69 -0
- data/lib/fitgem_oauth2/client.rb +3 -3
- data/lib/fitgem_oauth2/version.rb +3 -0
- metadata +33 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fd516d574175e9fe9b90dac5242b1222b030de67
|
4
|
+
data.tar.gz: 789803a5149cc302e52db432445a805a45ab028e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9e73b564bc27fcbb69d86632f7c8a3686a92f661048e75381f36322ea020e33425f80c666b88e7b92ed51db3b57b122ecbaaf0eebde0f02db443e517a6940894
|
7
|
+
data.tar.gz: 11cf3e2e0de03d356efba62cdcfbd0c80c38bb0386eada5cddf98635ff375fcefa654b354ddc59b6ada5136c3ef02e37dc6a059594185cd440d5351455be21fe
|
data/fitgem_oauth2.gemspec
CHANGED
@@ -1,8 +1,13 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
$:.unshift File.expand_path('../lib', __FILE__)
|
4
|
+
require 'fitgem_oauth2/version'
|
5
|
+
|
1
6
|
Gem::Specification.new do |s|
|
2
7
|
s.name = 'fitgem_oauth2'
|
3
|
-
s.version =
|
4
|
-
s.date =
|
5
|
-
s.summary = "
|
8
|
+
s.version = FitgemOauth2::VERSION
|
9
|
+
s.date = Date.today.to_s
|
10
|
+
s.summary = "Fitbit API client library"
|
6
11
|
s.description = "This gem allows requesting data from Fitbit API using OAuth2"
|
7
12
|
s.authors = ["Ankit Gupta"]
|
8
13
|
s.email = 'ankit.gupta2801@gmail.com'
|
@@ -11,4 +16,6 @@ Gem::Specification.new do |s|
|
|
11
16
|
s.license = 'MIT'
|
12
17
|
|
13
18
|
s.add_runtime_dependency 'faraday', '~> 0.9'
|
19
|
+
s.add_development_dependency "rspec", '~> 3.4'
|
20
|
+
s.add_development_dependency "dotenv", '~> 2.1'
|
14
21
|
end
|
@@ -1,14 +1,46 @@
|
|
1
1
|
module FitgemOauth2
|
2
2
|
class Client
|
3
3
|
|
4
|
+
# ======================================
|
5
|
+
# Activities Retrieval Methods
|
6
|
+
# ======================================
|
7
|
+
|
8
|
+
allowed_activity_paths = %w("calories" "caloriesBMR" "steps" "distance" "floors" "elevation" "minutesSedentary" "minutesLightlyActive" "minutesFairlyActive" "minutesVeryActive" "activityCaloriestracker/calories" "tracker/steps" "tracker/distance" "tracker/floors" "tracker/elevation" "tracker/minutesSedentary" "tracker/minutesLightlyActive" "tracker/minutesFairlyActive" "tracker/minutesVeryActive" "tracker/activityCalories")
|
9
|
+
|
10
|
+
allowed_activity_periods = %w("1d" "7d" "30d" "1w" "1m" "3m" "6m" "1y" "max")
|
11
|
+
|
4
12
|
def activities_on_date(date)
|
5
13
|
get_call("1/user/#{user_id}/activities/date/#{format_date(date)}.json")
|
6
14
|
end
|
7
15
|
|
16
|
+
def activities_in_period(resource_path, date, period)
|
17
|
+
if activity_resource_path?(resource_path)
|
18
|
+
if activity_period?(period)
|
19
|
+
get_activities(resource_path, resource_path, period)
|
20
|
+
else
|
21
|
+
raise FitgemOauth2::InvalidArgumentError, "period should be one of #{allowed_activity_periods}"
|
22
|
+
end
|
23
|
+
else
|
24
|
+
raise FitgemOauth2::InvalidArgumentError, "resource_path should be one of #{allowed_activity_paths}"
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def activities_in_range(resource_path, base_date, end_date)
|
29
|
+
if activity_resource_path?(resource_path)
|
30
|
+
get_activities(resource_path, format_date(base_date), format_dat(end_date))
|
31
|
+
else
|
32
|
+
raise FitgemOauth2::InvalidArgumentError, "resource_path should be one of #{allowed_activity_paths}"
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
# <b>DEPRECATED</b> Please use <b>activities_on_date</b> instead
|
8
37
|
def calories_on_date(date)
|
9
38
|
get_call("1/user/#{user_id}/activities/calories/date/#{format_date(date)}/1d.json")
|
10
39
|
end
|
11
40
|
|
41
|
+
# ======================================
|
42
|
+
# Intraday Series
|
43
|
+
# ======================================
|
12
44
|
|
13
45
|
def intraday_time_series(opts)
|
14
46
|
unless opts[:resource] && [:calories, :steps, :distance, :floors, :elevation].include?(opts[:resource])
|
@@ -38,5 +70,59 @@ module FitgemOauth2
|
|
38
70
|
end
|
39
71
|
get_call(resource_path)
|
40
72
|
end
|
73
|
+
|
74
|
+
# ======================================
|
75
|
+
# Activity Types
|
76
|
+
# ======================================
|
77
|
+
def activities
|
78
|
+
get_call("1/activities.json")
|
79
|
+
end
|
80
|
+
|
81
|
+
def activity(id)
|
82
|
+
get_call("1/activities/#{id}.json")
|
83
|
+
end
|
84
|
+
|
85
|
+
def frequent_activities
|
86
|
+
get_call("1/user/#{@user_id}/activities/frequent.json")
|
87
|
+
end
|
88
|
+
|
89
|
+
def recent_activities
|
90
|
+
get_call("1/user/#{@user_id}/activities/recent.json")
|
91
|
+
end
|
92
|
+
|
93
|
+
def favorite_activities
|
94
|
+
get_call("1/user/#{@user_id}/activities/favorite.json")
|
95
|
+
end
|
96
|
+
|
97
|
+
# ======================================
|
98
|
+
# Activity Goals
|
99
|
+
# ======================================
|
100
|
+
|
101
|
+
def goals(period)
|
102
|
+
unless period && [:daily, :weekly].include?(period)
|
103
|
+
raise FitgemOauth2::InvalidArgumentError, "Goal period should either be 'daily' or 'weekly'"
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
def lifetime_stats
|
108
|
+
get_call("1/user/#{@user_id}/activities.json")
|
109
|
+
end
|
110
|
+
|
111
|
+
# ======================================
|
112
|
+
# Private Methods
|
113
|
+
# ======================================
|
114
|
+
|
115
|
+
private
|
116
|
+
def get_activities(resource_path, first, second)
|
117
|
+
get_call("1/user/#{user_id}/#{resource_path}/date/#{first}/#{second}.json")
|
118
|
+
end
|
119
|
+
|
120
|
+
def activity_resource_path?(resource_path)
|
121
|
+
return resource_path && allowed_activity_paths.include?(resource_path)
|
122
|
+
end
|
123
|
+
|
124
|
+
def activity_period?(period)
|
125
|
+
return period && allowed_activity_periods.include?(period)
|
126
|
+
end
|
41
127
|
end
|
42
128
|
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
module FitgemOauth2
|
2
|
+
class Client
|
3
|
+
fat_periods = %w("1d" "7d" "1w" "1m")
|
4
|
+
weight_periods = %("1d" "7d" "30d" "1w" "1m")
|
5
|
+
body_goals = %("fat" "weight")
|
6
|
+
# ======================================
|
7
|
+
# Boday Fat API
|
8
|
+
# ======================================
|
9
|
+
|
10
|
+
def fat_on_date(date)
|
11
|
+
get_call("/1/user/#{@user_id}/body/log/fat/date/#{format_date(date)}.json")
|
12
|
+
end
|
13
|
+
|
14
|
+
def fat_for_period(base_date, period)
|
15
|
+
if fat_period?(period)
|
16
|
+
get_call("1/user/#{@user_id}/body/log/fat/date/#{format_date(start_date)}/#{period}.json")
|
17
|
+
else
|
18
|
+
raise FitgemOauth2::InvalidArgumentError, "period should be one of #{fat_periods}"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def fat_for_range(start_date, end_date)
|
23
|
+
get_call("1/user/#{@user_id}/body/log/fat/date/#{format_date(start_date)}/#{format_date(end_date)}.json")
|
24
|
+
end
|
25
|
+
|
26
|
+
# ======================================
|
27
|
+
# Body Goals API
|
28
|
+
# ======================================
|
29
|
+
|
30
|
+
def body_goal(type)
|
31
|
+
if type && body_goals.include?(type)
|
32
|
+
get_call("1/user/#{@user_id}/body/log/#{type}/goal.json")
|
33
|
+
else
|
34
|
+
raise FitgemOauth2::InvalidArgumentError, "goal type should be one of #{body_goals}"
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
# ======================================
|
39
|
+
# Body Weight API
|
40
|
+
# ======================================
|
41
|
+
|
42
|
+
def weight_on_date(date)
|
43
|
+
get_call("/1/user/#{@user_id}/body/log/weight/date/#{format_date(date)}.json")
|
44
|
+
end
|
45
|
+
|
46
|
+
def weight_for_period(base_date, period)
|
47
|
+
if weight_period?(period)
|
48
|
+
get_call("1/user/#{@user_id}/body/log/weight/date/#{format_date(start_date)}/#{period}.json")
|
49
|
+
else
|
50
|
+
raise FitgemOauth2::InvalidArgumentError, "period should be one of #{weight_periods}"
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def weight_for_range(start_date, end_date)
|
55
|
+
get_call("1/user/#{@user_id}/body/log/weight/date/#{format_date(start_date)}/#{format_date(end_date)}.json")
|
56
|
+
end
|
57
|
+
|
58
|
+
|
59
|
+
private
|
60
|
+
def fat_period?(period)
|
61
|
+
return period && fat_periods.include?(period)
|
62
|
+
end
|
63
|
+
|
64
|
+
def weight_period?(period)
|
65
|
+
return period && weight_periods.include?(period)
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
69
|
+
end
|
data/lib/fitgem_oauth2/client.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
require 'fitgem_oauth2/activity.rb'
|
2
|
+
require 'fitgem_oauth2/body_measurements.rb'
|
2
3
|
require 'fitgem_oauth2/errors.rb'
|
3
4
|
require 'fitgem_oauth2/sleep.rb'
|
4
5
|
require 'fitgem_oauth2/steps.rb'
|
5
6
|
require 'fitgem_oauth2/users.rb'
|
6
7
|
require 'fitgem_oauth2/utils.rb'
|
7
|
-
|
8
|
-
|
8
|
+
require 'fitgem_oauth2/version.rb'
|
9
9
|
|
10
10
|
require 'base64'
|
11
11
|
require 'faraday'
|
@@ -39,7 +39,7 @@ module FitgemOauth2
|
|
39
39
|
|
40
40
|
@user_id = opts[:user_id]
|
41
41
|
if @user_id.nil?
|
42
|
-
|
42
|
+
@user_id = "-"
|
43
43
|
end
|
44
44
|
|
45
45
|
@connection = Faraday.new("https://api.fitbit.com")
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
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.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ankit Gupta
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-03-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -24,6 +24,34 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0.9'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rspec
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '3.4'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '3.4'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: dotenv
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '2.1'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '2.1'
|
27
55
|
description: This gem allows requesting data from Fitbit API using OAuth2
|
28
56
|
email: ankit.gupta2801@gmail.com
|
29
57
|
executables: []
|
@@ -33,12 +61,14 @@ files:
|
|
33
61
|
- fitgem_oauth2.gemspec
|
34
62
|
- lib/fitgem_oauth2.rb
|
35
63
|
- lib/fitgem_oauth2/activity.rb
|
64
|
+
- lib/fitgem_oauth2/body_measurements.rb
|
36
65
|
- lib/fitgem_oauth2/client.rb
|
37
66
|
- lib/fitgem_oauth2/errors.rb
|
38
67
|
- lib/fitgem_oauth2/sleep.rb
|
39
68
|
- lib/fitgem_oauth2/steps.rb
|
40
69
|
- lib/fitgem_oauth2/users.rb
|
41
70
|
- lib/fitgem_oauth2/utils.rb
|
71
|
+
- lib/fitgem_oauth2/version.rb
|
42
72
|
homepage: http://rubygems.org/gems/fitgem_oauth2
|
43
73
|
licenses:
|
44
74
|
- MIT
|
@@ -62,6 +92,5 @@ rubyforge_project:
|
|
62
92
|
rubygems_version: 2.4.6
|
63
93
|
signing_key:
|
64
94
|
specification_version: 4
|
65
|
-
summary:
|
95
|
+
summary: Fitbit API client library
|
66
96
|
test_files: []
|
67
|
-
has_rdoc:
|