mercadolibre 1.8.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (32) hide show
  1. checksums.yaml +4 -4
  2. data/lib/mercadolibre.rb +20 -7
  3. data/lib/mercadolibre/api.rb +18 -7
  4. data/lib/mercadolibre/core/apps.rb +17 -0
  5. data/lib/mercadolibre/core/bookmarks.rb +21 -0
  6. data/lib/mercadolibre/core/categories.rb +47 -0
  7. data/lib/mercadolibre/core/currencies.rb +18 -0
  8. data/lib/mercadolibre/core/deals.rb +3 -4
  9. data/lib/mercadolibre/core/feedbacks.rb +63 -0
  10. data/lib/mercadolibre/core/item_variations.rb +35 -0
  11. data/lib/mercadolibre/core/items.rb +87 -0
  12. data/lib/mercadolibre/core/listings.rb +43 -0
  13. data/lib/mercadolibre/core/{locations_and_currencies.rb → locations.rb} +7 -13
  14. data/lib/mercadolibre/core/messaging.rb +55 -0
  15. data/lib/mercadolibre/core/metrics.rb +53 -0
  16. data/lib/mercadolibre/core/money.rb +21 -0
  17. data/lib/mercadolibre/core/order_blacklist.rb +25 -0
  18. data/lib/mercadolibre/core/order_notes.rb +33 -0
  19. data/lib/mercadolibre/core/orders.rb +39 -0
  20. data/lib/mercadolibre/core/pictures.rb +33 -0
  21. data/lib/mercadolibre/core/projects.rb +42 -0
  22. data/lib/mercadolibre/core/question_blacklist.rb +27 -0
  23. data/lib/mercadolibre/core/{questions_and_answers.rb → questions.rb} +10 -31
  24. data/lib/mercadolibre/core/searching.rb +33 -0
  25. data/lib/mercadolibre/core/shipping.rb +6 -6
  26. data/lib/mercadolibre/core/{users_and_apps.rb → users.rb} +21 -23
  27. data/lib/mercadolibre/version.rb +1 -1
  28. metadata +22 -9
  29. data/lib/mercadolibre/core/categories_and_listings.rb +0 -59
  30. data/lib/mercadolibre/core/collections.rb +0 -10
  31. data/lib/mercadolibre/core/items_and_searches.rb +0 -153
  32. data/lib/mercadolibre/core/orders_and_feedback.rb +0 -202
@@ -18,16 +18,16 @@ module Mercadolibre
18
18
  get_request("/items/#{item_id}/shipping_options").body
19
19
  end
20
20
 
21
- def get_shipping_modes
22
- get_request("/sites/#{@site}/shipping_methods").body
21
+ def get_shipping_modes(site_id)
22
+ get_request("/sites/#{site_id}/shipping_methods").body
23
23
  end
24
24
 
25
- def get_shipping_services
26
- get_request("/sites/#{@site}/shipping_services").body
25
+ def get_shipping_services(site_id)
26
+ get_request("/sites/#{site_id}/shipping_services").body
27
27
  end
28
28
 
29
- def get_site_shipping_costs(attrs={})
30
- get_request("/sites/#{@site}/shipping_options", attrs).body
29
+ def get_site_shipping_costs(site_id, attrs={})
30
+ get_request("/sites/#{site_id}/shipping_options", attrs).body
31
31
  end
32
32
 
33
33
  def get_user_shipping_modes(user_id, attrs={})
@@ -1,14 +1,14 @@
1
1
  module Mercadolibre
2
2
  module Core
3
- module UsersAndApps
4
- def get_user(user_id)
5
- get_request("/users/#{user_id}").body
6
- end
7
-
3
+ module Users
8
4
  def get_users(user_ids)
9
5
  get_request('/users', { ids: user_ids.join(',') }).body
10
6
  end
11
7
 
8
+ def get_user(user_id)
9
+ get_request("/users/#{user_id}", { access_token: @access_token }).body
10
+ end
11
+
12
12
  def get_seller(nickname)
13
13
  response = search_items({ nickname: nickname, limit: 0 })
14
14
  if response.seller.present?
@@ -18,6 +18,14 @@ module Mercadolibre
18
18
  end
19
19
  end
20
20
 
21
+ def update_user(user_id, attrs)
22
+ payload = attrs.to_json
23
+
24
+ headers = { content_type: :json }
25
+
26
+ put_request("/users/#{user_id}?access_token=#{@access_token}", payload, headers).body
27
+ end
28
+
21
29
  def get_my_user
22
30
  get_request('/users/me', { access_token: @access_token }).body
23
31
  end
@@ -26,6 +34,10 @@ module Mercadolibre
26
34
  get_request("/users/#{user_id}/addresses", { access_token: @access_token }).body
27
35
  end
28
36
 
37
+ def get_user_accepted_payment_methods(user_id)
38
+ get_request("/users/#{user_id}/accepted_payment_methods").body
39
+ end
40
+
29
41
  def get_user_payment_methods(user_id)
30
42
  get_request("/users/#{user_id}/payment_methods", { access_token: @access_token }).body
31
43
  end
@@ -34,6 +46,10 @@ module Mercadolibre
34
46
  get_request("/users/#{user_id}/brands", { access_token: @access_token }).body
35
47
  end
36
48
 
49
+ def get_user_brand(user_id, brand_id)
50
+ get_request("/users/#{user_id}/brands/#{brand_id}", { access_token: @access_token }).body
51
+ end
52
+
37
53
  def get_user_promotion_packs(user_id, listing_type=nil, category_id=nil)
38
54
  filters = { access_token: @access_token }
39
55
 
@@ -67,24 +83,6 @@ module Mercadolibre
67
83
 
68
84
  get_request("/users/#{user_id}/available_listing_type/#{listing_type}", filters).body
69
85
  end
70
-
71
- def get_application_feeds
72
- get_request("/users/#{user_id}/applications/#{@app_key}", { access_token: @access_token }).body
73
- end
74
-
75
- def get_application_info
76
- get_request("/applications/#{@app_key}", { access_token: @access_token }).body
77
- end
78
-
79
- def get_user_accepted_payment_methods(user_id)
80
- get_request("/users/#{user_id}/accepted_payment_methods").body
81
- end
82
-
83
- def get_user_mercadopago_balance(user_id)
84
- # docs: http://developers.mercadolibre.com/es/saldo-de-la-cuenta
85
- params = { access_token: @access_token }
86
- get_request("/users/#{user_id}/mercadopago_account/balance", params).body
87
- end
88
86
  end
89
87
  end
90
88
  end
@@ -1,3 +1,3 @@
1
1
  module Mercadolibre
2
- VERSION = '1.8.0'
2
+ VERSION = '2.0.0'
3
3
  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: 1.8.0
4
+ version: 2.0.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: 2017-06-28 00:00:00.000000000 Z
11
+ date: 2017-07-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -64,17 +64,30 @@ files:
64
64
  - README.md
65
65
  - lib/mercadolibre.rb
66
66
  - lib/mercadolibre/api.rb
67
- - lib/mercadolibre/core/categories_and_listings.rb
68
- - lib/mercadolibre/core/collections.rb
67
+ - lib/mercadolibre/core/apps.rb
68
+ - lib/mercadolibre/core/bookmarks.rb
69
+ - lib/mercadolibre/core/categories.rb
70
+ - lib/mercadolibre/core/currencies.rb
69
71
  - lib/mercadolibre/core/deals.rb
70
- - lib/mercadolibre/core/items_and_searches.rb
71
- - lib/mercadolibre/core/locations_and_currencies.rb
72
+ - lib/mercadolibre/core/feedbacks.rb
73
+ - lib/mercadolibre/core/item_variations.rb
74
+ - lib/mercadolibre/core/items.rb
75
+ - lib/mercadolibre/core/listings.rb
76
+ - lib/mercadolibre/core/locations.rb
77
+ - lib/mercadolibre/core/messaging.rb
72
78
  - lib/mercadolibre/core/metrics.rb
79
+ - lib/mercadolibre/core/money.rb
73
80
  - lib/mercadolibre/core/oauth.rb
74
- - lib/mercadolibre/core/orders_and_feedback.rb
75
- - lib/mercadolibre/core/questions_and_answers.rb
81
+ - lib/mercadolibre/core/order_blacklist.rb
82
+ - lib/mercadolibre/core/order_notes.rb
83
+ - lib/mercadolibre/core/orders.rb
84
+ - lib/mercadolibre/core/pictures.rb
85
+ - lib/mercadolibre/core/projects.rb
86
+ - lib/mercadolibre/core/question_blacklist.rb
87
+ - lib/mercadolibre/core/questions.rb
88
+ - lib/mercadolibre/core/searching.rb
76
89
  - lib/mercadolibre/core/shipping.rb
77
- - lib/mercadolibre/core/users_and_apps.rb
90
+ - lib/mercadolibre/core/users.rb
78
91
  - lib/mercadolibre/version.rb
79
92
  - lib/mercadopago/api.rb
80
93
  - lib/mercadopago/core/oauth.rb
@@ -1,59 +0,0 @@
1
- module Mercadolibre
2
- module Core
3
- module CategoriesAndListings
4
- def get_sites
5
- get_request('/sites').body
6
- end
7
-
8
- def get_site(site_id=nil)
9
- get_request("/sites/#{site_id}").body
10
- end
11
-
12
- def get_site_domain_info(domain)
13
- get_request("/site_domains/#{domain}").body
14
- end
15
-
16
- def get_listing_types(site_id=nil)
17
- site_id = @site if site_id.nil?
18
- get_request("/sites/#{site_id}/listing_types").body
19
- end
20
-
21
- def get_listing_exposures(site_id=nil)
22
- site_id = @site if site_id.nil?
23
- get_request("/sites/#{site_id}/listing_exposures").body
24
- end
25
-
26
- def get_listing_prices(filters={})
27
- get_request("/sites/#{site_id}/listing_prices", filters).body
28
- end
29
-
30
- def get_site_categories(site_id=nil)
31
- site_id = @site if site_id.nil?
32
- get_request("/sites/#{site_id}/categories").body
33
- end
34
-
35
- def get_site_category(category_id)
36
- get_request("/categories/#{category_id}").body
37
- end
38
-
39
- def get_category_attributes(category_id)
40
- get_request("/categories/#{category_id}/attributes").body
41
- end
42
-
43
- def get_category_prediction(title, site_id=nil)
44
- site_id = @site if site_id.nil?
45
- get_request("/sites/#{site_id}/category_predictor/predict", { title: title }).body
46
- end
47
-
48
- def get_category_promotion_packs(category_id)
49
- get_request("/categories/#{category_id}/classifieds_promotion_packs").body
50
- end
51
-
52
- def get_listing_type(listing_type_id, site_id=nil)
53
- site_id = @site if site_id.nil?
54
- get_request("/sites/#{site_id}/listing_types/#{listing_type_id}", { title: title }).body
55
- end
56
- end
57
- end
58
- end
59
-
@@ -1,10 +0,0 @@
1
- module Mercadolibre
2
- module Core
3
- module Collections
4
- def get_collection(collection_id)
5
- filters = { access_token: @access_token }
6
- get_request("/collections/#{collection_id}", filters).body
7
- end
8
- end
9
- end
10
- end
@@ -1,153 +0,0 @@
1
- module Mercadolibre
2
- module Core
3
- module ItemsAndSearches
4
- def get_my_item_ids(filters={})
5
- user_id = get_my_user.id
6
-
7
- filters.merge!({ access_token: @access_token, limit: 50, offset: 0 })
8
-
9
- get_request("/users/#{user_id}/items/search", filters).body
10
- end
11
-
12
- def get_item_ids(filters={})
13
- get_request("/sites/#{@site}/search", filters).body
14
- end
15
-
16
- def search_items(filters={})
17
- get_request("/sites/#{@site}/search", filters).body
18
- end
19
-
20
- def get_item(item_id, attrs={})
21
- get_request("/items/#{item_id}", attrs).body
22
- end
23
-
24
- def get_item_visits(item_ids)
25
- if item_ids.is_a? Array
26
- result = { }
27
-
28
- item_ids.each_slice(50) do |ids_group|
29
- filters = { ids: ids_group.join(',') }
30
- result.merge!(get_request('/visits/items', filters, { api_response_kind: 'hash' }).body)
31
- end
32
-
33
- result
34
- else
35
- filters = { ids: ids_group.join(',') }
36
- get_request('/visits/items', filters, { api_response_kind: 'hash' }).body[item_ids]
37
- end
38
- end
39
-
40
- def get_item_description(item_id)
41
- get_request("/items/#{item_id}/description").body
42
- end
43
-
44
- def get_item_descriptions(item_id)
45
- get_request("/items/#{item_id}/descriptions").body
46
- end
47
-
48
- def get_item_available_upgrades(item_id)
49
- get_request("/items/#{item_id}/available_upgrades?access_token=@access_token").body
50
- end
51
-
52
- def get_search_url(site_id, q)
53
- get_request("/sites/#{site_id}/searchUrl?q=#{q}").body.url
54
- end
55
-
56
- def get_hot_items(site_id, category_id, limit=15)
57
- get_request("/sites/#{site_id}/hot_items/search?category=#{category_id}&limit=#{limit}").body
58
- end
59
-
60
- def get_featured_items(site_id, pool_id)
61
- get_request("/sites/#{site_id}/featured_items/#{pool_id}").body
62
- end
63
-
64
- def get_site_trends(site_id, category_id=nil)
65
- if category_id.present?
66
- params = { category: category_id }
67
- else
68
- params = { }
69
- end
70
-
71
- get_request("/sites/#{site_id}/trends/search", params).body
72
- end
73
-
74
- def item_valid?(attribs)
75
- payload = attribs.to_json
76
-
77
- headers = { content_type: :json }
78
-
79
- result = post_request("/items/validate?access_token=#{@access_token}", payload, headers)
80
-
81
- (result.status_code.to_s == '204')
82
- end
83
-
84
- def create_item(attribs)
85
- payload = attribs.to_json
86
-
87
- headers = { content_type: :json }
88
-
89
- post_request("/items?access_token=#{@access_token}", payload, headers).body
90
- end
91
-
92
- def relist_item(item_id, price, quantity, listing_type_id)
93
- payload = { price: price, quantity: quantity, listing_type_id: listing_type_id }.to_json
94
-
95
- headers = { content_type: :json, accept: :json }
96
-
97
- post_request("/items/#{item_id}/relist?access_token=#{@access_token}", payload, headers).body
98
- end
99
-
100
- def update_item_fields(item_id, attribs)
101
- payload = attribs.to_json
102
-
103
- headers = { content_type: :json, accept: :json }
104
-
105
- put_request("/items/#{item_id}?access_token=#{@access_token}", payload, headers).body
106
- end
107
-
108
- def update_item_listing_type(item_id, listing_type_id)
109
- payload = { id: listing_type_id }.to_json
110
-
111
- headers = { content_type: :json, accept: :json }
112
-
113
- post_request("/items/#{item_id}/listing_type?access_token=#{@access_token}", payload, headers).body
114
- end
115
-
116
- def add_item_description(item_id, text)
117
- payload = { text: text }.to_json
118
-
119
- headers = { content_type: :json, accept: :json }
120
-
121
- post_request("/items/#{item_id}/descriptions?access_token=#{@access_token}", payload, headers).body
122
- end
123
-
124
- def update_item_attributes(item_id, attrs)
125
- payload = attrs.to_json
126
-
127
- headers = { content_type: :json, accept: :json }
128
-
129
- put_request("/items/#{item_id}?access_token=#{@access_token}", payload, headers).status_code == 200
130
- end
131
-
132
- def delete_item_attributes(item_id, attr_list)
133
- payload = attr_list.map { |x| { id: x } }.to_json
134
-
135
- headers = { content_type: :json, accept: :json }
136
-
137
- put_request("/items/#{item_id}?access_token=#{@access_token}", payload, headers).status_code == 200
138
- end
139
-
140
- def update_item_identifiers(item_id, attrs)
141
- payload = attrs.to_json
142
-
143
- headers = { content_type: :json }
144
-
145
- put_request("/items/#{item_id}/product_identifiers?access_token=#{@access_token}", payload, headers).status_code == 200
146
- end
147
-
148
- def get_item_identifiers(item_id)
149
- get_request("/items/#{item_id}/product_identifiers").body
150
- end
151
- end
152
- end
153
- end
@@ -1,202 +0,0 @@
1
- module Mercadolibre
2
- module Core
3
- module OrdersAndFeedback
4
- def search_archived_orders(filters={})
5
- filters.merge!({
6
- seller: get_my_user.id,
7
- access_token: @access_token
8
- })
9
-
10
- get_request('/orders/search/archived', filters).body
11
- end
12
-
13
- def search_pending_orders(filters={})
14
- filters.merge!({
15
- seller: get_my_user.id,
16
- access_token: @access_token
17
- })
18
-
19
- get_request('/orders/search/pending', filters).body
20
- end
21
-
22
- def search_orders(filters={})
23
- filters.merge!({
24
- seller: get_my_user.id,
25
- access_token: @access_token
26
- })
27
-
28
- get_request('/orders/search', filters).body
29
- end
30
-
31
- def get_order(order_id)
32
- filters = { access_token: @access_token }
33
- get_request("/orders/#{order_id}", filters).body
34
- end
35
-
36
- def get_order_notes(order_id)
37
- filters = { access_token: @access_token }
38
- get_request("/orders/#{order_id}/notes", filters).body
39
- end
40
-
41
- def create_order_note(order_id, text)
42
- payload = { note: text }.to_json
43
-
44
- headers = { content_type: :json, accept: :json }
45
-
46
- result = post_request("/orders/#{order_id}/notes?access_token=#{@access_token}", payload, headers)
47
- result.body.note
48
- end
49
-
50
- def update_order_note(order_id, note_id, text)
51
- payload = { note: text }.to_json
52
-
53
- headers = { content_type: :json, accept: :json }
54
-
55
- result = put_request("/orders/#{order_id}/notes/#{note_id}?access_token=#{@access_token}", payload, headers)
56
- result.body.note
57
- end
58
-
59
- def delete_order_note(order_id, note_id)
60
- result = delete_request("/orders/#{order_id}/notes/#{note_id}?access_token=#{@access_token}")
61
- result.status_code == 200
62
- end
63
-
64
- def get_order_feedbacks(order_id)
65
- filters = { version: '3.0', access_token: @access_token }
66
-
67
- get_request("/orders/#{order_id}/feedback", filters).body
68
- end
69
-
70
- def get_order_buyer_feedback(order_id)
71
- filters = { version: '3.0', access_token: @access_token }
72
-
73
- get_request("/orders/#{order_id}/feedback/purchase", filters).body
74
- end
75
-
76
- def get_order_seller_feedback(order_id)
77
- filters = { version: '3.0', access_token: @access_token }
78
-
79
- get_request("/orders/#{order_id}/feedback/sale", filters).body
80
- end
81
-
82
- def create_order_feedback(order_id, feedback_data)
83
- payload = feedback_data.to_json
84
-
85
- headers = { content_type: :json }
86
-
87
- post_request("/orders/#{order_id}/feedback?version=3.0&access_token=#{@access_token}", payload, headers).body
88
- end
89
-
90
- def change_order_seller_feedback(order_id, kind, feedback_data)
91
- payload = feedback_data.to_json
92
-
93
- headers = { content_type: :json }
94
-
95
- put_request("/orders/#{order_id}/feedback/sale?version=3.0&access_token=#{@access_token}", payload, headers).body
96
- end
97
-
98
- def change_order_buyer_feedback(order_id, kind, feedback_data)
99
- payload = feedback_data.to_json
100
-
101
- headers = { content_type: :json }
102
-
103
- put_request("/orders/#{order_id}/feedback/purchase?version=3.0&access_token=#{@access_token}", payload, headers).body
104
- end
105
-
106
- def change_order_feedback(feedback_id, feedback_data)
107
- payload = feedback_data.to_json
108
-
109
- headers = { content_type: :json }
110
-
111
- put_request("/feedback/#{feedback_id}?version=3.0&access_token=#{@access_token}", payload, headers).body
112
- end
113
-
114
- def reply_order_feedback(feedback_id, text)
115
- payload = { reply: text }.to_json
116
-
117
- headers = { content_type: :json }
118
-
119
- post_request("/feedback/{feedback_id}/reply?version=3.0&access_token=#{@access_token}", payload, headers).body
120
- end
121
-
122
- def get_order_messages(order_id, filters={})
123
- filters.merge!({
124
- access_token: @access_token
125
- })
126
-
127
- get_request("/messages/orders/#{order_id}", filters).body
128
- end
129
-
130
- def get_order_message(message_id)
131
- params = { access_token: @access_token }
132
- get_request("/messages/#{message_id}", params).body
133
- end
134
-
135
- def create_order_message(order_id, user_from, user_to, content_type, message, attachments=[])
136
- if content_type == 'plain'
137
- message_data = { plain: message }
138
- elsif content_type == 'html'
139
- message_data = { html: message }
140
- else
141
- raise 'invalid content type! Allowed options: plain,html.'
142
- end
143
-
144
- payload = {
145
- from: { user_id: user_from },
146
- to: [{
147
- user_id: user_to,
148
- resource: 'orders',
149
- resource_id: order_id,
150
- site_id: @site
151
- }],
152
- text: message_data,
153
- attachments: attachments
154
- }.to_json
155
-
156
- headers = { content_type: :json }
157
-
158
- post_request("/messages?access_token=#{@access_token}&application_id=#{@app_key}", payload, headers).body
159
- end
160
-
161
- def create_attachment(path_to_file)
162
- payload = { file: File.new(path_to_file, 'rb') }
163
- post_request("/messages/attachments?access_token=#{@access_token}", payload).body
164
- end
165
-
166
- def get_attachment(attachment_id)
167
- params = { access_token: @access_token }
168
- get_request("/messages/attachments/#{attachment_id}", params, { api_response_kind: 'raw' }).body
169
- end
170
-
171
- def get_site_payment_methods(site_id)
172
- results = get_request("/sites/#{site_id}/payment_methods")
173
- results.body
174
- end
175
-
176
- def get_site_payment_method_info(site_id, payment_method_id)
177
- results = get_request("/sites/#{site_id}/payment_methods/#{payment_method_id}")
178
- results.body
179
- end
180
-
181
- def get_orders_blacklist(user_id)
182
- results = get_request("/users/#{user_id}/order_blacklist?access_token=#{@access_token}")
183
- results.body.map { |r| r.user.id }
184
- end
185
-
186
- def add_user_to_orders_blacklist(seller_id, user_id)
187
- payload = { user_id: user_id }.to_json
188
-
189
- headers = { content_type: :json }
190
-
191
- url = "/users/#{seller_id}/order_blacklist?access_token=#{@access_token}"
192
- post_request(url, payload, headers).status_code == 200
193
- end
194
-
195
- def remove_user_from_orders_blacklist(seller_id, user_id)
196
- url = "/users/#{seller_id}/order_blacklist/#{user_id}?access_token=#{@access_token}"
197
-
198
- delete_request(url).status_code == 200
199
- end
200
- end
201
- end
202
- end