blomming_api 0.5.1 → 0.6.1
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 +4 -4
- data/lib/blomming_api/help.rb +1 -3
- data/lib/blomming_api/private_helpers.rb +21 -6
- data/lib/blomming_api/public_helpers.rb +44 -0
- data/lib/blomming_api/sell_endpoints.rb +60 -4
- data/lib/blomming_api/version.rb +1 -1
- metadata +3 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 6876fd023df19ccb0a6d8dde18e50b1dbe36bd30
|
|
4
|
+
data.tar.gz: 457d04eb4e71e806a98d2ea3e3cf39503c5c54ea
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 55b70b6d3118e54f1f615289ef0b268ee8d2312a232394e0ef03abf7e2d61bc7a58b8a5ea6718025aff0ffba007828bc1cc57a7d300769385c458ebfecb3bbbe
|
|
7
|
+
data.tar.gz: 0abc6e593f89c2752b0991fa0548e4cc1fa55f12c0550e60f918911d329133149786ed13d14bce63f26e3e76caff21e159b7304dd8637e04041fb3439b28cd26
|
data/lib/blomming_api/help.rb
CHANGED
|
@@ -5,9 +5,7 @@ module BlommingApi
|
|
|
5
5
|
AUTHORS = ["Giorgio Robino"]
|
|
6
6
|
EMAILS = ["giorgio.robino@gmail.com"]
|
|
7
7
|
SUMMARY = %q{www.blomming.com social commerce API's wrapper}
|
|
8
|
-
DESCRIPTION =
|
|
9
|
-
Supply a client access layer embedding authentication and communication details, \
|
|
10
|
-
simple API endpoints.}
|
|
8
|
+
DESCRIPTION = SUMMARY
|
|
11
9
|
HOMEPAGE = "https://github.com/solyaris/blomming_api"
|
|
12
10
|
|
|
13
11
|
def BlommingApi::about
|
|
@@ -60,7 +60,7 @@ module BlommingApi
|
|
|
60
60
|
rescue RestClient::Exception => e
|
|
61
61
|
|
|
62
62
|
if http_status_code_401? e
|
|
63
|
-
|
|
63
|
+
re_authenticate e
|
|
64
64
|
retry
|
|
65
65
|
|
|
66
66
|
elsif http_status_code_4xx? e
|
|
@@ -79,8 +79,12 @@ module BlommingApi
|
|
|
79
79
|
return unknown_error! e
|
|
80
80
|
|
|
81
81
|
else
|
|
82
|
-
#
|
|
83
|
-
|
|
82
|
+
#
|
|
83
|
+
# HTTP status 200:
|
|
84
|
+
# return
|
|
85
|
+
# nil if there are no data!
|
|
86
|
+
# data as a Ruby hash (loaded from JSON)
|
|
87
|
+
(json_data.empty? || json_data.nil?) ? nil : (MultiJson.load json_data)
|
|
84
88
|
end
|
|
85
89
|
end
|
|
86
90
|
|
|
@@ -108,14 +112,25 @@ module BlommingApi
|
|
|
108
112
|
#
|
|
109
113
|
# Errors managers
|
|
110
114
|
#
|
|
111
|
-
def
|
|
115
|
+
def re_authenticate(e)
|
|
112
116
|
STDERR.puts "#{Time.now}: HTTP status code: #{e.response.code}: #{e.response.body}. Invalid or expired token. Retry in #@retry_seconds seconds."
|
|
113
117
|
|
|
114
118
|
# sleep maybe useless here
|
|
115
119
|
sleep @retry_seconds
|
|
116
120
|
|
|
117
|
-
#
|
|
118
|
-
|
|
121
|
+
#
|
|
122
|
+
# Normal/expected behaviour with http status code == 401
|
|
123
|
+
# would be to authenticate with refresh token after the 401, so:
|
|
124
|
+
#
|
|
125
|
+
# authenticate :refresh
|
|
126
|
+
#
|
|
127
|
+
# but in production sometime authentication with refresh token
|
|
128
|
+
# after an initial 401 bring to dead-end (getting 401 permanently),
|
|
129
|
+
#
|
|
130
|
+
# so the agreed solution with Blomming tech team
|
|
131
|
+
# have been to authenticate again from from scratch:
|
|
132
|
+
#
|
|
133
|
+
authenticate :initialize
|
|
119
134
|
end
|
|
120
135
|
|
|
121
136
|
def server_error!(e)
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
# encoding: utf-8
|
|
2
|
+
require 'time'
|
|
2
3
|
require 'multi_json'
|
|
3
4
|
require 'rest_client'
|
|
4
5
|
|
|
@@ -101,6 +102,49 @@ module BlommingApi
|
|
|
101
102
|
return nil if array.nil?
|
|
102
103
|
return array.collect { |item| item[key_name] }
|
|
103
104
|
end
|
|
105
|
+
|
|
106
|
+
#
|
|
107
|
+
# TIME CONVERSIONS
|
|
108
|
+
#
|
|
109
|
+
|
|
110
|
+
#
|
|
111
|
+
# Convert a timestamp in ISO 8601 format to Time
|
|
112
|
+
#
|
|
113
|
+
# example:
|
|
114
|
+
#
|
|
115
|
+
# timestamp = '2014-01-14T15:17:42Z'
|
|
116
|
+
# to_time timestamp => 2014-01-14 15:17:42 UTC
|
|
117
|
+
#
|
|
118
|
+
def self.to_time (iso8601_timestamp)
|
|
119
|
+
Time.iso8601(iso8601_timestamp)
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
#
|
|
123
|
+
# Print timestamp from Time in UTC
|
|
124
|
+
# to local time in "European" timestamp format
|
|
125
|
+
#
|
|
126
|
+
# example:
|
|
127
|
+
#
|
|
128
|
+
# time = 2014-01-14 15:17:42 UTC
|
|
129
|
+
# to_eurolocal_timestamp time => => '14-01-2014 16:17:42'
|
|
130
|
+
#
|
|
131
|
+
def self.to_eurolocal_timestamp (time)
|
|
132
|
+
time.localtime if time.utc?
|
|
133
|
+
time.strftime "%d-%m-%Y %H:%M:%S"
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
#
|
|
138
|
+
# Convert a timestamp in ISO 8601 format to Time
|
|
139
|
+
#
|
|
140
|
+
# example:
|
|
141
|
+
#
|
|
142
|
+
# timestamp = '2014-01-14T15:17:42Z'
|
|
143
|
+
# to_eurolocal timestamp => '14-01-2014 16:17:42'
|
|
144
|
+
#
|
|
145
|
+
def self.to_eurolocal (iso8601_timestamp)
|
|
146
|
+
to_eurolocal_timestamp to_time iso8601_timestamp
|
|
147
|
+
end
|
|
104
148
|
|
|
105
149
|
end
|
|
106
150
|
end
|
|
@@ -244,9 +244,23 @@ module BlommingApi
|
|
|
244
244
|
#
|
|
245
245
|
# Create a new shop item
|
|
246
246
|
#
|
|
247
|
-
|
|
247
|
+
# example:
|
|
248
|
+
#
|
|
249
|
+
# item = { "category_ids": [101],
|
|
250
|
+
# "source_shipping_profile_id": "",
|
|
251
|
+
# "price": 8.50,
|
|
252
|
+
# "title": "An Item",
|
|
253
|
+
# "quantity": 1,
|
|
254
|
+
# "description": "New description",
|
|
255
|
+
# "published": true,
|
|
256
|
+
# "original_price": 10.00
|
|
257
|
+
# }
|
|
258
|
+
#
|
|
259
|
+
# blomming.sell_shop_item_create item
|
|
260
|
+
#
|
|
261
|
+
def sell_shop_item_create (item, params={})
|
|
248
262
|
url = api_url "/sell/shop/items/new"
|
|
249
|
-
load = MultiJson.dump
|
|
263
|
+
load = MultiJson.dump item
|
|
250
264
|
req = request_params(params)
|
|
251
265
|
|
|
252
266
|
feed_or_retry do
|
|
@@ -269,9 +283,24 @@ module BlommingApi
|
|
|
269
283
|
#
|
|
270
284
|
# Update some of the properties of the Item
|
|
271
285
|
#
|
|
272
|
-
|
|
286
|
+
# example:
|
|
287
|
+
#
|
|
288
|
+
# item = { "category_ids": [101],
|
|
289
|
+
# "source_shipping_profile_id": "",
|
|
290
|
+
# "price": 8.50,
|
|
291
|
+
# "title": "An Item",
|
|
292
|
+
# "quantity": 1,
|
|
293
|
+
# "description": "New description",
|
|
294
|
+
# "published": true,
|
|
295
|
+
# "original_price": 10.00
|
|
296
|
+
# }
|
|
297
|
+
#
|
|
298
|
+
# blomming.sell_shop_item_update 60034, item
|
|
299
|
+
#
|
|
300
|
+
#
|
|
301
|
+
def sell_shop_item_update (item_id, item, params={})
|
|
273
302
|
url = api_url "/sell/shop/items/#{item_id}"
|
|
274
|
-
load = MultiJson.dump
|
|
303
|
+
load = MultiJson.dump item
|
|
275
304
|
req = request_params(params)
|
|
276
305
|
|
|
277
306
|
feed_or_retry do
|
|
@@ -319,6 +348,33 @@ module BlommingApi
|
|
|
319
348
|
end
|
|
320
349
|
end
|
|
321
350
|
|
|
351
|
+
|
|
352
|
+
#
|
|
353
|
+
# Add an Item (:item_id) to a section (:section_name)
|
|
354
|
+
#
|
|
355
|
+
def sell_shop_item_section_add(item_id, section_name, params={})
|
|
356
|
+
url = api_url "/sell/shop/items/#{item_id}/add_section"
|
|
357
|
+
req = request_params({currency: @currency, locale: @locale}.merge(params))
|
|
358
|
+
load = MultiJson.dump section: section_name
|
|
359
|
+
|
|
360
|
+
feed_or_retry do
|
|
361
|
+
RestClient.post url, load, req
|
|
362
|
+
end
|
|
363
|
+
end
|
|
364
|
+
|
|
365
|
+
|
|
366
|
+
#
|
|
367
|
+
# Remove an Item (:item_id) from a section (:section_id)
|
|
368
|
+
#
|
|
369
|
+
def sell_shop_item_section_remove(item_id, section_id, params={})
|
|
370
|
+
url = api_url "/sell/shop/items/#{item_id}/remove_section/#{section_id}"
|
|
371
|
+
req = request_params({currency: @currency, locale: @locale}.merge(params))
|
|
372
|
+
|
|
373
|
+
feed_or_retry do
|
|
374
|
+
RestClient.delete url, req
|
|
375
|
+
end
|
|
376
|
+
end
|
|
377
|
+
|
|
322
378
|
#
|
|
323
379
|
# SELL
|
|
324
380
|
# SHOP_SECTIONS
|
data/lib/blomming_api/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: blomming_api
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.6.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Giorgio Robino
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2014-
|
|
11
|
+
date: 2014-02-04 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: method_source
|
|
@@ -94,9 +94,7 @@ dependencies:
|
|
|
94
94
|
- - '>='
|
|
95
95
|
- !ruby/object:Gem::Version
|
|
96
96
|
version: '0'
|
|
97
|
-
description:
|
|
98
|
-
access layer embedding authentication and communication details, \\ \n simple API
|
|
99
|
-
endpoints."
|
|
97
|
+
description: www.blomming.com social commerce API's wrapper
|
|
100
98
|
email:
|
|
101
99
|
- giorgio.robino@gmail.com
|
|
102
100
|
executables:
|