meli 1.0.2 → 1.0.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/meli.rb +171 -148
  3. metadata +7 -7
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 34b4c1704dfbb46d28b30a4cd8e6ed122e32ae48
4
- data.tar.gz: 8c81eab7fc4d12e9110908539618e3f0200a723e
3
+ metadata.gz: 85035bfc6784b27072cb4d430c34d1807f358cfa
4
+ data.tar.gz: 963f24c0dba2828c226a1e180537f2db9d180c76
5
5
  SHA512:
6
- metadata.gz: d32dbfd73d768bc6878503637685fb0971060cb5439e763e59c203d86ba302dcd72b3072fa4f10799e42a0b7be58cad3c312d0b0bc557eaf29b1d25dd25136fe
7
- data.tar.gz: 3e8d013c78652724257eb16506c1163d913130d60007d8001c4596c2bfcef7a242003651f69292554bab0cbdd00a24183f94b8f169afaeff4abebb6b11d3789d
6
+ metadata.gz: 39f96436bfb2d8a404b1163fc80ac64c59c0216569f3f5692146f5255f84c72f5f88fea908bb4126f8f5e29c91b8b7ddd7c1c58a7d8cce10ae99378be3a5d4ea
7
+ data.tar.gz: 11868c7fa36b2ca2d59750e49a01f3a514843564bc18b8650beea34cf255d54dabea1efc4941514775b1ac75217dfbb8a201de96291769d7c164b9543b206958
data/lib/meli.rb CHANGED
@@ -1,160 +1,183 @@
1
1
  # encoding: UTF-8
2
+
2
3
  require 'rubygems'
4
+ require 'bundler/setup'
3
5
  require 'net/http'
4
6
  require 'net/https'
5
7
  require 'json'
6
8
  require 'uri'
7
9
  require 'yaml'
8
10
 
11
+ # This class is the actual library
9
12
  class Meli
10
- attr_accessor :access_token, :refresh_token
11
- attr_reader :secret, :app_id, :https
12
-
13
- config = YAML.load_file(File.expand_path(File.dirname(__FILE__) + "/config.yml"))
14
- SDK_VERSION = config["config"]["sdk_version"]
15
- API_ROOT_URL = config["config"]["api_root_url"]
16
- AUTH_URL = config["config"]["auth_url"]
17
- OAUTH_URL = config["config"]["oauth_url"]
18
-
19
- #constructor
20
- def initialize(app_id = nil, secret = nil, access_token = nil, refresh_token = nil)
21
- @access_token = access_token
22
- @refresh_token = refresh_token
23
- @app_id = app_id
24
- @secret = secret
25
- api_url = URI.parse API_ROOT_URL
26
- @https = Net::HTTP.new(api_url.host, api_url.port)
27
- @https.use_ssl = true
28
- @https.verify_mode = OpenSSL::SSL::VERIFY_PEER
29
- @https.ssl_version = :TLSv1
30
- end
31
-
32
- #AUTH METHODS
33
- def auth_url(redirect_URI)
34
- params = {:client_id => @app_id, :response_type => 'code', :redirect_uri => redirect_URI}
35
- url = "#{AUTH_URL}?#{to_url_params(params)}"
13
+ attr_accessor :access_token, :refresh_token
14
+ attr_reader :secret, :app_id, :https
15
+
16
+ config = YAML.load_file(
17
+ File.expand_path(File.dirname(__FILE__) + '/config.yml')
18
+ )
19
+ SDK_VERSION = config['config']['sdk_version']
20
+ API_ROOT_URL = config['config']['api_root_url']
21
+ AUTH_URL = config['config']['auth_url']
22
+ OAUTH_URL = config['config']['oauth_url']
23
+
24
+ # constructor
25
+ def initialize(
26
+ app_id = nil,
27
+ secret = nil,
28
+ access_token = nil,
29
+ refresh_token = nil
30
+ )
31
+ @access_token = access_token
32
+ @refresh_token = refresh_token
33
+ @app_id = app_id
34
+ @secret = secret
35
+ api_url = URI.parse API_ROOT_URL
36
+ @https = Net::HTTP.new(api_url.host, api_url.port)
37
+ @https.use_ssl = true
38
+ @https.verify_mode = OpenSSL::SSL::VERIFY_PEER
39
+ @https.ssl_version = :TLSv1
40
+ end
41
+
42
+ # AUTH METHODS
43
+ def auth_url(redirect_uri)
44
+ params = {
45
+ client_id: @app_id,
46
+ response_type: 'code',
47
+ redirect_uri: redirect_uri
48
+ }
49
+
50
+ url = "#{AUTH_URL}?#{to_url_params(params)}"
51
+ end
52
+
53
+ def authorize(code, redirect_uri)
54
+ params = {
55
+ grant_type: 'authorization_code',
56
+ client_id: @app_id,
57
+ client_secret: @secret,
58
+ code: code,
59
+ redirect_uri: redirect_uri
60
+ }
61
+
62
+ uri = make_path(OAUTH_URL, params)
63
+
64
+ req = Net::HTTP::Post.new(uri.path)
65
+ req['Accept'] = 'application/json'
66
+ req['User-Agent'] = SDK_VERSION
67
+ req['Content-Type'] = 'application/x-www-form-urlencoded'
68
+ req.set_form_data(params)
69
+ response = @https.request(req)
70
+
71
+ case response
72
+ when Net::HTTPSuccess
73
+ response_info = JSON.parse response.body
74
+ # convert hash keys to symbol
75
+ response_info = Hash[response_info.map { |k, v| [k.to_sym, v] }]
76
+
77
+ @access_token = response_info[:access_token]
78
+ @refresh_token = if response_info.key?(:refresh_token)
79
+ response_info[:refresh_token]
80
+ else
81
+ '' # offline_access not set up
82
+ end
83
+ @access_token
84
+ else
85
+ # response code isn't a 200; raise an exception
86
+ response.error!
36
87
  end
37
-
38
- def authorize(code, redirect_URI)
39
- params = { :grant_type => 'authorization_code', :client_id => @app_id, :client_secret => @secret, :code => code, :redirect_uri => redirect_URI}
40
-
41
- uri = make_path(OAUTH_URL, params)
42
-
43
- req = Net::HTTP::Post.new(uri.path)
44
- req['Accept'] = 'application/json'
45
- req['User-Agent'] = SDK_VERSION
46
- req['Content-Type'] = "application/x-www-form-urlencoded"
47
- req.set_form_data(params)
48
- response = @https.request(req)
49
-
50
- case response
51
- when Net::HTTPSuccess
52
- response_info = JSON.parse response.body
53
- #convert hash keys to symbol
54
- response_info = Hash[response_info.map{ |k, v| [k.to_sym, v] }]
55
-
56
- @access_token = response_info[:access_token]
57
- if response_info.has_key?(:refresh_token)
58
- @refresh_token = response_info[:refresh_token]
59
- else
60
- @refresh_token = '' # offline_access not set up
61
- end
62
- @access_token
63
- else
64
- # response code isn't a 200; raise an exception
65
- response.error!
66
- end
67
-
68
- end
69
-
70
- def get_refresh_token()
71
- if !@refresh_token.nil? and !@refresh_token.empty?
72
- params = {:grant_type => 'refresh_token', :client_id => @app_id, :client_secret => @secret, :refresh_token => @refresh_token}
73
-
74
- uri = make_path(OAUTH_URL, params)
75
-
76
- req = Net::HTTP::Post.new(uri.path)
77
- req['Accept'] = 'application/json'
78
- req['User-Agent'] = SDK_VERSION
79
- req['Content-Type'] = "application/x-www-form-urlencoded"
80
- req.set_form_data(params)
81
- response = @https.request(req)
82
-
83
- case response
84
- when Net::HTTPSuccess
85
- response_info = JSON.parse response.body
86
-
87
- #convert hash keys to symbol
88
- response_info = Hash[response_info.map{ |k, v| [k.to_sym, v] }]
89
-
90
- @access_token = response_info[:access_token]
91
- @refresh_token = response_info[:refresh_token]
92
- else
93
- # response code isn't a 200; raise an exception
94
- response.error!
95
- end
96
- else
97
- raise "Offline-Access is not allowed."
98
- end
88
+ end
89
+
90
+ def refresh_token
91
+ if !@refresh_token.nil? && !@refresh_token.empty?
92
+ params = {
93
+ grant_type: 'refresh_token',
94
+ client_id: @app_id,
95
+ client_secret: @secret,
96
+ refresh_token: @refresh_token
97
+ }
98
+
99
+ uri = make_path(OAUTH_URL, params)
100
+
101
+ req = Net::HTTP::Post.new(uri.path)
102
+ req['Accept'] = 'application/json'
103
+ req['User-Agent'] = SDK_VERSION
104
+ req['Content-Type'] = 'application/x-www-form-urlencoded'
105
+ req.set_form_data(params)
106
+ response = @https.request(req)
107
+
108
+ case response
109
+ when Net::HTTPSuccess
110
+ response_info = JSON.parse response.body
111
+
112
+ # convert hash keys to symbol
113
+ response_info = Hash[response_info.map { |k, v| [k.to_sym, v] }]
114
+
115
+ @access_token = response_info[:access_token]
116
+ @refresh_token = response_info[:refresh_token]
117
+ else
118
+ # response code isn't a 200; raise an exception
119
+ response.error!
120
+ end
121
+ else
122
+ raise 'Offline-Access is not allowed.'
99
123
  end
100
-
101
-
102
- #REQUEST METHODS
103
- def execute(req)
104
- req['Accept'] = 'application/json'
105
- req['User-Agent'] = SDK_VERSION
106
- req['Content-Type'] = 'application/json'
107
- response = @https.request(req)
108
- end
109
-
110
- def get(path, params = {})
111
- uri = make_path(path, params)
112
- req = Net::HTTP::Get.new("#{uri.path}?#{uri.query}")
113
- execute req
114
- end
115
-
116
- def post(path, body, params = {})
117
- uri = make_path(path, params)
118
- req = Net::HTTP::Post.new("#{uri.path}?#{uri.query}")
119
- req.set_form_data(params)
120
- req.body = body.to_json unless body.nil?
121
- execute req
124
+ end
125
+
126
+ # REQUEST METHODS
127
+ def execute(req)
128
+ req['Accept'] = 'application/json'
129
+ req['User-Agent'] = SDK_VERSION
130
+ req['Content-Type'] = 'application/json'
131
+ response = @https.request(req)
132
+ end
133
+
134
+ def get(path, params = {})
135
+ uri = make_path(path, params)
136
+ req = Net::HTTP::Get.new("#{uri.path}?#{uri.query}")
137
+ execute req
138
+ end
139
+
140
+ def post(path, body, params = {})
141
+ uri = make_path(path, params)
142
+ req = Net::HTTP::Post.new("#{uri.path}?#{uri.query}")
143
+ req.set_form_data(params)
144
+ req.body = body.to_json unless body.nil?
145
+ execute req
146
+ end
147
+
148
+ def put(path, body, params = {})
149
+ uri = make_path(path, params)
150
+ req = Net::HTTP::Put.new("#{uri.path}?#{uri.query}")
151
+ req.set_form_data(params)
152
+ req.body = body.to_json unless body.nil?
153
+ execute req
154
+ end
155
+
156
+ def delete(path, params = {})
157
+ uri = make_path(path, params)
158
+ req = Net::HTTP::Delete.new("#{uri.path}?#{uri.query}")
159
+ execute req
160
+ end
161
+
162
+ def options(path, params = {})
163
+ uri = make_path(path, params)
164
+ req = Net::HTTP::Options.new("#{uri.path}?#{uri.query}")
165
+ execute req
166
+ end
167
+
168
+ private
169
+
170
+ def to_url_params(params)
171
+ URI.escape(params.collect { |k, v| "#{k}=#{v}" }.join('&'))
172
+ end
173
+
174
+ def make_path(path, params = {})
175
+ # Making Path and add a leading / if not exist
176
+ unless path =~ /^http/
177
+ path = "/#{path}" unless path =~ %r{ /^\// }
178
+ path = "#{API_ROOT_URL}#{path}"
122
179
  end
123
-
124
- def put(path, body, params = {})
125
- uri = make_path(path, params)
126
- req = Net::HTTP::Put.new("#{uri.path}?#{uri.query}")
127
- req.set_form_data(params)
128
- req.body = body.to_json unless body.nil?
129
- execute req
130
- end
131
-
132
- def delete(path, params = {})
133
- uri = make_path(path, params)
134
- req = Net::HTTP::Delete.new("#{uri.path}?#{uri.query}")
135
- execute req
136
- end
137
-
138
- def options(path, params = {})
139
- uri = make_path(path, params)
140
- req = Net::HTTP::Options.new("#{uri.path}?#{uri.query}")
141
- execute req
142
- end
143
-
144
- private
145
- def to_url_params(params)
146
- URI.escape(params.collect{|k,v| "#{k}=#{v}"}.join('&'))
147
- end
148
-
149
- def make_path(path, params = {})
150
- # Making Path and add a leading / if not exist
151
- unless path =~ /^http/
152
- path = "/#{path}" unless path =~ /^\//
153
- path = "#{API_ROOT_URL}#{path}"
154
- end
155
- path = "#{path}?#{to_url_params(params)}" if params.keys.size > 0
156
- uri = URI.parse path
157
- end
158
-
159
-
160
- end #class
180
+ path = "#{path}?#{to_url_params(params)}" unless params.keys.empty?
181
+ uri = URI.parse path
182
+ end
183
+ end
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: meli
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.3.1
5
5
  platform: ruby
6
6
  authors:
7
- - Gastón Corrao
7
+ - Alfredo Bejarano
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-08 00:00:00.000000000 Z
11
+ date: 2016-04-11 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Gem for accesing MercadoLibre API
14
- email: gaston.corrao@mercadolibre.com
14
+ email: alfredo.corona@mercadolibre.com.mx
15
15
  executables: []
16
16
  extensions: []
17
17
  extra_rdoc_files: []
@@ -20,7 +20,7 @@ files:
20
20
  - lib/meli.rb
21
21
  homepage: http://developers.mercadolibre.com/ruby-sdk/
22
22
  licenses:
23
- - ''
23
+ - MIT
24
24
  metadata: {}
25
25
  post_install_message:
26
26
  rdoc_options: []
@@ -28,7 +28,7 @@ require_paths:
28
28
  - lib
29
29
  required_ruby_version: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '2.2'
34
34
  required_rubygems_version: !ruby/object:Gem::Requirement
@@ -38,7 +38,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
38
38
  version: '0'
39
39
  requirements: []
40
40
  rubyforge_project:
41
- rubygems_version: 2.4.5.1
41
+ rubygems_version: 2.6.2
42
42
  signing_key:
43
43
  specification_version: 4
44
44
  summary: meli