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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 82d36d56f1a7b4aadbdf407ab6b7e712ba834901
4
- data.tar.gz: 23df30100a0a669d61be8401f2b7e68c3ea27515
3
+ metadata.gz: 3ac6dad00c2bdbed672ed5a8f4e6fa8535072d25
4
+ data.tar.gz: 00010024ac61044692801d3d25c1e4a2c9c8b18d
5
5
  SHA512:
6
- metadata.gz: b4bc3e0ca9c408f23e265e6f7d301c05a884dc82abc366c5deab031a875f92e44e5e05d24ce9fd8813c1e3729cb0f0d157e3d65e454f2862b67a1b8f349d1ab3
7
- data.tar.gz: 1a70475ac783a51e7e093aa917280f766606e09cb28f1deedc976f1134cac267a2f4fc9ae20b5b815eb1b9d1260e737e9aff64c0173a4fb42cc65be5e92c12f2
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.2)
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-api'
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'
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Freee
4
4
  module Api
5
- VERSION = '0.0.2'
5
+ VERSION = '0.0.3'
6
6
  end
7
7
  end
@@ -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
@@ -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
- @client.auth_code.get_token(code, redirect_uri: redirect_uri)
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
- @access_token.refresh! if @access_token.expired?
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.2
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-22 00:00:00.000000000 Z
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