tanita-api-client 0.2.2 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7abd65d845038f6e657b6e8346fe9839f9e8d148162d60683187a4346f7e5694
4
- data.tar.gz: b45424da19973f3b269ce3a3a2999f6ec66eda06e67a9891d52fbbbfeb83fec3
3
+ metadata.gz: cef71ec4b4f23cc1fd850b5af941352ce271e4fa61e1ca9fb51541b2b8f155e9
4
+ data.tar.gz: 6e9b559345a4a581a29ec6ac255685662f5432aaaf03dc7a83c770900641db45
5
5
  SHA512:
6
- metadata.gz: f10078889601e85d091d6c9248e8a0f8eeb4135695430f9eb3d92103188bb114a19f322767086088a4485dd72f2098884750c2e6fccfab76294238b496d8befe
7
- data.tar.gz: 61c0b620234eb935ffae62fe91445be0f13c40a5c961b90fce6048058457233c787cb7f55956b47681fc9a0b472d8d6ddb1965c1b7f7b359eeff67ea9629c2df
6
+ metadata.gz: ebe34ad9d7ac97d2e7ddb7f319757998ab0ba740a9799b417250fd267592b89c7b4df950551100e90c3a00c08b1df9dd0d66fe66538462d12166fc611cefcd6c
7
+ data.tar.gz: 7d603beaa0b12eae0918e4c2ce3916afc55060764f9ddc9343e0692e966978f4fdeba2e1acffc22595e6e55005093aa241223cf767cfcfab59b09a620f43081c
@@ -0,0 +1,36 @@
1
+ name: Ruby Gem
2
+
3
+ on:
4
+ push:
5
+ branches: [master]
6
+
7
+ jobs:
8
+ build:
9
+ name: Build + Publish
10
+ runs-on: ubuntu-latest
11
+
12
+ steps:
13
+ - uses: actions/checkout@v2
14
+ - name: Set up Ruby 2.6
15
+ uses: actions/setup-ruby@v1
16
+ with:
17
+ ruby-version: 2.6
18
+
19
+ - name: Build and test
20
+ run: |
21
+ gem install bundler
22
+ bundle install --jobs 4 --retry 3
23
+ bundle exec rspec
24
+ env:
25
+ CODECOV_TOKEN: ${{secrets.CODECOV_TOKEN}}
26
+
27
+ - name: Publish to RubyGems
28
+ run: |
29
+ mkdir -p $HOME/.gem
30
+ touch $HOME/.gem/credentials
31
+ chmod 0600 $HOME/.gem/credentials
32
+ printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
33
+ gem build *.gemspec
34
+ gem push *.gem
35
+ env:
36
+ GEM_HOST_API_KEY: ${{secrets.RUBYGEMS_AUTH_TOKEN}}
@@ -0,0 +1,21 @@
1
+ name: Test
2
+
3
+ on: pull_request
4
+
5
+ jobs:
6
+ test:
7
+ runs-on: ubuntu-latest
8
+
9
+ steps:
10
+ - uses: actions/checkout@v2
11
+ - name: Set up Ruby
12
+ uses: ruby/setup-ruby@v1
13
+ with:
14
+ ruby-version: 2.6
15
+ - name: Build and test
16
+ run: |
17
+ gem install bundler
18
+ bundle install --jobs 4 --retry 3
19
+ bundle exec rspec
20
+ env:
21
+ CODECOV_TOKEN: ${{secrets.CODECOV_TOKEN}}
data/.gitignore CHANGED
@@ -6,6 +6,8 @@
6
6
  /pkg/
7
7
  /spec/reports/
8
8
  /tmp/
9
+ Gemfile.lock
9
10
 
10
11
  # rspec failure tracking
11
12
  .rspec_status
13
+
@@ -1,33 +1,55 @@
1
- # 0.2.2
1
+ # 0.4.1
2
+
3
+ - refs #4 fix settings for simplecov.
4
+
5
+ # 0.4.0
6
+
7
+ - refs #4 measure code coverage
8
+ - refs #5 setup GitHub Actions for rspec and pushing to RubyGems
9
+
10
+ # 0.3.0
11
+
12
+ changed Result hash to be Object.
2
13
 
3
- * define constants
4
- * `Tanita::Api::Client::AUTH_URL`
5
- * `Tanita::Api::Client::AUTH_URL_PATH`
6
- * `Tanita::Api::Client::TOKEN_URL`
7
- * `Tanita::Api::Client::TOKEN_URL_PATH`
14
+ ```
15
+ # before
16
+ result.items[0][:weight]
17
+ # after
18
+ result.items[0].weight
19
+ ```
8
20
 
21
+ # 0.2.3
22
+
23
+ remove Gemfile.lock
24
+
25
+ # 0.2.2
26
+
27
+ - define constants
28
+ - `Tanita::Api::Client::AUTH_URL`
29
+ - `Tanita::Api::Client::AUTH_URL_PATH`
30
+ - `Tanita::Api::Client::TOKEN_URL`
31
+ - `Tanita::Api::Client::TOKEN_URL_PATH`
9
32
 
10
33
  # 0.2.1
11
34
 
12
- * rename constant
13
- * from `Tanita::Api::Client::HttpHelper::BASE_URL` to `Tanita::Api::Client::BASE_URL`
35
+ - rename constant
36
+ - from `Tanita::Api::Client::HttpHelper::BASE_URL` to `Tanita::Api::Client::BASE_URL`
14
37
 
15
38
  # 0.2.0
16
39
 
17
- * set required ruby version to greater than or equal to v2.4
18
- * added `data_type` argument in BaseApiClient#initialize
19
- * set a proper data type in Result class attributes
20
- * rename some attributes in Result class
21
- * e.g.
22
- * `@data` to `@items`
23
- * `@data[0][:date]` to `@items[0][:measured_at]` or `@items[0][:registered_at]`
40
+ - set required ruby version to greater than or equal to v2.4
41
+ - added `data_type` argument in BaseApiClient#initialize
42
+ - set a proper data type in Result class attributes
43
+ - rename some attributes in Result class
44
+ - e.g.
45
+ - `@data` to `@items`
46
+ - `@data[0][:date]` to `@items[0][:measured_at]` or `@items[0][:registered_at]`
24
47
 
25
48
  # 0.1.1
26
49
 
27
- * support Tanita::Api::Client.configure
28
- * wrote spec
50
+ - support Tanita::Api::Client.configure
51
+ - wrote spec
29
52
 
30
53
  # 0.1.0
31
54
 
32
- * Initial release
33
-
55
+ - Initial release
data/README.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Tanita::Api::Client
2
2
 
3
+ [![Test](https://github.com/koshilife/tanita-api-ruby-client/workflows/Test/badge.svg)](https://github.com/koshilife/tanita-api-ruby-client/actions?query=workflow%3ATest)
4
+ [![codecov](https://codecov.io/gh/koshilife/tanita-api-ruby-client/branch/master/graph/badge.svg)](https://codecov.io/gh/koshilife/tanita-api-ruby-client)
5
+ [![Gem Version](https://badge.fury.io/rb/tanita-api-client.svg)](http://badge.fury.io/rb/tanita-api-client)
6
+ [![license](https://img.shields.io/github/license/koshilife/tanita-api-ruby-client)](https://github.com/koshilife/tanita-api-ruby-client/blob/master/LICENSE.txt)
3
7
 
4
8
  ## About
5
9
 
@@ -91,7 +95,7 @@ result = api.status
91
95
  result = api.status(from: Date.current.ago(1.month), to: Date.current)
92
96
 
93
97
  # list the body-weight data
94
- result.items.each{|item| puts "#{Time.at(item[:measured_at]).strftime('%F %R')} => #{item[:weight]}" }
98
+ result.items.each{|item| puts "#{Time.at(item.measured_at).strftime('%F %R')} => #{item.weight}" }
95
99
  2019-10-10 08:09 => 66.7
96
100
  2019-10-11 09:02 => 66.5
97
101
  2019-10-13 08:22 => 66.7
@@ -100,23 +104,27 @@ result.items.each{|item| puts "#{Time.at(item[:measured_at]).strftime('%F %R')}
100
104
 
101
105
  # Result of Innerscan Api
102
106
  result = Tanita::Api::Client::Innerscan.new.status
103
- result.items[0].keys
104
- => [:measured_at, :model, :weight, :body_fat, :muscle_mass, :physique_rating, :visceral_fat_rating, :basal_metabolic_rate, :metabolic_age, :bone_mass]
107
+ => #<Tanita::Api::Client::Result:70199592389780 properties=birth_date,height,sex,items>
108
+ result.items[0]
109
+ => #<Tanita::Api::Client::InnerscanItem:70199597695880 properties=measured_at,registered_at,model,weight,body_fat,muscle_mass,physique_rating,visceral_fat_rating,basal_metabolic_rate,metabolic_age,bone_mass>
110
+ result.items[0].weight
111
+ => 66.7
105
112
 
106
113
  # Result of Sphygmomanometer Api
107
114
  result = Tanita::Api::Client::Sphygmomanometer.new.status
108
- result.items[0].keys
109
- => [:measured_at, :model, :maximal_pressure, :minimal_pressure, :pulse]
115
+ result.items[0]
116
+ => #<Tanita::Api::Client::SphygmomanometerItem:70199592475760 properties=measured_at,registered_at,model,maximal_pressure,minimal_pressure,pulse>
110
117
 
111
118
  # Result of Pedometer Api
112
119
  result = Tanita::Api::Client::Pedometer.new.status
113
- result.items[0].keys
114
- => [:measured_at, :model, :steps, :calories]
120
+ result.items[0]
121
+ => #<Tanita::Api::Client::PedometerItem:70199605021160 properties=measured_at,registered_at,model,steps,exercise,calories>
122
+
115
123
 
116
124
  # Result of Smug Api
117
125
  result = Tanita::Api::Client::Smug.new.status
118
- result.items[0].keys
119
- => [:measured_at, :model, :urinary_sugar]
126
+ result.items[0]
127
+ => #<Tanita::Api::Client::SmugItem:70199600803680 properties=measured_at,registered_at,model,urinary_sugar>
120
128
 
121
129
  # common attributes of Result class
122
130
  result.birth_date # [Date]
@@ -1,9 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'tanita/api/client/base'
4
- require 'tanita/api/client/helpers'
5
- require 'tanita/api/client/configuration'
6
- require 'tanita/api/client/version'
3
+ Dir[
4
+ File.join(
5
+ File.dirname(__FILE__),
6
+ 'client',
7
+ '*'
8
+ )
9
+ ].sort.each { |f| require f }
7
10
 
8
11
  module Tanita
9
12
  module Api
@@ -67,11 +70,11 @@ module Tanita
67
70
  end
68
71
 
69
72
  class Innerscan < BaseApiClient
70
- def endpoint
73
+ def self.endpoint
71
74
  '/status/innerscan.json'
72
75
  end
73
76
 
74
- def measurement_tags
77
+ def self.properties
75
78
  {
76
79
  :weight => {:code => '6021', :type => Float},
77
80
  :body_fat => {:code => '6022', :type => Float},
@@ -86,11 +89,11 @@ module Tanita
86
89
  end
87
90
 
88
91
  class Sphygmomanometer < BaseApiClient
89
- def endpoint
92
+ def self.endpoint
90
93
  '/status/sphygmomanometer.json'
91
94
  end
92
95
 
93
- def measurement_tags
96
+ def self.properties
94
97
  {
95
98
  :maximal_pressure => {:code => '622E', :type => Integer},
96
99
  :minimal_pressure => {:code => '622F', :type => Integer},
@@ -100,11 +103,11 @@ module Tanita
100
103
  end
101
104
 
102
105
  class Pedometer < BaseApiClient
103
- def endpoint
106
+ def self.endpoint
104
107
  '/status/pedometer.json'
105
108
  end
106
109
 
107
- def measurement_tags
110
+ def self.properties
108
111
  {
109
112
  :steps => {:code => '6331', :type => Integer},
110
113
  :exercise => {:code => '6335', :type => Integer},
@@ -114,11 +117,11 @@ module Tanita
114
117
  end
115
118
 
116
119
  class Smug < BaseApiClient
117
- def endpoint
120
+ def self.endpoint
118
121
  '/status/smug.json'
119
122
  end
120
123
 
121
- def measurement_tags
124
+ def self.properties
122
125
  {
123
126
  :urinary_sugar => {:code => '6240', :type => Integer}
124
127
  }
@@ -1,11 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'time'
4
- require 'tanita/api/client/helpers'
5
-
6
3
  module Tanita
7
4
  module Api
8
5
  module Client
6
+
9
7
  module Scope
10
8
  INNERSCAN = 'innerscan'
11
9
  SPHYGMOMANOMETER = 'sphygmomanometer'
@@ -19,122 +17,6 @@ module Tanita
19
17
  class Error < StandardError
20
18
  end
21
19
 
22
- DATE_TYPE_REGISTERD_AT = 0
23
- DATE_TYPE_MEASURED_AT = 1
24
-
25
- class BaseApiClient
26
- include HttpHelper
27
-
28
- def initialize(access_token: nil, date_type: DATE_TYPE_MEASURED_AT)
29
- config = Tanita::Api::Client.configuration
30
- @access_token = access_token || config.access_token
31
- raise Error.new("param:'access_token' is required.'") if @access_token.nil?
32
-
33
- @date_type = date_type
34
- raise Error.new("param:'date_type' is invalid.'") unless [DATE_TYPE_REGISTERD_AT, DATE_TYPE_MEASURED_AT].include? date_type
35
- end
36
-
37
- def status(
38
- from: nil,
39
- to: nil
40
- )
41
- tags = measurement_tags.values.map { |i| i[:code] }.join(',')
42
- params = {
43
- :access_token => @access_token,
44
- :date => @date_type,
45
- :tag => tags
46
- }
47
- params[:from] = time_format(from) unless from.nil?
48
- params[:to] = time_format(to) unless to.nil?
49
- res = request(endpoint, params)
50
- Result.new(:client => self, :response => res)
51
- end
52
-
53
- def endpoint
54
- raise NotImplementedError
55
- end
56
-
57
- def measurement_tags
58
- raise NotImplementedError
59
- end
60
-
61
- def find_measurement_tag(code:)
62
- return @inverted_measurement[code] unless @inverted_measurement.nil?
63
-
64
- @inverted_measurement = {}
65
- measurement_tags.each do |m_name, m_info|
66
- @inverted_measurement[m_info[:code]] = {:name => m_name, :type => m_info[:type]}
67
- end
68
- @inverted_measurement[code]
69
- end
70
-
71
- def date_key
72
- case @date_type
73
- when DATE_TYPE_REGISTERD_AT
74
- :registered_at
75
- when DATE_TYPE_MEASURED_AT
76
- :measured_at
77
- end
78
- end
79
-
80
- private
81
-
82
- def time_format(time)
83
- time.strftime('%Y%m%d%H%M%S')
84
- end
85
- end
86
-
87
- class Result
88
- include HttpHelper
89
-
90
- # [Date]
91
- attr_reader :birth_date
92
-
93
- # [Float] (centimeter)
94
- attr_reader :height
95
-
96
- # [String] 'male' or 'female'
97
- attr_reader :sex
98
-
99
- # [Array<Hash>]
100
- attr_reader :items
101
-
102
- def initialize(client:, response:)
103
- @client = client
104
- result = parse_json(response.body)
105
- @birth_date = Date.parse(result[:birth_date])
106
- @height = result[:height].to_f
107
- @sex = result[:sex]
108
- @items = build_items(result[:data])
109
- end
110
-
111
- private
112
-
113
- def build_items(raw_items)
114
- item_dic = {}
115
- raw_items.each do |item|
116
- date = item[:date]
117
- model = item[:model]
118
- key = "#{date}_#{model}"
119
- measurement = @client.find_measurement_tag(:code => item[:tag])
120
- value = cast(:value => item[:keydata], :type => measurement[:type])
121
- item_dic[key] ||= {}
122
- item_dic[key][@client.date_key] = Time.parse("#{date} +09:00").to_i unless item_dic[key].key? :date
123
- item_dic[key][:model] = model unless item_dic[key].key? :model
124
- item_dic[key][measurement[:name]] = value
125
- end
126
- # sort by date in ascending order
127
- item_dic.values.sort_by { |dic| dic[@client.date_key] }
128
- end
129
-
130
- def cast(value:, type:)
131
- return value if value.nil?
132
- return value.to_i if type == Integer
133
- return value.to_f if type == Float
134
-
135
- value
136
- end
137
- end
138
20
  end
139
21
  end
140
22
  end
@@ -0,0 +1,112 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'time'
4
+ require 'tanita/api/client/helpers'
5
+
6
+ module Tanita
7
+ module Api
8
+ module Client
9
+ DATE_TYPE_REGISTERD_AT = 0
10
+ DATE_TYPE_MEASURED_AT = 1
11
+
12
+ class BaseApiClient
13
+ include HttpHelper
14
+
15
+ def self.endpoint
16
+ raise NotImplementedError
17
+ end
18
+
19
+ def self.properties
20
+ raise NotImplementedError
21
+ end
22
+
23
+ def initialize(access_token: nil, date_type: DATE_TYPE_MEASURED_AT)
24
+ config = Tanita::Api::Client.configuration
25
+ @access_token = access_token || config.access_token
26
+ raise Error.new("param:'access_token' is required.'") if @access_token.nil?
27
+
28
+ @date_type = date_type
29
+ raise Error.new("param:'date_type' is invalid.'") unless [DATE_TYPE_REGISTERD_AT, DATE_TYPE_MEASURED_AT].include? date_type
30
+
31
+ ClassBuilder.load
32
+ end
33
+
34
+ def status(
35
+ from: nil,
36
+ to: nil
37
+ )
38
+ tags = self.class.properties.values.map { |i| i[:code] }.join(',')
39
+ params = {
40
+ :access_token => @access_token,
41
+ :date => @date_type,
42
+ :tag => tags
43
+ }
44
+ params[:from] = time_format(from) unless from.nil?
45
+ params[:to] = time_format(to) unless to.nil?
46
+ res = request(self.class.endpoint, params)
47
+ build_result(res)
48
+ end
49
+
50
+ def inspect
51
+ "\#<#{self.class}:#{object_id}>"
52
+ end
53
+
54
+ private
55
+
56
+ def build_result(res)
57
+ result = parse_json(res.body)
58
+ Result.new(
59
+ :birth_date => Date.parse(result[:birth_date]),
60
+ :height => result[:height].to_f,
61
+ :sex => result[:sex],
62
+ :items => build_result_items(:raw_items => result[:data])
63
+ )
64
+ end
65
+
66
+ def build_result_items(raw_items:)
67
+ item_dic = {}
68
+ raw_items.each do |item|
69
+ date = item[:date]
70
+ model = item[:model]
71
+ key = "#{date}_#{model}"
72
+ property = find_property_by_code(:code => item[:tag])
73
+ value = cast(:value => item[:keydata], :type => property[:type])
74
+ item_dic[key] ||= {}
75
+ item_dic[key][date_key] = Time.parse("#{date} +09:00").to_i unless item_dic[key].key? :date
76
+ item_dic[key][:model] = model unless item_dic[key].key? :model
77
+ item_dic[key][property[:name]] = value
78
+ end
79
+ items = item_dic.values.sort_by { |dic| dic[date_key] } # sort by date in ascending order
80
+ items.map { |_item_dic| eval "#{self.class}Item.new _item_dic" }
81
+ end
82
+
83
+ def cast(value:, type:)
84
+ return value if value.nil?
85
+ return value.to_i if type == Integer
86
+ return value.to_f if type == Float
87
+
88
+ value
89
+ end
90
+
91
+ def find_property_by_code(code:)
92
+ return @property_code_dic[code] unless @property_code_dic.nil?
93
+
94
+ @property_code_dic = {}
95
+ self.class.properties.each do |m_name, m_info|
96
+ @property_code_dic[m_info[:code]] = {:name => m_name, :type => m_info[:type]}
97
+ end
98
+ @property_code_dic[code]
99
+ end
100
+
101
+ def date_key
102
+ case @date_type
103
+ when DATE_TYPE_REGISTERD_AT
104
+ :registered_at
105
+ when DATE_TYPE_MEASURED_AT
106
+ :measured_at
107
+ end
108
+ end
109
+ end
110
+ end
111
+ end
112
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Tanita
4
+ module Api
5
+ module Client
6
+ class BaseEntity
7
+ def initialize(property_values = {})
8
+ @cached_property_values = {}
9
+ @cached_property_values.merge!(property_values)
10
+ end
11
+
12
+ def to_h
13
+ ret = {}
14
+ self.class.properties.each do |property|
15
+ ret[property.to_sym] = eval property.to_s
16
+ end
17
+ ret
18
+ end
19
+
20
+ def inspect
21
+ "\#<#{self.class}:#{object_id} properties=#{self.class.properties.join(',')}>"
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,61 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Tanita
4
+ module Api
5
+ module Client
6
+ class ClassBuilder
7
+ def self.load
8
+ return if loaded
9
+
10
+ create_class('Result', %i[birth_date height sex items])
11
+ base_properties = %i[measured_at registered_at model]
12
+ [Innerscan, Sphygmomanometer, Pedometer, Smug].each do |klass|
13
+ klass_name = klass.to_s.split('::')[-1] + 'Item'
14
+ properties = base_properties + klass.properties.keys
15
+ create_class(klass_name, properties)
16
+ end
17
+ @loaded = true
18
+ end
19
+
20
+ def self.loaded
21
+ @loaded || false
22
+ end
23
+ private_class_method :loaded
24
+
25
+ def self.create_class(class_name, property_names = [])
26
+ super_klass = Class.new(BaseEntity)
27
+ klass = Tanita::Api::Client.const_set(class_name, super_klass)
28
+ define_properties_reader(klass)
29
+ property_names.each do |property_name|
30
+ klass.properties << property_name
31
+ define_getter_and_setter(klass, property_name)
32
+ end
33
+ klass.properties.freeze
34
+ end
35
+ private_class_method :create_class
36
+
37
+ def self.define_properties_reader(klass)
38
+ klass.class_eval do
39
+ def self.properties
40
+ @properties = [] if @properties.nil?
41
+ @properties
42
+ end
43
+ end
44
+ end
45
+ private_class_method :define_properties_reader
46
+
47
+ def self.define_getter_and_setter(klass, property_name)
48
+ klass.class_eval do
49
+ define_method(property_name.to_sym) do
50
+ @cached_property_values[property_name.to_sym]
51
+ end
52
+ define_method("#{property_name}=".to_sym) do |value|
53
+ @cached_property_values[property_name.to_sym] = value
54
+ end
55
+ end
56
+ end
57
+ private_class_method :define_getter_and_setter
58
+ end
59
+ end
60
+ end
61
+ end
@@ -11,7 +11,7 @@ module Tanita
11
11
  AUTH_URL_PATH = '/oauth/auth'
12
12
  AUTH_URL = "#{BASE_URL}#{AUTH_URL_PATH}"
13
13
 
14
- TOKEN_URL_PATH = '/oauth/token'
14
+ TOKEN_URL_PATH = '/oauth/token'
15
15
  TOKEN_URL = "#{BASE_URL}#{TOKEN_URL_PATH}"
16
16
 
17
17
  DEFAULT_REDIRECT_URI = "#{BASE_URL}/success.html"
@@ -37,6 +37,10 @@ module Tanita
37
37
  rescue JSON::ParserError => e
38
38
  raise Error.new("JSON::ParseError: '#{e}'\nstr:#{str}")
39
39
  end
40
+
41
+ def time_format(time)
42
+ time.strftime('%Y%m%d%H%M%S')
43
+ end
40
44
  end
41
45
  end
42
46
  end
@@ -3,7 +3,7 @@
3
3
  module Tanita
4
4
  module Api
5
5
  module Client
6
- VERSION = '0.2.2'
6
+ VERSION = '0.4.1'
7
7
  end
8
8
  end
9
9
  end
@@ -7,7 +7,7 @@ require 'tanita/api/client/version'
7
7
  Gem::Specification.new do |spec|
8
8
  spec.name = 'tanita-api-client'
9
9
  spec.version = Tanita::Api::Client::VERSION
10
- spec.authors = ['Kenji Koshikawa']
10
+ spec.authors = ['Kenji Koshikawa']
11
11
  spec.email = ['koshikawa2009@gmail.com']
12
12
 
13
13
  spec.description = 'Client for accessing Tanita Health Planet APIs'
@@ -19,6 +19,7 @@ Gem::Specification.new do |spec|
19
19
  spec.metadata['homepage_uri'] = spec.homepage
20
20
  spec.metadata['source_code_uri'] = 'https://github.com/koshilife/tanita-api-ruby-client'
21
21
  spec.metadata['changelog_uri'] = "#{spec.metadata['source_code_uri']}/blob/master/CHANGELOG.md"
22
+ spec.metadata['documentation_uri'] = "https://www.rubydoc.info/gems/tanita-api-client/#{spec.version}"
22
23
 
23
24
  # Specify which files should be added to the gem when it is released.
24
25
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
@@ -30,7 +31,9 @@ Gem::Specification.new do |spec|
30
31
  spec.require_paths = ['lib']
31
32
 
32
33
  spec.add_development_dependency 'bundler', '~> 2.0'
34
+ spec.add_development_dependency 'codecov', '~> 0.1.17'
33
35
  spec.add_development_dependency 'rake', '~> 12.0'
34
36
  spec.add_development_dependency 'rspec', '~> 3.0'
37
+ spec.add_development_dependency 'simplecov', '~> 0.18.5'
35
38
  spec.add_development_dependency 'webmock', '~> 3.7.6'
36
39
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tanita-api-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kenji Koshikawa
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-01-12 00:00:00.000000000 Z
11
+ date: 2020-07-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '2.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: codecov
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 0.1.17
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 0.1.17
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: rake
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -52,6 +66,20 @@ dependencies:
52
66
  - - "~>"
53
67
  - !ruby/object:Gem::Version
54
68
  version: '3.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: simplecov
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 0.18.5
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 0.18.5
55
83
  - !ruby/object:Gem::Dependency
56
84
  name: webmock
57
85
  requirement: !ruby/object:Gem::Requirement
@@ -73,14 +101,14 @@ executables: []
73
101
  extensions: []
74
102
  extra_rdoc_files: []
75
103
  files:
104
+ - ".github/workflows/gem-push.yml"
105
+ - ".github/workflows/test.yml"
76
106
  - ".gitignore"
77
107
  - ".rspec"
78
108
  - ".rubocop.yml"
79
- - ".travis.yml"
80
109
  - CHANGELOG.md
81
110
  - CODE_OF_CONDUCT.md
82
111
  - Gemfile
83
- - Gemfile.lock
84
112
  - LICENSE.txt
85
113
  - README.md
86
114
  - Rakefile
@@ -88,6 +116,9 @@ files:
88
116
  - bin/setup
89
117
  - lib/tanita/api/client.rb
90
118
  - lib/tanita/api/client/base.rb
119
+ - lib/tanita/api/client/base_api_client.rb
120
+ - lib/tanita/api/client/base_entity.rb
121
+ - lib/tanita/api/client/class_builder.rb
91
122
  - lib/tanita/api/client/configuration.rb
92
123
  - lib/tanita/api/client/helpers.rb
93
124
  - lib/tanita/api/client/version.rb
@@ -99,6 +130,7 @@ metadata:
99
130
  homepage_uri: https://github.com/koshilife/tanita-api-ruby-client
100
131
  source_code_uri: https://github.com/koshilife/tanita-api-ruby-client
101
132
  changelog_uri: https://github.com/koshilife/tanita-api-ruby-client/blob/master/CHANGELOG.md
133
+ documentation_uri: https://www.rubydoc.info/gems/tanita-api-client/0.4.1
102
134
  post_install_message:
103
135
  rdoc_options: []
104
136
  require_paths:
@@ -114,7 +146,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
114
146
  - !ruby/object:Gem::Version
115
147
  version: '0'
116
148
  requirements: []
117
- rubygems_version: 3.1.2
149
+ rubygems_version: 3.0.3
118
150
  signing_key:
119
151
  specification_version: 4
120
152
  summary: Client for accessing Tanita Health Planet APIs
@@ -1,7 +0,0 @@
1
- ---
2
- sudo: false
3
- language: ruby
4
- cache: bundler
5
- rvm:
6
- - 2.6.3
7
- before_install: gem install bundler -v 2.0.2
@@ -1,47 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- tanita-api-client (0.2.2)
5
-
6
- GEM
7
- remote: https://rubygems.org/
8
- specs:
9
- addressable (2.7.0)
10
- public_suffix (>= 2.0.2, < 5.0)
11
- crack (0.4.3)
12
- safe_yaml (~> 1.0.0)
13
- diff-lcs (1.3)
14
- hashdiff (1.0.0)
15
- public_suffix (4.0.3)
16
- rake (12.3.3)
17
- rspec (3.9.0)
18
- rspec-core (~> 3.9.0)
19
- rspec-expectations (~> 3.9.0)
20
- rspec-mocks (~> 3.9.0)
21
- rspec-core (3.9.1)
22
- rspec-support (~> 3.9.1)
23
- rspec-expectations (3.9.0)
24
- diff-lcs (>= 1.2.0, < 2.0)
25
- rspec-support (~> 3.9.0)
26
- rspec-mocks (3.9.1)
27
- diff-lcs (>= 1.2.0, < 2.0)
28
- rspec-support (~> 3.9.0)
29
- rspec-support (3.9.2)
30
- safe_yaml (1.0.5)
31
- webmock (3.7.6)
32
- addressable (>= 2.3.6)
33
- crack (>= 0.3.2)
34
- hashdiff (>= 0.4.0, < 2.0.0)
35
-
36
- PLATFORMS
37
- ruby
38
-
39
- DEPENDENCIES
40
- bundler (~> 2.0)
41
- rake (~> 12.0)
42
- rspec (~> 3.0)
43
- tanita-api-client!
44
- webmock (~> 3.7.6)
45
-
46
- BUNDLED WITH
47
- 2.1.3