easy_meli 0.4.0 → 0.5.0

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