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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: dd1f06c3ed79a3dfab23b4c5457efa992f47fa1e
4
- data.tar.gz: 1e883c51f91e47e2ad0ea99ed8e436c6be9f04a9
3
+ metadata.gz: 9468caf19b1a4fe8ab14c28c5b1af9b03023e66f
4
+ data.tar.gz: 04b14306c5355423d6f1725c00edb5d95d98c572
5
5
  SHA512:
6
- metadata.gz: cfc1f3653130d3621ca580c6dcc17d02d1b9ccc5467b26c13a622b74cdec9da44eceb618141810f36d835a8dc857ca89665c2eba4f20476cf79726ea498ee0cf
7
- data.tar.gz: 0ed4054566485d9aae747f56cc48e2a2d39618c7e67f4330a505d73ac74d928fd64b2e880daf9d00fd00f5d9733a80eb75ba4ff4a71b1e5f6c2ae5a183c9bbda
6
+ metadata.gz: 50a5904d2a0f1533590ade81889dc18bbe347638a95529779d38daba92f1aee0f1f464a418b08247e17fbf101cdc26601d71d1c07b5c0b122e868332d6d9b49a
7
+ data.tar.gz: 2e77b6829dd3c6896c3290ffb86ea83cf28533f77ea166fe0d3460d48b47f566669baa72f1bc7b30fe879e825a8922e617df52097161b5310df3050e981f0fbc
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- squarespace (0.0.1)
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.12.1)
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 (~> 1.5)
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
- 1.16.1
70
+ 2.0.1
@@ -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
- @logger.level = options.delete('log_level') || 'INFO'
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
- Order.new(JSON.parse(order_response.body))
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
- end
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
@@ -1,3 +1,3 @@
1
1
  module Squarespace
2
- VERSION = '0.0.3'
2
+ VERSION = '0.0.4'
3
3
  end
@@ -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)
@@ -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", "~> 1.5"
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.0'
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.3
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: 2018-01-09 00:00:00.000000000 Z
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: '1.5'
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: '1.5'
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.0
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.5.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