shipping_easy 0.6.1 → 0.7.0
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/shipping_easy/configuration.rb +13 -2
- data/lib/shipping_easy/http/faraday_adapter.rb +14 -0
- data/lib/shipping_easy/http/request.rb +1 -1
- data/lib/shipping_easy/version.rb +1 -1
- data/shipping_easy.gemspec +2 -0
- data/spec/configuration_spec.rb +6 -1
- data/spec/http/faraday_adapter_spec.rb +18 -0
- data/spec/http/request_spec.rb +21 -1
- metadata +30 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5c62015eb66f896c021b5f30a2ba96f89dbc86cd
|
4
|
+
data.tar.gz: def4083bb09525e7b70b41273a04e34839870941
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 73254bc040b76b38f58f8579753674dddfc62b7a5e862a6e9c2dee25d699c097fd6a8ff23c82e300cde572a64a4c4e5631499a79eab2a60974658c6878f12207
|
7
|
+
data.tar.gz: a4a5a5c5f57a7a0642f143b9bb392534878d5546f3f8930794078941f2550116054be20f72230e25d96fc54238ebf280558baf98219d75beaf80eea7bc4c25dd
|
@@ -13,19 +13,30 @@
|
|
13
13
|
#
|
14
14
|
module ShippingEasy
|
15
15
|
class Configuration
|
16
|
+
LEGACY_URL = "https://app.shippingeasy.com"
|
17
|
+
DEFAULT_URL = "https://api.shippingeasy.com"
|
16
18
|
|
19
|
+
attr_reader :base_url
|
17
20
|
attr_accessor :api_key,
|
18
21
|
:api_secret,
|
19
22
|
:partner_api_key,
|
20
23
|
:partner_api_secret,
|
21
24
|
:api_version,
|
22
|
-
:base_url,
|
23
25
|
:http_adapter
|
24
26
|
|
25
27
|
# Creates a configuration object, setting the default attributes.
|
26
28
|
def initialize
|
27
29
|
@http_adapter = ShippingEasy::Http::FaradayAdapter
|
28
|
-
@base_url =
|
30
|
+
@base_url = DEFAULT_URL
|
31
|
+
end
|
32
|
+
|
33
|
+
def base_url=(val)
|
34
|
+
if val == LEGACY_URL
|
35
|
+
warn "Legacy URL detected, updating to api.shippingeasy.com"
|
36
|
+
@base_url = DEFAULT_URL
|
37
|
+
else
|
38
|
+
@base_url = val
|
39
|
+
end
|
29
40
|
end
|
30
41
|
end
|
31
42
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'faraday_middleware'
|
1
2
|
class ShippingEasy::Http::FaradayAdapter
|
2
3
|
|
3
4
|
extend Forwardable
|
@@ -30,8 +31,21 @@ class ShippingEasy::Http::FaradayAdapter
|
|
30
31
|
|
31
32
|
def connection
|
32
33
|
@connection ||= Faraday.new(url: base_url) do |faraday|
|
34
|
+
faraday.use FaradayMiddleware::FollowRedirects, limit: 3, standards_compliant: true
|
35
|
+
faraday.use CustomUserAgent, "shipping_easy-ruby/#{ShippingEasy::VERSION}"
|
33
36
|
faraday.adapter Faraday.default_adapter
|
34
37
|
end
|
35
38
|
end
|
39
|
+
|
40
|
+
class CustomUserAgent < Faraday::Middleware
|
41
|
+
def initialize(app, agent_string)
|
42
|
+
super(app)
|
43
|
+
@agent_string = agent_string
|
44
|
+
end
|
36
45
|
|
46
|
+
def call(env)
|
47
|
+
env[:request_headers]['User-Agent'] = @agent_string
|
48
|
+
@app.call(env)
|
49
|
+
end
|
50
|
+
end
|
37
51
|
end
|
@@ -5,7 +5,7 @@ class ShippingEasy::Http::Request
|
|
5
5
|
def initialize(options = {})
|
6
6
|
@http_method = options.fetch(:http_method, :get)
|
7
7
|
@params = options.fetch(:params, {})
|
8
|
-
@body = options
|
8
|
+
@body = options[:payload] && options[:payload].to_json
|
9
9
|
@relative_path = options.delete(:relative_path)
|
10
10
|
end
|
11
11
|
|
data/shipping_easy.gemspec
CHANGED
@@ -19,9 +19,11 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
21
|
spec.add_dependency('faraday', '>= 0.8.7')
|
22
|
+
spec.add_dependency('faraday_middleware', '>= 0.9.2')
|
22
23
|
spec.add_dependency('rack', ">= 1.4.5")
|
23
24
|
spec.add_dependency('json', "~> 1.8.0")
|
24
25
|
spec.add_development_dependency "bundler", "~> 1.3"
|
25
26
|
spec.add_development_dependency "rspec", "~> 3.0"
|
27
|
+
spec.add_development_dependency "webmock"
|
26
28
|
spec.add_development_dependency "rake"
|
27
29
|
end
|
data/spec/configuration_spec.rb
CHANGED
@@ -20,12 +20,17 @@ describe ShippingEasy::Configuration do
|
|
20
20
|
|
21
21
|
describe "base_url" do
|
22
22
|
it "gets set to a default" do
|
23
|
-
subject.base_url.should == "https://
|
23
|
+
subject.base_url.should == "https://api.shippingeasy.com"
|
24
24
|
end
|
25
25
|
|
26
26
|
it "can be overidden" do
|
27
27
|
subject.base_url = String
|
28
28
|
subject.base_url.should == String
|
29
29
|
end
|
30
|
+
|
31
|
+
it "ignores if set to the legacy URL" do
|
32
|
+
subject.base_url = "https://app.shippingeasy.com"
|
33
|
+
subject.base_url.should == "https://api.shippingeasy.com"
|
34
|
+
end
|
30
35
|
end
|
31
36
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require "spec_helper"
|
2
|
+
require 'webmock/rspec'
|
2
3
|
|
3
4
|
describe ShippingEasy::Http::FaradayAdapter do
|
4
5
|
|
@@ -39,4 +40,21 @@ describe ShippingEasy::Http::FaradayAdapter do
|
|
39
40
|
end
|
40
41
|
end
|
41
42
|
|
43
|
+
it "redirects, preserving method" do
|
44
|
+
stub_request(:post, "https://app.shippingeasy.com").to_return(
|
45
|
+
:status => 307,
|
46
|
+
:headers => { "Location" => "https://app1.shippingeasy.com/" })
|
47
|
+
stub_request(:post, "https://app1.shippingeasy.com/")
|
48
|
+
|
49
|
+
response = subject.connection.post("https://app.shippingeasy.com")
|
50
|
+
|
51
|
+
expect(response.env[:method]).to eq(:post)
|
52
|
+
expect(response.env[:url].to_s).to eq("https://app1.shippingeasy.com/")
|
53
|
+
end
|
54
|
+
|
55
|
+
it "adds a custom user agent" do
|
56
|
+
stub_request(:post, "https://app.shippingeasy.com")
|
57
|
+
response = subject.connection.post("https://app.shippingeasy.com")
|
58
|
+
expect(response.env.request_headers["User-Agent"]).to eq("shipping_easy-ruby/#{ShippingEasy::VERSION}")
|
59
|
+
end
|
42
60
|
end
|
data/spec/http/request_spec.rb
CHANGED
@@ -9,7 +9,8 @@ describe ShippingEasy::Http::Request do
|
|
9
9
|
let(:body) { { order_number: "1234" } }
|
10
10
|
let(:api_key) { "12345678ASGHSGHJ" }
|
11
11
|
let(:api_secret) { "12345678ASGHSGHJ123213321312" }
|
12
|
-
let(:
|
12
|
+
let(:signed_body) { body && body.to_json }
|
13
|
+
let(:signature) { ShippingEasy::Signature.new(api_secret: api_secret, method: http_method, path: "/api#{relative_path}", params: params.dup, body: signed_body) }
|
13
14
|
|
14
15
|
before do
|
15
16
|
ShippingEasy.configure do |config|
|
@@ -50,6 +51,25 @@ describe ShippingEasy::Http::Request do
|
|
50
51
|
end
|
51
52
|
end
|
52
53
|
|
54
|
+
describe 'body is nil for GET requests with nil body' do
|
55
|
+
let(:http_method) { "get" }
|
56
|
+
let(:body) { nil }
|
57
|
+
specify do
|
58
|
+
subject.body.should == nil
|
59
|
+
subject.signature.to_s.should == signature.to_s
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
describe 'body is nil for GET requests with omitted payload key' do
|
64
|
+
let(:http_method) { "get" }
|
65
|
+
let(:body) { nil }
|
66
|
+
subject { ShippingEasy::Http::Request.new(http_method: http_method, params: params, relative_path: relative_path) }
|
67
|
+
specify do
|
68
|
+
subject.body.should == nil
|
69
|
+
subject.signature.to_s.should == signature.to_s
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
53
73
|
describe "#sign_request!" do
|
54
74
|
before { subject.sign_request! }
|
55
75
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shipping_easy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ShippingEasy
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-07-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 0.8.7
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: faraday_middleware
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.9.2
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.9.2
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: rack
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,6 +94,20 @@ dependencies:
|
|
80
94
|
- - "~>"
|
81
95
|
- !ruby/object:Gem::Version
|
82
96
|
version: '3.0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: webmock
|
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'
|
83
111
|
- !ruby/object:Gem::Dependency
|
84
112
|
name: rake
|
85
113
|
requirement: !ruby/object:Gem::Requirement
|