squarespace 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
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