fitbit_api 0.11.0 → 0.12.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '0199cc0ea15375afa47467c885ccf179c73955116fb9edf4a8f21bdfc4087867'
4
- data.tar.gz: a394ad4302abe48783bc0bec9217a4132e5939cd067fc922d4e571cac7ea527e
3
+ metadata.gz: d49f9a31d98fa1fddb1ccffd11d15cbd197ccf9847e0170f2db23410b5cd6eff
4
+ data.tar.gz: b7d731600647e16ee1dad3e84371ae83fc2d38b6dd53d3ba88a796191d85e832
5
5
  SHA512:
6
- metadata.gz: 112c2fa3669262d9e86b09a356147ba6665f768b16a7fc096beb1a36de39350c2c79c5258b850fbe0027bab8a78bf5de2c237d79311406f3c537fd0d82a8f83d
7
- data.tar.gz: fc9c32427092a0f4f3ccafe15c2a53c486bf7d0e67810bb957d384bb1a83bcc899615bbcf63d9ad881fa30ddbdc1bd7b1cc555ac4246c5c9c5f89bb074cfe9d6
6
+ metadata.gz: 56ebf6e543e9c1c3bc7b7aa78018151e40fb3929447af8778adb0c7f65628e9d1ef9e17b2b2f11bd7c07c5f79c81018f8a27b25fa87a4f53a5e6ad20f79c9b54
7
+ data.tar.gz: 1b5c912d4e7d80e9c0b01f0e9c5346e0d8c7c506943d03df0c6ebd5fd33b5f1239c73b78b97b4f1036fc29def97037faa549fd41f25b93883113ffaeef4ffe4d
@@ -0,0 +1,29 @@
1
+ name: Test
2
+
3
+ on:
4
+ - push
5
+ - pull_request
6
+
7
+ permissions:
8
+ contents: read
9
+
10
+ jobs:
11
+ test:
12
+ runs-on: ubuntu-latest
13
+ strategy:
14
+ matrix:
15
+ ruby-version:
16
+ - 2.6
17
+ - 2.7
18
+ - 3.0
19
+ - 3.1
20
+
21
+ steps:
22
+ - uses: actions/checkout@v3
23
+ - name: Set up Ruby
24
+ uses: ruby/setup-ruby@v1
25
+ with:
26
+ ruby-version: ${{ matrix.ruby-version }}
27
+ bundler-cache: true
28
+ - name: Run tests
29
+ run: bundle exec rake
data/CHANGELOG.md CHANGED
@@ -1,3 +1,18 @@
1
+ 0.12.0
2
+ ------
3
+ - Expand endpont support for foods (searching foods, creating custom foods, updating/deleting logs).
4
+ - Expand endpoint support for water logging (create, update, delete water logs).
5
+ - Expand endpoint support for sleep (list sleep logs, create/delete sleep logs).
6
+ - Expand endpoint support for goals (food, sleep, water goals).
7
+ - Add endpoint support for meals.
8
+ - Allow `get`, `post`, and `delete` methods to accept blocks.
9
+ - Switch to Github Actions for CI.
10
+ - Rename a few methods for better accuracy/clarity:
11
+ - daily_goals -> daily_activity_goals
12
+ - weekly_goals -> weekly_activity_goals
13
+ - create_or_update_daily_goals -> update_daily_activity_goals
14
+ - create_or_update_weekly_goals -> update_weekly_activity_goals
15
+
1
16
  0.11.0
2
17
  ------
3
18
  - Add support for subscriptions endpoints.
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # FitbitAPI
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/fitbit_api.svg)](https://badge.fury.io/rb/fitbit_api)
4
- [![Build Status](https://travis-ci.org/zokioki/fitbit_api.svg?branch=master)](https://travis-ci.org/zokioki/fitbit_api)
4
+ [![Test Workflow](https://github.com/zokioki/fitbit_api/actions/workflows/test.yml/badge.svg)](https://github.com/zokioki/fitbit_api/actions/workflows/test.yml)
5
5
 
6
6
  FitbitAPI provides a Ruby interface to the [Fitbit Web API](https://dev.fitbit.com/reference/web-api).
7
7
 
data/fitbit_api.gemspec CHANGED
@@ -21,8 +21,8 @@ Gem::Specification.new do |spec|
21
21
 
22
22
  spec.add_runtime_dependency 'oauth2', '~> 1.0'
23
23
 
24
- spec.add_development_dependency 'byebug'
24
+ spec.add_development_dependency 'byebug', '~> 11.0'
25
25
  spec.add_development_dependency 'bundler', '~> 2.3'
26
- spec.add_development_dependency 'rake', '>= 12.3.3'
27
- spec.add_development_dependency 'rspec'
26
+ spec.add_development_dependency 'rake', '~> 13.0'
27
+ spec.add_development_dependency 'rspec', '~> 3.11'
28
28
  end
@@ -133,9 +133,9 @@ module FitbitAPI
133
133
  end
134
134
 
135
135
  if (start_time && end_time)
136
- get("user/-/activities/#{resource}/date/#{format_date(date)}/1d/#{detail_level}/time/#{format_time(start_time)}/#{format_time(end_time)}.json")
136
+ get("user/#{user_id}/activities/#{resource}/date/#{format_date(date)}/1d/#{detail_level}/time/#{format_time(start_time)}/#{format_time(end_time)}.json")
137
137
  else
138
- get("user/-/activities/#{resource}/date/#{format_date(date)}/1d/#{detail_level}.json")
138
+ get("user/#{user_id}/activities/#{resource}/date/#{format_date(date)}/1d/#{detail_level}.json")
139
139
  end
140
140
  end
141
141
 
@@ -3,11 +3,11 @@ module FitbitAPI
3
3
  BODY_RESOURCES = %w(bmi fat weight)
4
4
 
5
5
  def weight_logs(date=Date.today)
6
- get("user/-/body/log/weight/date/#{format_date(date)}.json")
6
+ get("user/#{user_id}/body/log/weight/date/#{format_date(date)}.json")
7
7
  end
8
8
 
9
9
  def body_fat_logs(date=Date.today)
10
- get("user/-/body/log/fat/date/#{format_date(date)}.json")
10
+ get("user/#{user_id}/body/log/fat/date/#{format_date(date)}.json")
11
11
  end
12
12
 
13
13
  def body_time_series(resource, opts={})
@@ -7,6 +7,7 @@ require 'fitbit_api/body'
7
7
  require 'fitbit_api/devices'
8
8
  require 'fitbit_api/food'
9
9
  require 'fitbit_api/friends'
10
+ require 'fitbit_api/meals'
10
11
  require 'fitbit_api/sleep'
11
12
  require 'fitbit_api/subscriptions'
12
13
  require 'fitbit_api/user'
@@ -47,16 +48,16 @@ module FitbitAPI
47
48
  @token
48
49
  end
49
50
 
50
- def get(path, params={}, opts={})
51
- request(:get, path, opts.merge(params: params))
51
+ def get(path, params={}, opts={}, &block)
52
+ request(:get, path, opts.merge(params: params), &block)
52
53
  end
53
54
 
54
- def post(path, body={}, opts={})
55
- request(:post, path, opts.merge(body: body))
55
+ def post(path, body={}, opts={}, &block)
56
+ request(:post, path, opts.merge(body: body), &block)
56
57
  end
57
58
 
58
- def delete(path, params={}, opts={})
59
- request(:delete, path, opts.merge(params: params))
59
+ def delete(path, params={}, opts={}, &block)
60
+ request(:delete, path, opts.merge(params: params), &block)
60
61
  end
61
62
 
62
63
  private
@@ -115,7 +116,7 @@ module FitbitAPI
115
116
  refresh_token! if @token.token.empty?
116
117
  end
117
118
 
118
- def request(verb, path, opts={})
119
+ def request(verb, path, opts={}, &block)
119
120
  request_path = "#{@api_version}/#{path}"
120
121
  request_headers = default_request_headers.merge(opts[:headers] || {})
121
122
  request_options = opts.merge(headers: request_headers)
@@ -125,7 +126,7 @@ module FitbitAPI
125
126
 
126
127
  refresh_token! if auto_refresh_token && token.expired?
127
128
 
128
- response = token.public_send(verb, request_path, request_options).response
129
+ response = token.public_send(verb, request_path, request_options, &block).response
129
130
  response_body = MultiJson.load(response.body) unless response.status == 204
130
131
 
131
132
  process_keys!(response_body)
@@ -6,6 +6,14 @@ module FitbitAPI
6
6
  get("user/#{user_id}/foods/log/date/#{format_date(date)}.json")
7
7
  end
8
8
 
9
+ # Retrieves a list of public foods from the Fitbit foods database and private foods the user created
10
+ #
11
+ # @params query [String] The search query
12
+
13
+ def search_foods(params)
14
+ get("foods/search.json", params)
15
+ end
16
+
9
17
  def recent_foods
10
18
  get("user/#{user_id}/foods/log/recent.json")
11
19
  end
@@ -18,8 +26,59 @@ module FitbitAPI
18
26
  get("user/#{user_id}/foods/log/favorite.json")
19
27
  end
20
28
 
21
- def food_goals
22
- get("user/#{user_id}/foods/log/goal.json")
29
+ # Creates a new private food for a user
30
+ #
31
+ # @params body [Hash] The POST request body
32
+
33
+ def create_food(body)
34
+ post("user/#{user_id}/foods.json", body)
35
+ end
36
+
37
+ # Deletes a custom food created by the user
38
+ #
39
+ # @params food_id [Integer] The ID of the food to be deleted
40
+
41
+ def delete_food(food_id)
42
+ delete("user/#{user_id}/foods/#{food_id}.json")
43
+ end
44
+
45
+ # Creates a food log entry
46
+ #
47
+ # @params body [Hash] The POST request body
48
+
49
+ def create_food_log(body)
50
+ post("user/#{user_id}/foods/log.json", body)
51
+ end
52
+
53
+ # Updates the quantity or calories consumed for a user's food log entry with the given Food Log ID
54
+ #
55
+ # @params food_log_id [Integer] The ID of the food log to edit
56
+ # @params body [Hash] The POST request body
57
+
58
+ def update_food_log(food_log_id, body)
59
+ post("user/#{user_id}/foods/log/#{food_log_id}.json", body)
60
+ end
61
+
62
+ # Deletes a user's food log entry using the given log ID
63
+ #
64
+ # @params food_log_id [Integer] The id of the food log entry
65
+
66
+ def delete_food_log(food_log_id)
67
+ delete("user/#{user_id}/foods/log/#{food_log_id}.json")
68
+ end
69
+
70
+ # Adds a food with the given ID to the user's list of favorite foods
71
+
72
+ def add_favorite_food(food_id)
73
+ post("user/#{user_id}/foods/log/favorite/#{food_id}.json")
74
+ end
75
+
76
+ # Deletes a food with the given ID from the user's list of favorite foods
77
+ #
78
+ # @params food_id [Integer] The ID of the food to delete from the user's favorites
79
+
80
+ def delete_favorite_food(food_id)
81
+ delete("user/#{user_id}/foods/log/favorite/#{food_id}.json")
23
82
  end
24
83
 
25
84
  def food_time_series(resource, opts={})
@@ -48,5 +107,17 @@ module FitbitAPI
48
107
  # remove root key from response
49
108
  result.values[0]
50
109
  end
110
+
111
+ # Retrieves the food locales used to search, log or create food
112
+
113
+ def food_locales
114
+ get("foods/locales.json")
115
+ end
116
+
117
+ # Retrieves a list of all valid Fitbit food units
118
+
119
+ def food_units
120
+ get("foods/units.json")
121
+ end
51
122
  end
52
123
  end
@@ -6,34 +6,52 @@ module FitbitAPI
6
6
  # Retrieves a user's current weight goal.
7
7
 
8
8
  def weight_goal
9
- get("user/-/body/log/weight/goal.json")
9
+ get("user/#{user_id}/body/log/weight/goal.json")
10
10
  end
11
11
 
12
12
  # Retrieves a user's current body fat percentage goal.
13
13
 
14
14
  def body_fat_goal
15
- get("user/-/body/log/fat/goal.json")
15
+ get("user/#{user_id}/body/log/fat/goal.json")
16
16
  end
17
17
 
18
18
  # Retrieves a user's current daily activity goals.
19
19
 
20
- def daily_goals
20
+ def daily_activity_goals
21
21
  get("user/#{user_id}/activities/goals/daily.json")
22
22
  end
23
23
 
24
24
  # Retrieves a user's current weekly activity goals.
25
25
 
26
- def weekly_goals
26
+ def weekly_activity_goals
27
27
  get("user/#{user_id}/activities/goals/weekly.json")
28
28
  end
29
29
 
30
+ # Retrieves a user's current sleep goal.
31
+
32
+ def sleep_goal
33
+ get("user/#{user_id}/sleep/goal.json")
34
+ end
35
+
36
+ # Retrieves the user's current daily calorie consumption goal and/or food plan.
37
+
38
+ def food_goals
39
+ get("user/#{user_id}/foods/log/goal.json")
40
+ end
41
+
42
+ # Retrieves a user's daily water consumption goal.
43
+
44
+ def water_goal
45
+ get("user/#{user_id}/foods/log/water/goal.json")
46
+ end
47
+
30
48
  # POST Goals
31
49
  # ==========
32
50
 
33
51
  # Creates or updates a user's daily activity goals and returns a response using units
34
52
  # in the unit system which corresponds to the Accept-Language header provided.
35
53
  #
36
- # create_or_update_daily_goals(calories_out: 2000, active_minutes: 90, floors: 5)
54
+ # update_daily_activity_goals(calories_out: 2000, active_minutes: 90, floors: 5)
37
55
  #
38
56
  # @param calories_out [Integer] Calories output goal value
39
57
  # @param active_minutes [Integer] Active minutes goal value
@@ -41,14 +59,14 @@ module FitbitAPI
41
59
  # @param distance [Integer, Float] Distance goal value
42
60
  # @param steps [Integer] Steps goal value
43
61
 
44
- def create_or_update_daily_goals(body={})
62
+ def update_daily_activity_goals(body={})
45
63
  post("user/#{user_id}/activities/goals/daily.json", body)
46
64
  end
47
65
 
48
66
  # Creates or updates a user's weekly activity goals and returns a response using units
49
67
  # in the unit system which corresponds to the Accept-Language header provided.
50
68
  #
51
- # create_or_update_weekly_goals(active_minutes: 300, floors: 20)
69
+ # update_weekly_activity_goals(active_minutes: 300, floors: 20)
52
70
  #
53
71
  # @param calories_out [Integer] Calories output goal value
54
72
  # @param active_minutes [Integer] Active minutes goal value
@@ -56,8 +74,47 @@ module FitbitAPI
56
74
  # @param distance [Integer, Float] Distance goal value
57
75
  # @param steps [Integer] Steps goal value
58
76
 
59
- def create_or_update_weekly_goals(body={})
77
+ def update_weekly_activity_goals(body={})
60
78
  post("user/#{user_id}/activities/goals/weekly.json", body)
61
79
  end
80
+
81
+ # Creates or updates a user's weight goal.
82
+ #
83
+ # @param body [Hash] the POST request body
84
+ def update_weight_goal(body)
85
+ post("user/#{user_id}/body/log/weight/goal.json", body)
86
+ end
87
+
88
+ # Creates or updates a user's body fat goal.
89
+ #
90
+ # @param body [Hash] the POST request body
91
+
92
+ def update_body_fat_goal(body)
93
+ post("user/#{user_id}/body/log/fat/goal.json", body)
94
+ end
95
+
96
+ # Create or update a user's sleep goal.
97
+ #
98
+ # @param body [Hash] the POST request body
99
+
100
+ def update_sleep_goal(body)
101
+ post("user/#{user_id}/sleep/goal.json", body)
102
+ end
103
+
104
+ # Creates or updates a user's daily calorie consumption or food plan goals.
105
+ #
106
+ # @param body [Hash] the POST request body
107
+
108
+ def update_food_goals(body)
109
+ post("user/#{user_id}/foods/log/goal.json", body)
110
+ end
111
+
112
+ # Creates or updates a user's daily water consumption goal.
113
+ #
114
+ # @param body [Hash] the POST request body
115
+
116
+ def update_water_goal(body)
117
+ post("user/#{user_id}/foods/log/water/goal.json", body)
118
+ end
62
119
  end
63
120
  end
@@ -42,9 +42,9 @@ module FitbitAPI
42
42
  end
43
43
 
44
44
  if (start_time && end_time)
45
- get("user/-/activities/heart/date/#{format_date(date)}/1d/#{detail_level}/time/#{format_time(start_time)}/#{format_time(end_time)}.json")
45
+ get("user/#{user_id}/activities/heart/date/#{format_date(date)}/1d/#{detail_level}/time/#{format_time(start_time)}/#{format_time(end_time)}.json")
46
46
  else
47
- get("user/-/activities/heart/date/#{format_date(date)}/1d/#{detail_level}.json")
47
+ get("user/#{user_id}/activities/heart/date/#{format_date(date)}/1d/#{detail_level}.json")
48
48
  end
49
49
  end
50
50
  end
@@ -0,0 +1,42 @@
1
+ module FitbitAPI
2
+ class Client
3
+ # Retrieves a list of meals created by the user from their food log
4
+
5
+ def meals
6
+ get("user/#{user_id}/meals.json")
7
+ end
8
+
9
+ # Retrieves a single meal created by the user from their food log given the meal id
10
+ #
11
+ # @params meal_id [Integer] The ID of the meal
12
+
13
+ def meal(meal_id)
14
+ get("user/#{user_id}/meals/#{meal_id}.json")
15
+ end
16
+
17
+ # Creates a meal with the given food
18
+ #
19
+ # @params body [Hash] The POST request body
20
+
21
+ def create_meal(body)
22
+ post("user/#{user_id}/meals.json", body)
23
+ end
24
+
25
+ # Updates an existing meal with the contents of the request
26
+ #
27
+ # @params meal_id [Integer] The ID of the meal
28
+ # @params body [Hash] The POST request body
29
+
30
+ def update_meal(meal_id, body)
31
+ post("user/#{user_id}/meals/#{meal_id}.json", body)
32
+ end
33
+
34
+ # Deletes an existing meal of the given meal ID
35
+ #
36
+ # @params meal_id [Integer] The ID of the meal
37
+
38
+ def delete_meal(meal_id)
39
+ delete("user/#{user_id}/meals/#{meal_id}.json")
40
+ end
41
+ end
42
+ end
@@ -3,10 +3,45 @@ module FitbitAPI
3
3
  SLEEP_RESOURCES = %w(startTime timeInBed minutesAsleep awakeningsCount
4
4
  minutesAwake minutesToFallAsleep minutesAfterWakeup efficiency)
5
5
 
6
+ # Returns a list of a user's sleep log entries for a given date. The data returned can include sleep
7
+ # periods that began on the previous date. For example, if you request a Sleep Log for 2021-12-22,
8
+ # it may return a log entry that began the previous night on 2021-12-21, but ended on 2021-12-22.
9
+ #
10
+ # @params date [Date, String] The date for the sleep log to be returned in the format yyyy-MM-dd
11
+
6
12
  def sleep_logs(date=Date.today)
7
13
  get("user/#{user_id}/sleep/date/#{format_date(date)}.json")
8
14
  end
9
15
 
16
+ # Returns a list of a user's sleep log entries before or after a given date, and specifying offset,
17
+ # limit and sort order. The data returned for different dates can include sleep periods that began
18
+ # on the previous date. For example, a sleep log entry for 2018-10-21 may have ended that day but
19
+ # started the previous night on 2018-10-20.
20
+ #
21
+ # sleep_logs_list(before_date: Date.parse('2021-05-24'), limit: 5)
22
+ #
23
+ # @param before_date [Date] Specify when filtering entries that occured before the given date
24
+ # @param after_date [Date] Specify when filtering entries that occured after the given date
25
+ # @param sort [String] the Sort order of entries by date (asc or desc)
26
+ # @param offset [Integer] The offset number of entries. Must always be 0
27
+ # @param limit [Integer] The max of the number of entries returned (max: 100)
28
+
29
+ def sleep_logs_list(params={})
30
+ default_params = { before_date: Date.today, after_date: nil, sort: 'desc', limit: 20, offset: 0 }
31
+ get("user/#{user_id}/sleep/list.json", default_params.merge(params))
32
+ end
33
+
34
+ # Creates a log entry for a sleep event
35
+
36
+ def create_sleep_log(body)
37
+ post("user/#{user_id}/sleep.json", body)
38
+ end
39
+
40
+ # Deletes a sleep log with the given log ID
41
+ def delete_sleep_log(sleep_log_id)
42
+ delete("user/#{user_id}/sleep/#{sleep_log_id}.json")
43
+ end
44
+
10
45
  def sleep_time_series(resource, opts={})
11
46
  start_date = opts[:start_date]
12
47
  end_date = opts[:end_date] || Date.today
@@ -1,3 +1,3 @@
1
1
  module FitbitAPI
2
- VERSION = '0.11.0'
2
+ VERSION = '0.12.0'
3
3
  end
@@ -1,7 +1,32 @@
1
1
  module FitbitAPI
2
2
  class Client
3
+ # Retrieves a summary and list of a user's water log entries for a given day
4
+ #
5
+ # @param date [Date] The date for which entries are to be returned
3
6
  def water_logs(date=Date.today)
4
7
  get("user/#{user_id}/foods/log/water/date/#{format_date(date)}.json")
5
8
  end
9
+
10
+ # Create a user's water log entry
11
+ #
12
+ # @param body [Hash] The POST request body for creating the water log entry
13
+ def log_water(body)
14
+ post("user/#{user_id}/foods/log/water.json", body)
15
+ end
16
+
17
+ # Updates the quantity consumed for a user's water log entry with the given log ID
18
+ #
19
+ # @params water_log_id [Integer] The ID of the water log to be updated
20
+ # @params body [Hash] The POST request body for updating the water log
21
+ def update_water_log(water_log_id, body)
22
+ post("user/#{user_id}/foods/log/water/#{water_log_id}.json", body)
23
+ end
24
+
25
+ # Deleted a user's water log entry using the given log ID
26
+ #
27
+ # @param water_log_id [Integer] The id of the water log entry
28
+ def delete_water_log(water_log_id)
29
+ delete("user/#{user_id}/foods/log/water/#{water_log_id}.json")
30
+ end
6
31
  end
7
32
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fitbit_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.0
4
+ version: 0.12.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zoran
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-05-07 00:00:00.000000000 Z
11
+ date: 2022-05-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: oauth2
@@ -28,16 +28,16 @@ dependencies:
28
28
  name: byebug
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: '11.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: '11.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -56,39 +56,39 @@ dependencies:
56
56
  name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">="
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 12.3.3
61
+ version: '13.0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ">="
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 12.3.3
68
+ version: '13.0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ">="
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '0'
75
+ version: '3.11'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ">="
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '0'
82
+ version: '3.11'
83
83
  description:
84
84
  email:
85
85
  executables: []
86
86
  extensions: []
87
87
  extra_rdoc_files: []
88
88
  files:
89
+ - ".github/workflows/test.yml"
89
90
  - ".gitignore"
90
91
  - ".rspec"
91
- - ".travis.yml"
92
92
  - CHANGELOG.md
93
93
  - Gemfile
94
94
  - LICENSE.txt
@@ -109,6 +109,7 @@ files:
109
109
  - lib/fitbit_api/helpers/configuration.rb
110
110
  - lib/fitbit_api/helpers/exceptions.rb
111
111
  - lib/fitbit_api/helpers/utils.rb
112
+ - lib/fitbit_api/meals.rb
112
113
  - lib/fitbit_api/sleep.rb
113
114
  - lib/fitbit_api/subscriptions.rb
114
115
  - lib/fitbit_api/user.rb
data/.travis.yml DELETED
@@ -1,8 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.7.2
4
- - 2.6.6
5
- - 2.5.1
6
- - 2.4.2
7
- - 2.3.5
8
- before_install: gem install bundler -v 1.10.3