easy_meli 0.4.0 → 0.5.0

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: ee793dc5802586adac55653bb44e8183f2903583fe2463e57d3f6ba6f8f87810
4
- data.tar.gz: bddc2f0e96a9d2080088af552aba50cdf02530d869d92837ddb8d1339a5450b0
3
+ metadata.gz: d5a3424202e135a649e069fb9381c26e7e6760d9e387821c3e7f2f0358ec4f58
4
+ data.tar.gz: f947be600fd5c1654b7c920c630f1e916edf58a0c8244c5d5a83def1a2fec288
5
5
  SHA512:
6
- metadata.gz: 301620aaaabac2777da9d129f043aca962af57c2e6c93138a4f75ed741a4ff05a977971e94352f611c80107a485f0bf0e6935f7ce2732a2f4470bfa950ad6606
7
- data.tar.gz: 4ef357f6574ca2883befdcfac864397cdc2c402adcc6bc81e5e3fde337e36254b48553b5e882f99011238027061611ba2be9a0d8c0af8aef400c2a6ede17eff0
6
+ metadata.gz: 0fb2a5a757c53a87aa5fa77a24a203ae65ab58ca7c979bba04a358df8dd78459e01395f36314c399b33beb15fc03d37b4945ff937c5b19b4281190e098d7910e
7
+ data.tar.gz: 76a41f9314e945a4ce0846f922d7fb3e9f2d0937a0f74094fc03b52927b105dfa48fb4cc7898f9baff6d850988f8a1d156ef105ebfd54607b498dbc688fd8372
@@ -0,0 +1,5 @@
1
+ # Changelog
2
+
3
+ ## V 0.5.0
4
+ - `self.api_client` Prevent access_token override when initialize together with a refresh_token.
5
+ - Raises a EasyMeli::TooManyRequestsError if a 429 response status is returned.
@@ -25,12 +25,12 @@ module EasyMeli
25
25
  EasyMeli::AuthorizationClient.create_token(code, redirect_uri, logger: logger)
26
26
  end
27
27
 
28
- def self.refresh_token(refresh_token, logger: nil)
29
- EasyMeli::AuthorizationClient.refresh_token(refresh_token, logger: logger)
28
+ def self.access_token(refresh_token, logger: nil)
29
+ EasyMeli::AuthorizationClient.access_token(refresh_token, logger: logger)
30
30
  end
31
31
 
32
32
  def self.api_client(access_token: nil, refresh_token: nil, logger: nil)
33
- access_token = self.refresh_token(refresh_token, logger: logger) if refresh_token
33
+ access_token ||= self.access_token(refresh_token, logger: logger) if refresh_token
34
34
  EasyMeli::ApiClient.new(access_token, logger: logger)
35
35
  end
36
36
  end
@@ -11,6 +11,10 @@ class EasyMeli::ApiClient
11
11
  'Malformed access_token' => 'Malformed access token'
12
12
  }
13
13
 
14
+ STATUS_ERRORS = {
15
+ 429 => EasyMeli::TooManyRequestsError
16
+ }
17
+
14
18
  base_uri API_ROOT_URL
15
19
  headers EasyMeli::DEFAULT_HEADERS
16
20
  format :json
@@ -47,6 +51,7 @@ class EasyMeli::ApiClient
47
51
  self.class.send(verb, path, params.merge(query)).tap do |response|
48
52
  logger&.log response
49
53
  check_authentication(response)
54
+ check_status(response)
50
55
  end
51
56
  end
52
57
 
@@ -65,4 +70,9 @@ class EasyMeli::ApiClient
65
70
  return if body.nil?
66
71
  body['error'].to_s.empty? ? body['message'] : body['error']
67
72
  end
73
+
74
+ def check_status(response)
75
+ status_error = STATUS_ERRORS[response.code]
76
+ raise status_error.new(response) if status_error
77
+ end
68
78
  end
@@ -35,7 +35,7 @@ class EasyMeli::AuthorizationClient
35
35
  params = {
36
36
  client_id: EasyMeli.configuration.application_id,
37
37
  response_type: 'code',
38
- redirect_uri: redirect_uri
38
+ redirect_uri: redirect_uri
39
39
  }
40
40
  HTTParty::Request.new(:get, country_auth_url(country_code), query: params).uri.to_s
41
41
  end
@@ -49,8 +49,8 @@ class EasyMeli::AuthorizationClient
49
49
  end
50
50
  end
51
51
 
52
- def self.refresh_token(refresh_token, logger: nil)
53
- response = self.new(logger: logger).refresh_token_with_response(refresh_token)
52
+ def self.access_token(refresh_token, logger: nil)
53
+ response = self.new(logger: logger).access_token_with_response(refresh_token)
54
54
  if response.success?
55
55
  response.to_h[EasyMeli::AuthorizationClient::ACCESS_TOKEN_KEY]
56
56
  else
@@ -67,7 +67,7 @@ class EasyMeli::AuthorizationClient
67
67
  post_auth(query_params)
68
68
  end
69
69
 
70
- def refresh_token_with_response(refresh_token)
70
+ def access_token_with_response(refresh_token)
71
71
  query_params = merge_auth_params(
72
72
  grant_type: 'refresh_token',
73
73
  refresh_token: refresh_token
@@ -84,7 +84,7 @@ class EasyMeli::AuthorizationClient
84
84
  end
85
85
 
86
86
  def self.country_auth_url(country_code)
87
- url = BASE_AUTH_URLS[country_code.to_s.upcase.to_sym] ||
87
+ url = BASE_AUTH_URLS[country_code.to_s.upcase.to_sym] ||
88
88
  (raise ArgumentError.new('%s is an invalid country code' % country_code))
89
89
  [url, AUTH_PATH].join
90
90
  end
@@ -95,4 +95,4 @@ class EasyMeli::AuthorizationClient
95
95
  client_secret: EasyMeli.configuration.secret_key
96
96
  )
97
97
  end
98
- end
98
+ end
@@ -9,4 +9,10 @@ module EasyMeli
9
9
  end
10
10
 
11
11
  class AuthenticationError < Error; end
12
+
13
+ class TooManyRequestsError < Error
14
+ def initialize(response)
15
+ super('Too many requests', response)
16
+ end
17
+ end
12
18
  end
@@ -1,3 +1,3 @@
1
1
  module EasyMeli
2
- VERSION = "0.4.0"
2
+ VERSION = "0.5.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: easy_meli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric Northam
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-05-19 00:00:00.000000000 Z
11
+ date: 2021-01-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -116,6 +116,7 @@ extensions: []
116
116
  extra_rdoc_files: []
117
117
  files:
118
118
  - ".gitignore"
119
+ - CHANGELOG.md
119
120
  - Gemfile
120
121
  - LICENSE.txt
121
122
  - README.md