mercadolibre 1.8.0 → 2.0.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.
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