plenty_client 0.1.1 → 0.1.2
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/plenty_client.rb +5 -2
- data/lib/plenty_client/document/order.rb +4 -4
- data/lib/plenty_client/request.rb +21 -11
- data/lib/plenty_client/version.rb +1 -1
- data/plenty_client.gemspec +6 -5
- metadata +23 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3b1ce1f9899a6d120944ae078627fe676c3af95c773c3aa2c0a9d347a4727b33
|
4
|
+
data.tar.gz: c96480546c1ce74d997439685960918f9ceed35d2ad78fa403b105d3be0dfa99
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 63da84709428e75cc89b05079e5fcc81e8b083f5be250fe62c398232e4e073fb73b14f6c5cf122a1ebb7a5e2d8b61bedda96d53c6bd9e5b7a962e6e16951806e
|
7
|
+
data.tar.gz: f2bdee10c09c20eae6b332045b327db9fe22632931f5c6340396f7f956d889cdedcb6a6c49cff03c93b203b98eb6de3f41341008d3b6644e388d80365d7494bb
|
data/lib/plenty_client.rb
CHANGED
@@ -1,8 +1,11 @@
|
|
1
1
|
require 'json'
|
2
2
|
|
3
3
|
module PlentyClient
|
4
|
-
class
|
5
|
-
class
|
4
|
+
class ConnectionError < StandardError; end
|
5
|
+
class ClientError < ConnectionError; end
|
6
|
+
class RedirectionError < ConnectionError; end
|
7
|
+
class ServerError < ConnectionError; end
|
8
|
+
class ResponseError < ConnectionError; end
|
6
9
|
class NotFound < ResponseError; end
|
7
10
|
|
8
11
|
autoload :Config, 'plenty_client/config'
|
@@ -21,12 +21,12 @@ module PlentyClient
|
|
21
21
|
get(build_endpoint(DOWNLOAD_ORDER_DOCUMENTS_BY_TYPE, type_string: type_string), headers, &block)
|
22
22
|
end
|
23
23
|
|
24
|
-
def list(order_id,
|
25
|
-
get(build_endpoint(LIST_ORDER_DOCUMENTS, order: order_id,
|
24
|
+
def list(order_id, type_string = nil, headers = {}, &block)
|
25
|
+
get(build_endpoint(LIST_ORDER_DOCUMENTS, order: order_id, type_string: type_string), headers, &block)
|
26
26
|
end
|
27
27
|
|
28
|
-
def list_by_type(
|
29
|
-
get(build_endpoint(LIST_ORDER_DOCUMENTS_BY_TYPE,
|
28
|
+
def list_by_type(type_string = nil, headers = {}, &block)
|
29
|
+
get(build_endpoint(LIST_ORDER_DOCUMENTS_BY_TYPE, type_string: type_string), headers, &block)
|
30
30
|
end
|
31
31
|
|
32
32
|
def upload(order_id, type_string, body = {})
|
@@ -5,22 +5,16 @@ module PlentyClient
|
|
5
5
|
module Request
|
6
6
|
module ClassMethods
|
7
7
|
def request(http_method, path, params = {})
|
8
|
-
|
9
|
-
|
8
|
+
raise ArgumentError, "http_method or path is missing" if http_method.nil? || path.nil?
|
9
|
+
unless %w[post put patch delete get].include?(http_method.to_s)
|
10
|
+
raise ArgumentError, "unsupported http_method: #{http_method}"
|
11
|
+
end
|
10
12
|
|
11
13
|
login_check unless PlentyClient::Config.tokens_valid?
|
12
14
|
|
13
15
|
params = stringify_symbol_keys(params) if params.is_a?(Hash)
|
14
16
|
|
15
|
-
|
16
|
-
attempts.times do
|
17
|
-
begin
|
18
|
-
response = perform(http_method, path, params)
|
19
|
-
return response if response
|
20
|
-
rescue Faraday::ConnectionFailed => e
|
21
|
-
end
|
22
|
-
end
|
23
|
-
raise PlentyClient::AttemptsExceeded, "unable to get valid response after #{attempts} attempts"
|
17
|
+
perform(http_method, path, params)
|
24
18
|
end
|
25
19
|
|
26
20
|
def post(path, body = {})
|
@@ -84,11 +78,13 @@ module PlentyClient
|
|
84
78
|
logger.filter(/password=([^&]+)/, 'password=[FILTERED]')
|
85
79
|
end
|
86
80
|
end
|
81
|
+
faraday.request :retry, max: PlentyClient::Config.attempt_count
|
87
82
|
end
|
88
83
|
conn.adapter :typhoeus
|
89
84
|
verb = http_method.to_s.downcase
|
90
85
|
params = params.to_json unless %w[get delete].include?(verb)
|
91
86
|
response = conn.send(verb, base_url(path), params)
|
87
|
+
assert_success_status_code(response)
|
92
88
|
parse_body(response)
|
93
89
|
end
|
94
90
|
|
@@ -119,6 +115,7 @@ module PlentyClient
|
|
119
115
|
end
|
120
116
|
|
121
117
|
def parse_body(response)
|
118
|
+
return nil if response.body.strip == ""
|
122
119
|
content_type = response.env.response_headers['Content-Type']
|
123
120
|
case content_type
|
124
121
|
when %r{(?:application|text)/json}
|
@@ -129,6 +126,8 @@ module PlentyClient
|
|
129
126
|
json
|
130
127
|
when %r{application/pdf}
|
131
128
|
response.body
|
129
|
+
else
|
130
|
+
raise PlentyClient::ResponseError, "unsupported response Content-Type: #{content_type}"
|
132
131
|
end
|
133
132
|
rescue JSON::ParserError
|
134
133
|
raise PlentyClient::ResponseError, 'invalid response'
|
@@ -156,6 +155,17 @@ module PlentyClient
|
|
156
155
|
response.dig('error', 'message')
|
157
156
|
end
|
158
157
|
end
|
158
|
+
|
159
|
+
def assert_success_status_code(response)
|
160
|
+
case response.status
|
161
|
+
when 300..399
|
162
|
+
raise RedirectionError, "Invalid response: HTTP status: #{response.status}"
|
163
|
+
when 400..499
|
164
|
+
raise ClientError, "Invalid response: HTTP status: #{response.status}"
|
165
|
+
when 500..599
|
166
|
+
raise ServerError, "Invalid response: HTTP status: #{response.status}"
|
167
|
+
end
|
168
|
+
end
|
159
169
|
end
|
160
170
|
|
161
171
|
def self.included(base)
|
data/plenty_client.gemspec
CHANGED
@@ -20,14 +20,15 @@ Gem::Specification.new do |spec|
|
|
20
20
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
21
21
|
spec.require_paths = ['lib']
|
22
22
|
|
23
|
-
spec.add_development_dependency 'bundler', '~> 1.
|
24
|
-
spec.add_development_dependency 'rake', '~>
|
23
|
+
spec.add_development_dependency 'bundler', '~> 1.16'
|
24
|
+
spec.add_development_dependency 'rake', '~> 12.0'
|
25
25
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
26
26
|
spec.add_development_dependency 'webmock', '~> 3.0'
|
27
27
|
spec.add_development_dependency 'guard-rspec', '~> 4.7'
|
28
28
|
spec.add_development_dependency 'pry', '~> 0.11'
|
29
|
+
spec.add_development_dependency 'byebug'
|
29
30
|
|
30
|
-
spec.add_runtime_dependency 'json', '
|
31
|
-
spec.add_runtime_dependency 'faraday', '
|
32
|
-
spec.add_runtime_dependency 'typhoeus', '
|
31
|
+
spec.add_runtime_dependency 'json', '>= 1.8.0'
|
32
|
+
spec.add_runtime_dependency 'faraday', '>= 0.9'
|
33
|
+
spec.add_runtime_dependency 'typhoeus', '>= 1.3.0'
|
33
34
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: plenty_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dariusch Ochlast
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-01-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '1.
|
19
|
+
version: '1.16'
|
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.
|
26
|
+
version: '1.16'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '12.0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '12.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -95,12 +95,23 @@ dependencies:
|
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0.11'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
98
|
+
name: byebug
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- - "
|
101
|
+
- - ">="
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
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'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: json
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
104
115
|
- - ">="
|
105
116
|
- !ruby/object:Gem::Version
|
106
117
|
version: 1.8.0
|
@@ -108,9 +119,6 @@ dependencies:
|
|
108
119
|
prerelease: false
|
109
120
|
version_requirements: !ruby/object:Gem::Requirement
|
110
121
|
requirements:
|
111
|
-
- - "~>"
|
112
|
-
- !ruby/object:Gem::Version
|
113
|
-
version: '1.8'
|
114
122
|
- - ">="
|
115
123
|
- !ruby/object:Gem::Version
|
116
124
|
version: 1.8.0
|
@@ -118,23 +126,20 @@ dependencies:
|
|
118
126
|
name: faraday
|
119
127
|
requirement: !ruby/object:Gem::Requirement
|
120
128
|
requirements:
|
121
|
-
- - "
|
129
|
+
- - ">="
|
122
130
|
- !ruby/object:Gem::Version
|
123
131
|
version: '0.9'
|
124
132
|
type: :runtime
|
125
133
|
prerelease: false
|
126
134
|
version_requirements: !ruby/object:Gem::Requirement
|
127
135
|
requirements:
|
128
|
-
- - "
|
136
|
+
- - ">="
|
129
137
|
- !ruby/object:Gem::Version
|
130
138
|
version: '0.9'
|
131
139
|
- !ruby/object:Gem::Dependency
|
132
140
|
name: typhoeus
|
133
141
|
requirement: !ruby/object:Gem::Requirement
|
134
142
|
requirements:
|
135
|
-
- - "~>"
|
136
|
-
- !ruby/object:Gem::Version
|
137
|
-
version: '1.3'
|
138
143
|
- - ">="
|
139
144
|
- !ruby/object:Gem::Version
|
140
145
|
version: 1.3.0
|
@@ -142,9 +147,6 @@ dependencies:
|
|
142
147
|
prerelease: false
|
143
148
|
version_requirements: !ruby/object:Gem::Requirement
|
144
149
|
requirements:
|
145
|
-
- - "~>"
|
146
|
-
- !ruby/object:Gem::Version
|
147
|
-
version: '1.3'
|
148
150
|
- - ">="
|
149
151
|
- !ruby/object:Gem::Version
|
150
152
|
version: 1.3.0
|
@@ -317,7 +319,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
317
319
|
version: '0'
|
318
320
|
requirements: []
|
319
321
|
rubyforge_project:
|
320
|
-
rubygems_version: 2.7.
|
322
|
+
rubygems_version: 2.7.7
|
321
323
|
signing_key:
|
322
324
|
specification_version: 4
|
323
325
|
summary: This the first draft of a PlentyMarkets Rest Client for Ruby.
|