squarespace 0.0.3 → 0.0.4
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/Gemfile.lock +6 -4
- data/lib/squarespace/client.rb +58 -4
- data/lib/squarespace/version.rb +1 -1
- data/spec/squarespace/client_spec.rb +36 -0
- data/squarespace.gemspec +4 -2
- metadata +20 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9468caf19b1a4fe8ab14c28c5b1af9b03023e66f
|
4
|
+
data.tar.gz: 04b14306c5355423d6f1725c00edb5d95d98c572
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 50a5904d2a0f1533590ade81889dc18bbe347638a95529779d38daba92f1aee0f1f464a418b08247e17fbf101cdc26601d71d1c07b5c0b122e868332d6d9b49a
|
7
|
+
data.tar.gz: 2e77b6829dd3c6896c3290ffb86ea83cf28533f77ea166fe0d3460d48b47f566669baa72f1bc7b30fe879e825a8922e617df52097161b5310df3050e981f0fbc
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
squarespace (0.0.
|
4
|
+
squarespace (0.0.3)
|
5
5
|
faraday
|
6
6
|
json
|
7
7
|
|
@@ -15,7 +15,7 @@ GEM
|
|
15
15
|
safe_yaml (~> 1.0.0)
|
16
16
|
diff-lcs (1.3)
|
17
17
|
docile (1.1.5)
|
18
|
-
faraday (0.
|
18
|
+
faraday (0.15.4)
|
19
19
|
multipart-post (>= 1.2, < 3)
|
20
20
|
hashdiff (0.3.4)
|
21
21
|
json (2.1.0)
|
@@ -26,6 +26,7 @@ GEM
|
|
26
26
|
method_source (~> 0.8.1)
|
27
27
|
slop (~> 3.4)
|
28
28
|
public_suffix (2.0.5)
|
29
|
+
rb-readline (0.5.5)
|
29
30
|
rspec (3.6.0)
|
30
31
|
rspec-core (~> 3.6.0)
|
31
32
|
rspec-expectations (~> 3.6.0)
|
@@ -56,8 +57,9 @@ PLATFORMS
|
|
56
57
|
ruby
|
57
58
|
|
58
59
|
DEPENDENCIES
|
59
|
-
bundler (~>
|
60
|
+
bundler (~> 2.0)
|
60
61
|
pry
|
62
|
+
rb-readline
|
61
63
|
rspec
|
62
64
|
simplecov
|
63
65
|
squarespace!
|
@@ -65,4 +67,4 @@ DEPENDENCIES
|
|
65
67
|
webmock
|
66
68
|
|
67
69
|
BUNDLED WITH
|
68
|
-
|
70
|
+
2.0.1
|
data/lib/squarespace/client.rb
CHANGED
@@ -3,6 +3,7 @@ require 'json'
|
|
3
3
|
require 'logger'
|
4
4
|
require 'time'
|
5
5
|
|
6
|
+
|
6
7
|
module Squarespace
|
7
8
|
class Client
|
8
9
|
attr_reader :commerce_url, :logger
|
@@ -11,7 +12,11 @@ module Squarespace
|
|
11
12
|
|
12
13
|
def initialize(options={})
|
13
14
|
@logger = Logger.new(STDOUT)
|
14
|
-
|
15
|
+
if ENV['LOG_LEVEL'].nil?
|
16
|
+
@logger.level = options.delete('log_level') || 'INFO'
|
17
|
+
else
|
18
|
+
@logger.level = ENV['LOG_LEVEL']
|
19
|
+
end
|
15
20
|
@config = Squarespace::Config.new(options)
|
16
21
|
@commerce_url = "#{@config.api_url}/#{COMMERCE_API_VERSION}/commerce/orders"
|
17
22
|
end
|
@@ -26,13 +31,44 @@ module Squarespace
|
|
26
31
|
if fulfillment_status.nil?
|
27
32
|
order_response = commerce_request('get')
|
28
33
|
else
|
29
|
-
# binding.pry
|
30
34
|
order_response = commerce_request('get', '', {},
|
31
35
|
{"fulfillmentStatus"=>fulfillment_status.upcase})
|
32
36
|
end
|
33
37
|
|
34
38
|
logger.debug("Order response: #{order_response.body}")
|
35
|
-
|
39
|
+
check_response_status(order_response.status)
|
40
|
+
parsed_body = parse_commerce_response_body(order_response.body)
|
41
|
+
|
42
|
+
Order.new(parsed_body)
|
43
|
+
end
|
44
|
+
|
45
|
+
def parse_commerce_response_body(body)
|
46
|
+
begin
|
47
|
+
parsed_response = JSON.parse(body)
|
48
|
+
rescue JSON::ParserError => e
|
49
|
+
logger.error("Error parsing response body as JSON: #{body}")
|
50
|
+
raise e
|
51
|
+
end
|
52
|
+
return parsed_response
|
53
|
+
end
|
54
|
+
|
55
|
+
def check_response_status(code)
|
56
|
+
case code
|
57
|
+
when 200
|
58
|
+
return code
|
59
|
+
when 400
|
60
|
+
raise Squarespace::Errors::BadRequest
|
61
|
+
when 401
|
62
|
+
raise Squarespace::Errors::Unauthorized
|
63
|
+
when 404
|
64
|
+
raise Squarespace::Errors::NotFound
|
65
|
+
when 405
|
66
|
+
raise Squarespace::Errors::MethodNotAllowed
|
67
|
+
when 429
|
68
|
+
raise Squarespace::Errors::TooManyRequests
|
69
|
+
else
|
70
|
+
return code
|
71
|
+
end
|
36
72
|
end
|
37
73
|
|
38
74
|
def get_pending_orders
|
@@ -104,4 +140,22 @@ module Squarespace
|
|
104
140
|
end
|
105
141
|
end
|
106
142
|
end
|
107
|
-
|
143
|
+
|
144
|
+
class Errors
|
145
|
+
class BadRequest < StandardError
|
146
|
+
;
|
147
|
+
end
|
148
|
+
class Unauthorized < StandardError
|
149
|
+
;
|
150
|
+
end
|
151
|
+
class NotFound < StandardError
|
152
|
+
;
|
153
|
+
end
|
154
|
+
class MethodNotAllowed < StandardError
|
155
|
+
;
|
156
|
+
end
|
157
|
+
class TooManyRequests < StandardError
|
158
|
+
;
|
159
|
+
end
|
160
|
+
end
|
161
|
+
end
|
data/lib/squarespace/version.rb
CHANGED
@@ -75,6 +75,42 @@ describe Squarespace::Client do
|
|
75
75
|
end
|
76
76
|
end
|
77
77
|
|
78
|
+
it 'parises the response body as json' do
|
79
|
+
valid_body = "{\"valid\":\"json\"}"
|
80
|
+
parsed_body = client.parse_commerce_response_body(valid_body)
|
81
|
+
|
82
|
+
expect(parsed_body['valid']).to eq 'json'
|
83
|
+
end
|
84
|
+
|
85
|
+
it 'errors gracefully when parising the response body as json' do
|
86
|
+
invalid_body = '{\"invalid\" \"json\"}'
|
87
|
+
expect{ client.parse_commerce_response_body(invalid_body) }.to raise_error(JSON::ParserError)
|
88
|
+
end
|
89
|
+
|
90
|
+
it 'checks the response code' do
|
91
|
+
expect{ client.check_response_status(200) }.not_to raise_error(Squarespace::Errors::BadRequest)
|
92
|
+
end
|
93
|
+
|
94
|
+
it 'checks the response code and raises when there is a bad request' do
|
95
|
+
expect{ client.check_response_status(400) }.to raise_error(Squarespace::Errors::BadRequest)
|
96
|
+
end
|
97
|
+
|
98
|
+
it 'checks the response code and raise an exception when there are authentication errors' do
|
99
|
+
expect{ client.check_response_status(401) }.to raise_error(Squarespace::Errors::Unauthorized)
|
100
|
+
end
|
101
|
+
|
102
|
+
it 'checks the response code and raises an exception when not found' do
|
103
|
+
expect{ client.check_response_status(404) }.to raise_error(Squarespace::Errors::NotFound)
|
104
|
+
end
|
105
|
+
|
106
|
+
it 'checks the response code and raises an exception when an incorrect method was called' do
|
107
|
+
expect{ client.check_response_status(405) }.to raise_error(Squarespace::Errors::MethodNotAllowed)
|
108
|
+
end
|
109
|
+
|
110
|
+
it 'checks the response code and raises when there have been too many requests' do
|
111
|
+
expect{ client.check_response_status(429) }.to raise_error(Squarespace::Errors::TooManyRequests)
|
112
|
+
end
|
113
|
+
|
78
114
|
it 'fulfill an order' do
|
79
115
|
Timecop.freeze
|
80
116
|
body_fixture = JSON.parse(load_fixture('spec/fixtures/fulfill_order_body.json'), symbolize_names: true)
|
data/squarespace.gemspec
CHANGED
@@ -19,14 +19,16 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
20
20
|
spec.require_paths = ["lib"]
|
21
21
|
|
22
|
-
spec.add_development_dependency "bundler", "~>
|
22
|
+
spec.add_development_dependency "bundler", "~> 2.0"
|
23
23
|
spec.add_development_dependency "rspec"
|
24
24
|
spec.add_development_dependency "webmock"
|
25
25
|
spec.add_development_dependency "simplecov"
|
26
26
|
spec.add_development_dependency "pry"
|
27
27
|
spec.add_development_dependency "timecop"
|
28
|
+
spec.add_development_dependency "rb-readline"
|
28
29
|
|
29
30
|
spec.add_dependency "faraday"
|
30
31
|
spec.add_dependency "json"
|
31
|
-
spec.required_ruby_version = '~> 2.4.
|
32
|
+
spec.required_ruby_version = '~> 2.4.1'
|
32
33
|
end
|
34
|
+
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: squarespace
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gabe Ochoa
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-02-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '2.0'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '2.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rspec
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -94,6 +94,20 @@ dependencies:
|
|
94
94
|
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rb-readline
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
97
111
|
- !ruby/object:Gem::Dependency
|
98
112
|
name: faraday
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -160,7 +174,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
160
174
|
requirements:
|
161
175
|
- - "~>"
|
162
176
|
- !ruby/object:Gem::Version
|
163
|
-
version: 2.4.
|
177
|
+
version: 2.4.1
|
164
178
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
165
179
|
requirements:
|
166
180
|
- - ">="
|
@@ -168,7 +182,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
168
182
|
version: '0'
|
169
183
|
requirements: []
|
170
184
|
rubyforge_project:
|
171
|
-
rubygems_version: 2.
|
185
|
+
rubygems_version: 2.6.11
|
172
186
|
signing_key:
|
173
187
|
specification_version: 4
|
174
188
|
summary: Ruby interface to the Squarespace API
|