freee-api 0.0.2 → 0.0.3
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/Gemfile.lock +3 -1
- data/README.md +9 -2
- data/freee-api.gemspec +1 -0
- data/lib/freee/api/version.rb +1 -1
- data/lib/freee/partners/client.rb +13 -1
- data/lib/freee/token/client.rb +42 -2
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3ac6dad00c2bdbed672ed5a8f4e6fa8535072d25
|
4
|
+
data.tar.gz: 00010024ac61044692801d3d25c1e4a2c9c8b18d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 963fc0b7ff8de81548e1cc4264c56efc189e731e983974a43300080073a0c7df14d16d06047289020aa03dc1f0a46ce61c80e589f0d321bb176f9711204cb007
|
7
|
+
data.tar.gz: 769e089ea72d5b0e10da3a332c25224b71b430d3988a0fc43ddd8258871ce74d56872e5f7e0eb2f0c94e8711fd191e71534959d467ba2256055dfafe7692d380
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
freee-api (0.0.
|
4
|
+
freee-api (0.0.3)
|
5
5
|
faraday (~> 0.12.2)
|
6
6
|
faraday_middleware (~> 0.12.2)
|
7
7
|
oauth2 (~> 1.4.0)
|
@@ -65,6 +65,7 @@ GEM
|
|
65
65
|
unicode-display_width (~> 1.0, >= 1.0.1)
|
66
66
|
ruby-progressbar (1.9.0)
|
67
67
|
unicode-display_width (1.4.0)
|
68
|
+
yard (0.9.15)
|
68
69
|
|
69
70
|
PLATFORMS
|
70
71
|
ruby
|
@@ -76,6 +77,7 @@ DEPENDENCIES
|
|
76
77
|
rake (~> 10.0)
|
77
78
|
rspec (~> 3.0)
|
78
79
|
rubocop (~> 0.58.1)
|
80
|
+
yard (~> 0.9.15)
|
79
81
|
|
80
82
|
BUNDLED WITH
|
81
83
|
1.16.3
|
data/README.md
CHANGED
@@ -10,7 +10,7 @@ freeeとの通信プロトコルはOAuth2を利用しています。
|
|
10
10
|
Add this line to your application's Gemfile:
|
11
11
|
|
12
12
|
```ruby
|
13
|
-
gem 'freee
|
13
|
+
gem 'freee/api'
|
14
14
|
```
|
15
15
|
|
16
16
|
And then execute:
|
@@ -23,7 +23,14 @@ Or install it yourself as:
|
|
23
23
|
|
24
24
|
## Usage
|
25
25
|
|
26
|
-
|
26
|
+
### 事前準備
|
27
|
+
|
28
|
+
freee APIを利用するためには、事前に利用するアプリケーションをfreeeに登録する必要があります。
|
29
|
+
開発者のアカウントで[会計freee](https://secure.freee.co.jp/users/login)にログインし、https://secure.freee.co.jp/oauth/applications にアクセスし、「+新しいアプリケーションを登録」をクリックします。
|
30
|
+
アプリケーションを登録することで表示されるアプリケーションIDとSecretが必要になります。
|
31
|
+
|
32
|
+
詳しくは以下をご覧ください。
|
33
|
+
[https://support.freee.co.jp/hc/ja/articles/115000145263-freee-API%E3%81%AE%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%83%88%E3%83%BC%E3%82%AF%E3%83%B3%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B#1](https://support.freee.co.jp/hc/ja/articles/115000145263-freee-API%E3%81%AE%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%83%88%E3%83%BC%E3%82%AF%E3%83%B3%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B#1)
|
27
34
|
|
28
35
|
## Development
|
29
36
|
|
data/freee-api.gemspec
CHANGED
@@ -27,6 +27,7 @@ Gem::Specification.new do |spec|
|
|
27
27
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
28
28
|
spec.add_development_dependency 'pry-byebug', '~> 3.6.0'
|
29
29
|
spec.add_development_dependency 'rubocop', '~> 0.58.1'
|
30
|
+
spec.add_development_dependency 'yard', '~> 0.9.15'
|
30
31
|
|
31
32
|
spec.add_dependency 'oauth2', '~> 1.4.0'
|
32
33
|
spec.add_dependency 'faraday', '~> 0.12.2'
|
data/lib/freee/api/version.rb
CHANGED
@@ -3,11 +3,14 @@
|
|
3
3
|
module Freee
|
4
4
|
module Api
|
5
5
|
class Partners
|
6
|
+
# Freee API URL
|
6
7
|
SITE = 'https://api.freee.co.jp'
|
7
8
|
SITE.freeze
|
9
|
+
# 取引先作成URL(POST)
|
8
10
|
POST = '/api/1/partners'
|
9
11
|
POST.freeze
|
10
12
|
|
13
|
+
# A new instance of HTTP Client.
|
11
14
|
def initialize
|
12
15
|
@client = Faraday.new(url: SITE) do |faraday|
|
13
16
|
faraday.request :json
|
@@ -16,12 +19,21 @@ module Freee
|
|
16
19
|
end
|
17
20
|
end
|
18
21
|
|
22
|
+
# 取引先の作成
|
23
|
+
# https://developer.freee.co.jp/docs/accounting/reference#operations-Partners-post_api_1_partners
|
24
|
+
# @param access_token [String] アクセストークン
|
25
|
+
# @param params [Hash] 新規作成用の取引先パラメータ
|
26
|
+
# @return [Hash] 取引先の結果
|
19
27
|
def create_partner(access_token, params)
|
20
28
|
@client.authorization :Bearer, access_token
|
21
|
-
@client.post do |req|
|
29
|
+
response = @client.post do |req|
|
22
30
|
req.url POST
|
23
31
|
req.body = params.to_json
|
24
32
|
end
|
33
|
+
case response.status
|
34
|
+
when 401
|
35
|
+
raise 'Unauthorized', response.body
|
36
|
+
end
|
25
37
|
end
|
26
38
|
end
|
27
39
|
end
|
data/lib/freee/token/client.rb
CHANGED
@@ -3,44 +3,84 @@
|
|
3
3
|
module Freee
|
4
4
|
module Api
|
5
5
|
class Token
|
6
|
+
# oauth-xx client(read only)
|
6
7
|
attr_reader :client
|
8
|
+
# Freee API URL
|
7
9
|
SITE = 'https://api.freee.co.jp'
|
8
10
|
SITE.freeze
|
11
|
+
# Freee 開発環境用認証コードURL
|
9
12
|
DEVELOPMENT_REDIRECT_URL = 'urn:ietf:wg:oauth:2.0:oob'
|
10
13
|
DEVELOPMENT_REDIRECT_URL.freeze
|
14
|
+
# Freee 認証コードURL
|
11
15
|
AUTHORIZE_URL = 'https://secure.freee.co.jp/oauth/authorize'
|
12
16
|
AUTHORIZE_URL.freeze
|
17
|
+
# Freee Token URL
|
13
18
|
TOKEN_URL = '/oauth/token'
|
14
19
|
TOKEN_URL.freeze
|
15
20
|
|
21
|
+
# A new instance of OAuth2 Client.
|
22
|
+
# @param app_id [String] Application ID
|
23
|
+
# @param secret [String] Secret
|
16
24
|
def initialize(app_id, secret)
|
17
25
|
options = {
|
18
26
|
site: SITE,
|
19
27
|
authorize_url: AUTHORIZE_URL,
|
20
28
|
token_url: TOKEN_URL
|
21
29
|
}
|
30
|
+
|
31
|
+
raise 'アプリケーションIDが入力されていません' if app_id.empty?
|
32
|
+
|
33
|
+
raise 'Secretが入力されていません' if secret.empty?
|
22
34
|
@client = OAuth2::Client.new(app_id, secret, options)
|
23
35
|
end
|
24
36
|
|
37
|
+
# 開発環境用に認証コード・アクセストークンのコールバックURLを生成
|
38
|
+
# @return [String] Freee 開発環境用認証コード・アクセストークン取得用URL
|
25
39
|
def development_authorize
|
26
40
|
@client.auth_code.authorize_url(redirect_uri: DEVELOPMENT_REDIRECT_URL)
|
27
41
|
end
|
28
42
|
|
43
|
+
# 本番環境用に認証コード・アクセストークンのコールバックURLを生成
|
44
|
+
# @param redirect_uri [String] redirect_url for Authentication Code
|
45
|
+
# @return [String] Freee 本番環境用認証コードURL
|
29
46
|
def authorize(redirect_uri)
|
47
|
+
raise '認証用コードを返すためのリダイレクトURLが指定されていません' if redirect_uri.empty?
|
30
48
|
@client.auth_code.authorize_url(redirect_uri: redirect_uri)
|
31
49
|
end
|
32
50
|
|
51
|
+
# アクセストークン関係のパラメータを取得
|
52
|
+
# @param code [String] Authentication Code
|
53
|
+
# @param redirect_uri [String] redirect_url for Access Token
|
54
|
+
# @return [Hash] アクセストークン
|
33
55
|
def get_access_token(code, redirect_uri)
|
34
|
-
|
56
|
+
raise '認証用コードが存在しません' if code.empty?
|
57
|
+
raise 'アクセストークンを返すためのリダイレクトURLが指定されていません' if redirect_uri.empty?
|
58
|
+
begin
|
59
|
+
@client.auth_code.get_token(code, redirect_uri: redirect_uri)
|
60
|
+
rescue OAuth2::Error
|
61
|
+
raise 'アクセストークンの取得に失敗しました。次の原因が考えられます。原因: 不明なクライアント、クライアント認証が含まれていない、認証コードが不正、認証コードが無効、リダイレクトURLが不正、別のクライアントに適用されている。'
|
62
|
+
end
|
35
63
|
end
|
36
64
|
|
65
|
+
# リフレッシュトークンからアクセストークンを再取得
|
66
|
+
# @param access_token [String] Access Token
|
67
|
+
# @param refresh_token [String] Refresh Token
|
68
|
+
# @param expires_at [Integer] アクセストークンの有効期限(UNIX TIME)
|
69
|
+
# @return [Hash] アクセストークン
|
37
70
|
def refresh_token(access_token, refresh_token, expires_at)
|
71
|
+
raise 'アクセストークンが存在しません' if access_token.empty?
|
72
|
+
raise 'アクセストークンの有効期限が指定されていません' if expires_at.nil?
|
73
|
+
raise 'リフレッシュトークンが存在しません' if refresh_token.empty?
|
38
74
|
params = {
|
39
75
|
refresh_token: refresh_token,
|
40
76
|
expires_at: expires_at
|
41
77
|
}
|
42
78
|
@access_token = OAuth2::AccessToken.new(@client, access_token, params)
|
43
|
-
|
79
|
+
begin
|
80
|
+
@access_token.refresh! if @access_token.expired?
|
81
|
+
rescue OAuth2::Error
|
82
|
+
raise 'アクセストークンの取得に失敗しました。次の原因が考えられます。原因: 不明なクライアント、アクセストークンが不正、リフレッシュトークンが不正、有効期限が不正。'
|
83
|
+
end
|
44
84
|
end
|
45
85
|
end
|
46
86
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: freee-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- himrock922
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-07-
|
11
|
+
date: 2018-07-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -80,6 +80,20 @@ dependencies:
|
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: 0.58.1
|
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.9.15
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 0.9.15
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
name: oauth2
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|