freee-api 0.0.2 → 0.0.3

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
  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