karaage_posting 0.0.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.
- checksums.yaml +7 -0
- data/.coveralls.yml +1 -0
- data/.gitignore +12 -0
- data/.rspec +2 -0
- data/.travis.yml +4 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +21 -0
- data/README.md +96 -0
- data/Rakefile +6 -0
- data/bin/karaage_posting +4 -0
- data/karaage_posting.gemspec +34 -0
- data/lib/karaage_posting.rb +20 -0
- data/lib/karaage_posting/fitbit_karaage_cli.rb +78 -0
- data/lib/karaage_posting/fitbit_karaage_count.rb +36 -0
- data/lib/karaage_posting/fitbit_karaage_oauth.rb +56 -0
- data/lib/karaage_posting/fitbit_karaage_post.rb +19 -0
- data/lib/karaage_posting/version.rb +6 -0
- metadata +215 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 03c726c459a994405e9e224e9aa9320164f0c4bb
|
4
|
+
data.tar.gz: cc2d71e982046a9cf017c2882f376cc8dde8be3e
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: ccfb23a659b38f27d663452b65353272e893c3de3419a1f3947cf15e8ae1dc2cdae33627a92bb556e4e7b27bd436ca4cbed0bf3ba10bb7cb2126b59cbe18dadd
|
7
|
+
data.tar.gz: 9c542bc335d0835dfd03828b2d11b4a657260c644c8032d591fc583ad744d9e54f3dfdd70450a3c94769d5a5cdf76095042c5dbb59d97aab43d2098b3a0c9af8
|
data/.coveralls.yml
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
service_name: travis-ci
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2015 tossh0095
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,96 @@
|
|
1
|
+
# KaraagePosting
|
2
|
+
|
3
|
+
唐揚げポスティングとは
|
4
|
+
## 動機
|
5
|
+
[このスライド](http://www.slideshare.net/moririring/karaage-click)に触発されて、唐揚げログを取得せねばならないと思い作成したrubygemsです。
|
6
|
+
|
7
|
+
自分が食べた唐揚げの数をライフログサービスから取得,[唐揚げ.click](https://karaage.click)に投稿するrubygemsです。
|
8
|
+
いまのところfitbit(OAuth 2.0)にしか対応していません。jawboneとかも対応していきたいと思っています。
|
9
|
+
|
10
|
+
TODO:
|
11
|
+
エラー処理の実装ができていないので、実装しないといけないなぁ・・・。
|
12
|
+
|
13
|
+
## Installation
|
14
|
+
|
15
|
+
Gemfileに下の行を追加して`$ bundle`してください。
|
16
|
+
|
17
|
+
```
|
18
|
+
gem 'karaage_posting'
|
19
|
+
```
|
20
|
+
|
21
|
+
システムに入れる場合は下記の通りです。
|
22
|
+
|
23
|
+
```
|
24
|
+
$ gem install karaage_posting
|
25
|
+
```
|
26
|
+
|
27
|
+
## 利用する前に
|
28
|
+
|
29
|
+
FitbitのAPIを利用しているので、Fitbitのデベロッパー登録が必要です。
|
30
|
+
|
31
|
+
[Fitbitのデベロッパーサイト](https://dev.fitbit.com/login)に開発者登録をして、
|
32
|
+
OAuthのコンシューマキーとコンシューマシークレットを取得してください。
|
33
|
+
|
34
|
+
こんな感じで取得できます。
|
35
|
+
|
36
|
+
```
|
37
|
+
Client (Consumer) Key
|
38
|
+
[consumer_key]
|
39
|
+
OAuth 2.0 Client ID
|
40
|
+
[client_ID]
|
41
|
+
Client (Consumer) Secret
|
42
|
+
[client_secret]
|
43
|
+
```
|
44
|
+
|
45
|
+
上記の値を`$HOME/.fitbitenv`に下記のように記述してください。
|
46
|
+
```
|
47
|
+
FITBIT_KEY="consumer_id"
|
48
|
+
FITBIT_SECRET='client_secret'
|
49
|
+
FITBIT_REDIRECT_URL='application redirect url' #デベロッパー登録のときに登録したredirectページ
|
50
|
+
```
|
51
|
+
|
52
|
+
## 使い方
|
53
|
+
|
54
|
+
```ruby
|
55
|
+
require 'karaage_posting'
|
56
|
+
|
57
|
+
#ポスティング用のオブジェクトを作成
|
58
|
+
karaage_poster = KaraagePosting::FitbitKaraagePosting.new
|
59
|
+
|
60
|
+
#OAuth2.0のauthorize codeのためのURLを取得
|
61
|
+
authorize_uri = karaage_poster.get_fitbit_authorize_uri
|
62
|
+
|
63
|
+
#
|
64
|
+
#何らかの処理でauthorize codeを取得
|
65
|
+
#
|
66
|
+
|
67
|
+
#fitbit.comのトークンを取得
|
68
|
+
karaage_poster.get_fitbit_token(authorize_code)
|
69
|
+
|
70
|
+
#YYYY-MM-DDに食べた唐揚げの数を取得
|
71
|
+
karaage_poster.get_karaage_count{'2015-07-01'}#
|
72
|
+
|
73
|
+
#karaage.clickに食べた唐揚げの数を投稿
|
74
|
+
karaage_poster.posting_number_of_karaage
|
75
|
+
|
76
|
+
```
|
77
|
+
|
78
|
+
## CLIツール
|
79
|
+
|
80
|
+
CLIツールが付属しているので、crontabに登録すると定期的にポスティングできます。
|
81
|
+
|
82
|
+
```
|
83
|
+
# 今日食べた唐揚げの数を取得しkaraage.clickに投稿する
|
84
|
+
$ karaage_posting
|
85
|
+
# YYYY-MM-DDの食べた唐揚げの数を取得しkaraage.clickに投稿する
|
86
|
+
$ karaage_posting YYYY-MM-DD
|
87
|
+
```
|
88
|
+
|
89
|
+
## Contributing
|
90
|
+
|
91
|
+
プルリク大歓迎です!
|
92
|
+
|
93
|
+
## License
|
94
|
+
|
95
|
+
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
96
|
+
|
data/Rakefile
ADDED
data/bin/karaage_posting
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'karaage_posting/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "karaage_posting"
|
8
|
+
spec.version = KaraagePosting::VERSION
|
9
|
+
spec.authors = ["tossh0095"]
|
10
|
+
spec.email = ["tossh0095@users.noreply.github.com"]
|
11
|
+
|
12
|
+
spec.summary = %q{Posting number of karaages you eat to Karaage.click with life log service.}
|
13
|
+
spec.description = %q{Posting number of karaages you eat to Karaage.click with life log service.}
|
14
|
+
spec.homepage = "https://github.com/tossh0095/karaage_posting"
|
15
|
+
spec.license = "MIT"
|
16
|
+
|
17
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
18
|
+
spec.bindir = "exe"
|
19
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
20
|
+
spec.require_paths = ["lib"]
|
21
|
+
|
22
|
+
spec.add_development_dependency "bundler", "~> 1.10"
|
23
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
24
|
+
spec.add_development_dependency "rspec"
|
25
|
+
spec.add_development_dependency "pry"
|
26
|
+
spec.add_development_dependency "pry-byebug"
|
27
|
+
spec.add_development_dependency "yard"
|
28
|
+
spec.add_development_dependency "coveralls"
|
29
|
+
|
30
|
+
spec.add_dependency "oauth2", "~> 1.0"
|
31
|
+
spec.add_dependency "mechanize", "~> 2.7"
|
32
|
+
spec.add_dependency "dotenv", "~> 2.0"
|
33
|
+
spec.add_dependency "thor", "~> 0.19"
|
34
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require "base64"
|
2
|
+
require "json"
|
3
|
+
|
4
|
+
require "oauth2"
|
5
|
+
require "mechanize"
|
6
|
+
require "dotenv"
|
7
|
+
require "thor"
|
8
|
+
|
9
|
+
require "karaage_posting/version"
|
10
|
+
require "karaage_posting/fitbit_karaage_oauth"
|
11
|
+
require "karaage_posting/fitbit_karaage_count"
|
12
|
+
require "karaage_posting/fitbit_karaage_post"
|
13
|
+
require "karaage_posting/fitbit_karaage_cli"
|
14
|
+
|
15
|
+
#
|
16
|
+
# Author:: tossh0095
|
17
|
+
# License:: MIT License
|
18
|
+
#
|
19
|
+
module KaraagePosting
|
20
|
+
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
module KaraagePosting
|
2
|
+
class CLI < Thor
|
3
|
+
default_command :counting
|
4
|
+
|
5
|
+
desc 'posting YYYY-MM-DD', 'Posting number of karaage you eat at YYYY-MM-DD.'
|
6
|
+
def posting(date=Date.today.to_s)
|
7
|
+
karaage_poster = KaraagePosting::FitbitKaraagePosting.new
|
8
|
+
|
9
|
+
authorize_url = karaage_poster.get_fitbit_authorize_uri
|
10
|
+
|
11
|
+
puts '#################################'
|
12
|
+
puts '#################################'
|
13
|
+
puts "Yes, My life is Karaage eating..."
|
14
|
+
puts '#################################'
|
15
|
+
puts '#################################'
|
16
|
+
puts ''
|
17
|
+
|
18
|
+
#get Mechanize instance for OAuth login Automation
|
19
|
+
|
20
|
+
agent = Mechanize.new
|
21
|
+
|
22
|
+
#get fitbit login page
|
23
|
+
|
24
|
+
page = agent.get(authorize_url)
|
25
|
+
|
26
|
+
form = page.form_with('login')
|
27
|
+
|
28
|
+
#get login email form the console
|
29
|
+
print "Enter your fitbit email address: "
|
30
|
+
|
31
|
+
email = $stdin.gets.chomp
|
32
|
+
|
33
|
+
#get login password from the console
|
34
|
+
print "Enter your fitbit password: "
|
35
|
+
system 'stty -echo'
|
36
|
+
password = $stdin.gets.chomp
|
37
|
+
system 'stty echo'
|
38
|
+
puts ""
|
39
|
+
|
40
|
+
#set agent to login fitbit
|
41
|
+
form.field_with(name: 'email').value = email
|
42
|
+
form.field_with(name: 'password').value = password
|
43
|
+
|
44
|
+
authed_page = form.click_button
|
45
|
+
|
46
|
+
#after login, authed_page has two pattern.
|
47
|
+
#1) you already have get a token
|
48
|
+
#2) you have never get a token
|
49
|
+
|
50
|
+
if %r%^#{ENV['FITBIT_REDIRECT_URL']}% =~ authed_page.uri.to_s then
|
51
|
+
# A token has been already gotten
|
52
|
+
redirect_page = authed_page
|
53
|
+
else
|
54
|
+
# A token has not been gotten
|
55
|
+
redirect_page = authed_page.form.click_button(authed_page.form.button_with(value: 'Allow'))
|
56
|
+
end
|
57
|
+
|
58
|
+
#parse authentication code query form rediret_page
|
59
|
+
code = redirect_page.uri.query.split('=')[1]
|
60
|
+
|
61
|
+
karaage_poster.get_fitbit_token(code)
|
62
|
+
|
63
|
+
puts ''
|
64
|
+
puts "/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_"
|
65
|
+
puts "Date #{date}: number of karaage you eat!: #{karaage_poster.get_karaage_count(date)}"
|
66
|
+
puts "/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_"
|
67
|
+
puts ''
|
68
|
+
|
69
|
+
puts "Posting https://karaage.click....."
|
70
|
+
|
71
|
+
karaage_poster.posting_number_of_karaage
|
72
|
+
|
73
|
+
puts "done!"
|
74
|
+
|
75
|
+
end
|
76
|
+
|
77
|
+
end
|
78
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module KaraagePosting
|
2
|
+
class FitbitKaraagePosting
|
3
|
+
# number of karaage you eat
|
4
|
+
# @return [Fixnum] number of karaage you eat
|
5
|
+
#
|
6
|
+
attr_reader :number_of_karaage
|
7
|
+
|
8
|
+
#
|
9
|
+
# How many karaage you eat that date.
|
10
|
+
# @params [String] the date you want to know how many karaage you eat
|
11
|
+
# @return [Fixnum] number of karaage
|
12
|
+
#
|
13
|
+
def get_karaage_count(date= Date.today.to_s)
|
14
|
+
|
15
|
+
@number_of_karaage = 0
|
16
|
+
response = @fitbit_token.get("/1/user/-/foods/log/date/#{date}.json" , {})
|
17
|
+
food_logs = JSON.parse response.body
|
18
|
+
@number_of_karaage = karaage_count(food_logs)
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
#
|
24
|
+
# count number of karaage you eat from fitbit_token response
|
25
|
+
# @params [Hash] json parsed response body of fitbit food logs
|
26
|
+
# @return [Fixnum] number of karaage
|
27
|
+
|
28
|
+
|
29
|
+
def karaage_count(food_logs)
|
30
|
+
food_logs["foods"].inject(0) do |k_sum,log|
|
31
|
+
k_sum += log["loggedFood"]["amount"] if "唐揚げ"== log["loggedFood"]["name"]
|
32
|
+
k_sum
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
module KaraagePosting
|
2
|
+
|
3
|
+
|
4
|
+
#
|
5
|
+
# KaraagePosting Class for Fitbit
|
6
|
+
#
|
7
|
+
class FitbitKaraagePosting
|
8
|
+
|
9
|
+
#
|
10
|
+
# initialize FitbitKaraage Posting.
|
11
|
+
#
|
12
|
+
def initialize
|
13
|
+
|
14
|
+
Dotenv.load("#{ENV['HOME']}/.fitbitenv")
|
15
|
+
|
16
|
+
if ENV["FITBIT_ID"] == nil || ENV["FITBIT_SECRET"]==nil || ENV["FITBIT_REDIRECT_URL"] == nil then
|
17
|
+
raise "There is no definitions for FITBIT enviroment variables.\n You must set ENV[FITBIT_ID], ENV['FITBIT_SECRET'], ENV['FITBIT_REDIRECT_URL']."
|
18
|
+
end
|
19
|
+
|
20
|
+
|
21
|
+
@fitbit_oauth_client = OAuth2::Client.new(ENV["FITBIT_ID"], ENV["FITBIT_SECRET"], :authorize_url =>'/oauth2/authorize',:token_url=>"/oauth2/token")
|
22
|
+
|
23
|
+
@base64_id_secret = Base64.encode64(@fitbit_oauth_client.id + ':' + @fitbit_oauth_client.secret)
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
#
|
28
|
+
# get the URI for Fitbit OAuth2.0 Authentication
|
29
|
+
# @return [String] URL for Fitbit OAuth2.0 Authentication
|
30
|
+
#
|
31
|
+
def get_fitbit_authorize_uri
|
32
|
+
scope = 'nutrition'
|
33
|
+
|
34
|
+
Dotenv.load "#{ENV['HOME']}/.fitbitenv"
|
35
|
+
@fitbit_oauth_client.site = "https://www.fitbit.com"
|
36
|
+
@fitbit_oauth_client.auth_code.authorize_url(:scope => scope,:redirect_uri => ENV['FITBIT_REDIRECT_URL'])
|
37
|
+
end
|
38
|
+
|
39
|
+
# get the Access Token for Fitbit API
|
40
|
+
# @params [String] Grant code for Fitbit API
|
41
|
+
#
|
42
|
+
def get_fitbit_token(code)
|
43
|
+
@fitbit_oauth_client.site = "https://api.fitbit.com"
|
44
|
+
@fitbit_token = @fitbit_oauth_client.auth_code.get_token(code,:redirect_uri => ENV['FITBIT_REDIRECT_URL'] ,:headers =>{'Authorization' => "Basic #{@base64_id_secret}",'Body' => "client_id=#{@fitbit_oauth_client.id}"})
|
45
|
+
end
|
46
|
+
|
47
|
+
#
|
48
|
+
# refresh the Access Token for Fitbit API
|
49
|
+
#
|
50
|
+
def refresh_fitbit_token
|
51
|
+
@fitbit_oauth_client.site = "https://api.fitbit.com"
|
52
|
+
@fitbit_token = @fitbit_token.refresh!(:headers =>{'Authorization' => "Basic #{@base64_id_secret}",'Body' => "client_id=#{@fitbit_oauth_client.id}"})
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module KaraagePosting
|
2
|
+
class FitbitKaraagePosting
|
3
|
+
|
4
|
+
#
|
5
|
+
# Posting number of karaage to Karaage.click.
|
6
|
+
#
|
7
|
+
|
8
|
+
def posting_number_of_karaage
|
9
|
+
agent = Mechanize.new('https://karaage.click/')
|
10
|
+
agent.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
11
|
+
|
12
|
+
agent.get('https://karaage.click/Karaages/Create?') do |page|
|
13
|
+
@number_of_karaage.times do
|
14
|
+
page.forms[0].submit
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
metadata
ADDED
@@ -0,0 +1,215 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: karaage_posting
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- tossh0095
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-07-21 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.10'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.10'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: pry
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: pry-byebug
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: yard
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: coveralls
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: oauth2
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '1.0'
|
118
|
+
type: :runtime
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '1.0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: mechanize
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '2.7'
|
132
|
+
type: :runtime
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '2.7'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: dotenv
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - "~>"
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '2.0'
|
146
|
+
type: :runtime
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - "~>"
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '2.0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: thor
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - "~>"
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0.19'
|
160
|
+
type: :runtime
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - "~>"
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0.19'
|
167
|
+
description: Posting number of karaages you eat to Karaage.click with life log service.
|
168
|
+
email:
|
169
|
+
- tossh0095@users.noreply.github.com
|
170
|
+
executables: []
|
171
|
+
extensions: []
|
172
|
+
extra_rdoc_files: []
|
173
|
+
files:
|
174
|
+
- ".coveralls.yml"
|
175
|
+
- ".gitignore"
|
176
|
+
- ".rspec"
|
177
|
+
- ".travis.yml"
|
178
|
+
- Gemfile
|
179
|
+
- LICENSE.txt
|
180
|
+
- README.md
|
181
|
+
- Rakefile
|
182
|
+
- bin/karaage_posting
|
183
|
+
- karaage_posting.gemspec
|
184
|
+
- lib/karaage_posting.rb
|
185
|
+
- lib/karaage_posting/fitbit_karaage_cli.rb
|
186
|
+
- lib/karaage_posting/fitbit_karaage_count.rb
|
187
|
+
- lib/karaage_posting/fitbit_karaage_oauth.rb
|
188
|
+
- lib/karaage_posting/fitbit_karaage_post.rb
|
189
|
+
- lib/karaage_posting/version.rb
|
190
|
+
homepage: https://github.com/tossh0095/karaage_posting
|
191
|
+
licenses:
|
192
|
+
- MIT
|
193
|
+
metadata: {}
|
194
|
+
post_install_message:
|
195
|
+
rdoc_options: []
|
196
|
+
require_paths:
|
197
|
+
- lib
|
198
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
199
|
+
requirements:
|
200
|
+
- - ">="
|
201
|
+
- !ruby/object:Gem::Version
|
202
|
+
version: '0'
|
203
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
204
|
+
requirements:
|
205
|
+
- - ">="
|
206
|
+
- !ruby/object:Gem::Version
|
207
|
+
version: '0'
|
208
|
+
requirements: []
|
209
|
+
rubyforge_project:
|
210
|
+
rubygems_version: 2.4.5
|
211
|
+
signing_key:
|
212
|
+
specification_version: 4
|
213
|
+
summary: Posting number of karaages you eat to Karaage.click with life log service.
|
214
|
+
test_files: []
|
215
|
+
has_rdoc:
|