mercadolibre 0.10.0 → 0.11.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
  SHA1:
3
- metadata.gz: a7cc7e596b69b2408336ba8b92cf5d7b45c29216
4
- data.tar.gz: 27e728d43adfc57f3bc5d8654bfc2359e418c633
3
+ metadata.gz: f42c944710411a95b35f4f68b6f6fd73e27af798
4
+ data.tar.gz: ba9a023d3863c7b4a25e7b13ec04fe69593dc4b8
5
5
  SHA512:
6
- metadata.gz: 6722000d49073b73c0c6e7eb5438f542d86efbf0360a5468cae8fe627043286334408d1bb0f4665a55a71f9b1d6d19073a0a44b4f19ed74e10203a2430199295
7
- data.tar.gz: 6c3e087b6e94e95775c50014cf90c6ec35c303914d20f92e78d978408e8755af7e179b79f790610badd813a2d04c75602a34a65a4eb0a5d610ef19e9420bb019
6
+ metadata.gz: 380d8ba68825ba11195fa1af9dfcf3236fe421dabfe1aebc61a33154b14ca043d32d48a565a145e464b69ecb6dcef400ebeeb1cf2a8fbc77918ee50b34447f66
7
+ data.tar.gz: 1788c66f07db19a69fbe62a646f45cef3e3121895a8444423d8723306dc48ead7000a3b3e14f0a6df6c4a48d09512254f43dbe803bdba605b1aa3df740ac14c8
data/CHANGELOG.md CHANGED
@@ -193,3 +193,7 @@
193
193
  ## v0.10.0
194
194
 
195
195
  * Removed methods with no pagination
196
+
197
+ ## v0.11.0
198
+
199
+ * Added mercadopago
@@ -6,11 +6,11 @@ module Mercadolibre
6
6
  @app_key = args[:app_key]
7
7
  @app_secret = args[:app_secret]
8
8
  @callback_url = args[:callback_url]
9
- @site = args[:site]
10
9
  @access_token = args[:access_token]
11
10
  @endpoint_url = 'https://api.mercadolibre.com'
12
11
  @auth_url = 'https://auth.mercadolibre.com.ar'
13
12
  @debug = args[:debug]
13
+ @site = args[:site]
14
14
  end
15
15
 
16
16
  include Mercadolibre::Core::Auth
@@ -22,11 +22,9 @@ module Mercadolibre
22
22
 
23
23
  @access_token = response['access_token']
24
24
 
25
- Mercadolibre::Entity::Auth.new({
26
- access_token: @access_token,
27
- refresh_token: response['refresh_token'],
28
- expired_at: response['expires_in'].to_i.seconds.from_now
29
- })
25
+ Mercadolibre::Entity::Auth.new(response.merge({
26
+ expired_at: (Time.now + response['expires_in'].to_i)
27
+ }))
30
28
  end
31
29
 
32
30
  def update_token(refresh_token)
@@ -39,11 +37,9 @@ module Mercadolibre
39
37
 
40
38
  @access_token = response['access_token']
41
39
 
42
- Mercadolibre::Entity::Auth.new({
43
- access_token: @access_token,
44
- refresh_token: response['refresh_token'],
45
- expired_at: response['expires_in'].to_i.seconds.from_now
46
- })
40
+ Mercadolibre::Entity::Auth.new(response.merge({
41
+ expired_at: (Time.now + response['expires_in'].to_i)
42
+ }))
47
43
  end
48
44
  end
49
45
  end
@@ -2,7 +2,7 @@ module Mercadolibre
2
2
  module Entity
3
3
  class Auth
4
4
  def self.attr_list
5
- [:access_token, :refresh_token, :expired_at]
5
+ [:access_token, :refresh_token, :live_mode, :user_id, :token_type, :scope, :expires_in, :expired_at]
6
6
  end
7
7
 
8
8
  attr_reader *attr_list
@@ -1,3 +1,3 @@
1
1
  module Mercadolibre
2
- VERSION = "0.10.0"
2
+ VERSION = "0.11.0"
3
3
  end
data/lib/mercadolibre.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  require "mercadolibre/version"
2
2
 
3
- # entities
3
+ # mercadolibre -> entities
4
4
  require "mercadolibre/entity/address"
5
5
  require "mercadolibre/entity/address_agency"
6
6
  require "mercadolibre/entity/answer"
@@ -62,7 +62,7 @@ require "mercadolibre/entity/state"
62
62
  require "mercadolibre/entity/user"
63
63
  require "mercadolibre/entity/zip_code"
64
64
 
65
- # core
65
+ # mercadolibre -> core
66
66
  require "mercadolibre/core/auth"
67
67
  require "mercadolibre/core/categories_and_listings"
68
68
  require "mercadolibre/core/items_and_searches"
@@ -73,6 +73,13 @@ require "mercadolibre/core/questions"
73
73
  require "mercadolibre/core/users"
74
74
  require "mercadolibre/api"
75
75
 
76
+ # mercadopago -< entities
77
+ require "mercadopago/entity/auth"
78
+
79
+ # mercadopago -< core
80
+ require "mercadopago/core/auth"
81
+ require "mercadopago/api"
82
+
76
83
  # dependencies
77
84
  require 'rest-client'
78
85
  require 'singleton'
@@ -0,0 +1,80 @@
1
+ module Mercadopago
2
+ class Api
3
+ attr_accessor :access_token
4
+
5
+ def initialize(args={})
6
+ @app_key = args[:app_key]
7
+ @app_secret = args[:app_secret]
8
+ @callback_url = args[:callback_url]
9
+ @access_token = args[:access_token]
10
+ @endpoint_url = 'https://api.mercadopago.com'
11
+ @auth_url = 'https://auth.mercadolibre.com.ar'
12
+ @debug = args[:debug]
13
+ end
14
+
15
+ include Mercadopago::Core::Auth
16
+ include Mercadolibre::Core::Payments
17
+
18
+ private
19
+
20
+ def get_request(action, params={}, headers={})
21
+ begin
22
+ parse_response(RestClient.get("#{@endpoint_url}#{action}", {params: params}.merge(headers)))
23
+ rescue => e
24
+ parse_response(e.response)
25
+ end
26
+ end
27
+
28
+ def post_request(action, params={}, headers={})
29
+ begin
30
+ parse_response(RestClient.post("#{@endpoint_url}#{action}", params, headers))
31
+ rescue => e
32
+ parse_response(e.response)
33
+ end
34
+ end
35
+
36
+ def put_request(action, params={}, headers={})
37
+ begin
38
+ parse_response(RestClient.put("#{@endpoint_url}#{action}", params, headers))
39
+ rescue => e
40
+ parse_response(e.response)
41
+ end
42
+ end
43
+
44
+ def patch_request(action, params={}, headers={})
45
+ begin
46
+ parse_response(RestClient.patch("#{@endpoint_url}#{action}", params, headers))
47
+ rescue => e
48
+ parse_response(e.response)
49
+ end
50
+ end
51
+
52
+ def head_request(action, params={})
53
+ begin
54
+ parse_response(RestClient.head("#{@endpoint_url}#{action}", params))
55
+ rescue => e
56
+ parse_response(e.response)
57
+ end
58
+ end
59
+
60
+ def delete_request(action, params={})
61
+ begin
62
+ parse_response(RestClient.delete("#{@endpoint_url}#{action}", params))
63
+ rescue => e
64
+ parse_response(e.response)
65
+ end
66
+ end
67
+
68
+ def parse_response(response)
69
+ result = {
70
+ headers: response.headers,
71
+ body: (JSON.parse(response.body) rescue response.body),
72
+ status_code: response.code
73
+ }
74
+
75
+ p "DEBUG: #{result}" if @debug
76
+
77
+ result
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,65 @@
1
+ module Mercadopago
2
+ module Core
3
+ module Auth
4
+ def authenticate_url
5
+ get_attrs = {
6
+ response_type: 'code',
7
+ client_id: @app_key,
8
+ redirect_uri: CGI.escape(@callback_url)
9
+ }.map { |k,v| "#{k}=#{v}" }.join('&')
10
+
11
+ "#{@auth_url}/authorization?#{get_attrs}"
12
+ end
13
+
14
+ def authenticate(auth_code)
15
+ response = post_request('/oauth/token', {
16
+ grant_type: 'authorization_code',
17
+ client_id: @app_key,
18
+ client_secret: @app_secret,
19
+ code: auth_code,
20
+ redirect_uri: @callback_url
21
+ })[:body]
22
+
23
+ @access_token = response['access_token']
24
+
25
+ Mercadopago::Entity::Auth.new(response.merge({
26
+ expired_at: (Time.now + response['expires_in'].to_i)
27
+ }))
28
+ end
29
+
30
+ def update_token(refresh_token)
31
+ response = post_request('/oauth/token', {
32
+ grant_type: 'refresh_token',
33
+ client_id: @app_key,
34
+ client_secret: @app_secret,
35
+ refresh_token: refresh_token
36
+ })[:body]
37
+
38
+ @access_token = response['access_token']
39
+
40
+ Mercadopago::Entity::Auth.new(response.merge({
41
+ expired_at: (Time.now + response['expires_in'].to_i)
42
+ }))
43
+ end
44
+
45
+ def create_token
46
+ headers = {
47
+ content_type: 'application/x-www-form-urlencoded',
48
+ accept: :json
49
+ }
50
+
51
+ response = post_request('/oauth/token', {
52
+ grant_type: 'client_credentials',
53
+ client_id: @app_key,
54
+ client_secret: @app_secret
55
+ }, headers)[:body]
56
+
57
+ @access_token = response['access_token']
58
+
59
+ Mercadopago::Entity::Auth.new(response.merge({
60
+ expired_at: (Time.now + response['expires_in'].to_i)
61
+ }))
62
+ end
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,21 @@
1
+ module Mercadopago
2
+ module Entity
3
+ class Auth
4
+ def self.attr_list
5
+ [:access_token, :refresh_token, :live_mode, :user_id, :token_type, :scope, :expires_in, :expired_at]
6
+ end
7
+
8
+ attr_reader *attr_list
9
+
10
+ def initialize(attributes={})
11
+ attributes.each do |k, v|
12
+ self.send("#{k}=", v) if self.respond_to?(k)
13
+ end
14
+ end
15
+
16
+ private
17
+
18
+ attr_writer *attr_list
19
+ end
20
+ end
21
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mercadolibre
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0
4
+ version: 0.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matias Hick
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-09-20 00:00:00.000000000 Z
11
+ date: 2016-11-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -133,6 +133,9 @@ files:
133
133
  - lib/mercadolibre/entity/user.rb
134
134
  - lib/mercadolibre/entity/zip_code.rb
135
135
  - lib/mercadolibre/version.rb
136
+ - lib/mercadopago/api.rb
137
+ - lib/mercadopago/core/auth.rb
138
+ - lib/mercadopago/entity/auth.rb
136
139
  homepage: https://github.com/unformattmh/mercadolibre
137
140
  licenses:
138
141
  - MIT