shipping_easy 0.3.2 → 0.5.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/.travis.yml +1 -0
- data/CHANGELOG +7 -1
- data/README.md +107 -4
- data/lib/shipping_easy.rb +14 -0
- data/lib/shipping_easy/configuration.rb +2 -0
- data/lib/shipping_easy/http/partner_request.rb +15 -0
- data/lib/shipping_easy/resources/base.rb +4 -3
- data/lib/shipping_easy/resources/rate_quote.rb +6 -0
- data/lib/shipping_easy/resources/session.rb +5 -0
- data/lib/shipping_easy/version.rb +1 -1
- data/shipping_easy.gemspec +1 -1
- data/spec/authenticator_spec.rb +5 -5
- data/spec/resources/base_spec.rb +3 -3
- data/spec/resources/order_spec.rb +3 -3
- data/spec/resources/rate_request_spec.rb +27 -0
- data/spec/resources/session_spec.rb +19 -0
- data/spec/signature_spec.rb +6 -6
- metadata +29 -22
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c9a1f528afded6fdfb85a8ad80b7f34d51adff8f
|
4
|
+
data.tar.gz: cba57f8d48e64b0855bd8f6cb7aebd63a96a250d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9337c45b1aac07250075c065782047c40e58b65280f2cf19d3ed7fec84d286f9330685c0f3586584dffd0ff4eea5a3b5700a5c7bf15974dfa984b544238049c0
|
7
|
+
data.tar.gz: cb38d0b55c576fb39c1ed472b1282586835aeb5d5f9075f5845ad877243b464283b7720c339932f6686ad99687d38a29ee76c5661997c1fc430a083b6e257ff5
|
data/.travis.yml
CHANGED
data/CHANGELOG
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
v0.5.0
|
2
|
+
- Add support for Partner Session API; require openssl.
|
3
|
+
|
4
|
+
v0.4.0
|
5
|
+
- Add support for Rate Quoting API; adds support for Partner-level Requests
|
6
|
+
|
1
7
|
v0.3.2
|
2
8
|
- Add session expired error.
|
3
9
|
|
@@ -5,4 +11,4 @@ v0.3.1
|
|
5
11
|
- Class-level options were being deleted rather than fetched, so subsequent calls were not working.
|
6
12
|
|
7
13
|
v0.3.0
|
8
|
-
- Added find and find_all methods to Order.
|
14
|
+
- Added find and find_all methods to Order.
|
data/README.md
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
[](https://codeclimate.com/github/ShippingEasy/shipping_easy-ruby)
|
2
|
+
[](https://travis-ci.org/ShippingEasy/shipping_easy-ruby)
|
3
3
|
# ShippingEasy
|
4
4
|
|
5
5
|
This is the official wrapper for the ShippingEasy API.
|
@@ -395,6 +395,95 @@ If successful the call will return a JSON hash with the ShippingEasy order ID, a
|
|
395
395
|
|
396
396
|
{ "order" => { "id" => "27654", "external_order_identifier" => "ABC123" } }
|
397
397
|
|
398
|
+
### Rate Quote API
|
399
|
+
|
400
|
+
ShippingEasy provides an API for our partners to fetch rate quotes from USPS, UPS or FedEx.
|
401
|
+
|
402
|
+
Once you've setup your Partner credentials with a ShippingEasy account manager and have been issued an API key/secret, configure the client with your API credentials in the following block, which should be setup in an initializer:
|
403
|
+
|
404
|
+
ShippingEasy.configure do |config|
|
405
|
+
config.partner_api_key = REPLACE_WITH_API_KEY # Use your provided Partner API Key
|
406
|
+
config.partner_api_secret = REPLACE_WITH_API_SECRET # Use your provided Partner API Secret
|
407
|
+
config.base_url = "https://app.shippingeasy.com"
|
408
|
+
end
|
409
|
+
|
410
|
+
#### Rate Quote API Attributes
|
411
|
+
|
412
|
+
The following is a list of attributes that should be provided to the `ShippingEasy::Resources::RateQuote` object as an associative array, using the `fetch` method.
|
413
|
+
|
414
|
+
Some example hashes of rate quote request data for each carrier can be found at https://gist.github.com/nkrupa/3a76e592377f12bd96be
|
415
|
+
|
416
|
+
**carrier**
|
417
|
+
: *Required.* Must be one of the following (case-sensitive): `['usps', 'ups', 'fedex']`.
|
418
|
+
|
419
|
+
**carrier_service**
|
420
|
+
: *Required.* Must match the carrier-specific service API key (and is case-sensitive). For example, for USPS First Class International, use `FirstClassMailInternational`. See the carrier's documentation for possible service keys.
|
421
|
+
|
422
|
+
**packaging**
|
423
|
+
: *Required.* Use `custom` for customer-provided, otherwise specify the carrier-specific packaging key. For example, for USPS Small Flat Rate Box, use `SmallFlatRateBox`.
|
424
|
+
|
425
|
+
**packaging_dimensions**
|
426
|
+
: Valid only for customer-provided packaging. Must be a hash with all three keys of `:length, :width, :height`.
|
427
|
+
|
428
|
+
**from_address_1**
|
429
|
+
: *Required for UPS and FedEx*
|
430
|
+
|
431
|
+
**from_address_2**
|
432
|
+
|
433
|
+
**from_city**
|
434
|
+
: *Required for UPS and FedEx*
|
435
|
+
|
436
|
+
**from_state**
|
437
|
+
: *Required for UPS and FedEx*
|
438
|
+
|
439
|
+
**from_postal_code**
|
440
|
+
: *Required for all carriers*
|
441
|
+
|
442
|
+
**from_phone_number**
|
443
|
+
: *Required for FedEx*
|
444
|
+
|
445
|
+
**to_residential**
|
446
|
+
: boolean (defaults to false) represented if destination address is residential. Used by UPS and FedEx.
|
447
|
+
|
448
|
+
**to_postal_code**
|
449
|
+
: *Required for USPS domestic rates, and for UPS and FedEx*
|
450
|
+
|
451
|
+
**to_address_1**
|
452
|
+
: *Required for UPS and FedEx*
|
453
|
+
|
454
|
+
**to_address_2**
|
455
|
+
|
456
|
+
**to_city**
|
457
|
+
: *Required for UPS and FedEx*
|
458
|
+
|
459
|
+
**to_state**
|
460
|
+
: *Required for UPS and FedEx*
|
461
|
+
|
462
|
+
**to_country_code**
|
463
|
+
: *Required for all international quotes* Defaults to 'US', must be a two-digit ISO-3166 country code.
|
464
|
+
|
465
|
+
**to_phone_number**
|
466
|
+
: *Required for FedEx*
|
467
|
+
|
468
|
+
**weight**
|
469
|
+
: *Required for most carrier services* - represented in ounces.
|
470
|
+
|
471
|
+
**confirmation_option**
|
472
|
+
: Available options (not all available for all carriers/services): `["delivery_confirmation", "signature_required", "adult_signature_required", "verbal_confirmation", "DIRECT", "INDIRECT", "ADULT", "included_signature_confirmation", "restricted_delivery", "signature_confirmation", "adult_signature", "delivery_confirmation", "am_delivery"]`
|
473
|
+
|
474
|
+
**requires_additional_handling**
|
475
|
+
: Available for UPS only
|
476
|
+
|
477
|
+
**saturday_pickup**
|
478
|
+
: Available for UPS/FedEx only. Cannot be combined with saturday_delivery
|
479
|
+
|
480
|
+
**saturday_delivery**
|
481
|
+
: Available for UPS/FedEx only. Cannot be combined with saturday_pickup
|
482
|
+
|
483
|
+
**ship_date**
|
484
|
+
: *Required for FedEx*
|
485
|
+
|
486
|
+
|
398
487
|
#### Possible Exceptions
|
399
488
|
|
400
489
|
##### ShippingEasy::AccessDeniedError
|
@@ -414,7 +503,7 @@ First you will need to create an API signature. Concatenate these into a plainte
|
|
414
503
|
1. Capitilized method of the request. E.g. "POST"
|
415
504
|
2. The URI path
|
416
505
|
3. The query parameters sorted alphabetically and concatenated together into a URL friendly format: param1=ABC¶m2=XYZ
|
417
|
-
4. The request body as a string if one exists
|
506
|
+
4. The request body as a string if one exists. Escape all double quotes with backslashes.
|
418
507
|
|
419
508
|
All parts are then concatenated together with an ampersand. The result resembles something like this:
|
420
509
|
|
@@ -427,7 +516,9 @@ Finally, using your API secret encrypt the string using HMAC sha256. In ruby, it
|
|
427
516
|
### API timestamp
|
428
517
|
You must include an API timestamp in your requests. The timestamp should be a Unix epoch timestamp (integer) of the current time.
|
429
518
|
|
430
|
-
### Example curl
|
519
|
+
### Example curl requests
|
520
|
+
|
521
|
+
#### Creating an order
|
431
522
|
|
432
523
|
````shell
|
433
524
|
curl -H "Content-Type: application/json" --data @body.json "https://app.shippingeasy.com/api/stores/27aa472e16faa83dd13b7758d31974ed/orders?api_key=f9a7c8ebdfd34beaf260d9b0296c7059&api_timestamp=1401803554&api_signature=c65f43beed46e581939898a78acd10064cfa146845e97885ec02124d7ad648e4"
|
@@ -437,6 +528,18 @@ An example body.json can be found here:
|
|
437
528
|
|
438
529
|
https://gist.github.com/twmills/3f4636b835c611ab3f7f
|
439
530
|
|
531
|
+
#### Cancelling an order
|
532
|
+
|
533
|
+
````shell
|
534
|
+
curl -X POST "https://app.shippingeasy.com/api/stores/86eac265e87ea9a74a86fe248f2e79d2/orders/ABC123/cancellations?api_key=XXX&api_signature=c24c5118a2b2af27557af721145991594d00a0d914f0d9bc2b9a2fa26efb30cc&api_timestamp=1409173624"
|
535
|
+
````
|
536
|
+
|
537
|
+
#### Searching orders
|
538
|
+
|
539
|
+
````shell
|
540
|
+
curl "https://app.shippingeasy.com/api/orders?api_key=XXX&api_signature=a6ab10918d435ad2abfbbe6004dc2fc7faac62a291f4d66e4a36e5a654d15a54&api_timestamp=1409174329&page=3&per_page=10&status%5B%5D=ready_for_shipment&status%5B%5D=shipped"
|
541
|
+
````
|
542
|
+
|
440
543
|
|
441
544
|
## Contributing
|
442
545
|
|
data/lib/shipping_easy.rb
CHANGED
@@ -2,16 +2,20 @@
|
|
2
2
|
require "faraday"
|
3
3
|
require "rack"
|
4
4
|
require "json"
|
5
|
+
require "openssl"
|
5
6
|
require "shipping_easy/authenticator"
|
6
7
|
require "shipping_easy/configuration"
|
7
8
|
require "shipping_easy/signature"
|
8
9
|
require "shipping_easy/http"
|
9
10
|
require "shipping_easy/http/faraday_adapter"
|
10
11
|
require "shipping_easy/http/request"
|
12
|
+
require "shipping_easy/http/partner_request"
|
11
13
|
require "shipping_easy/http/response_handler"
|
12
14
|
require "shipping_easy/resources"
|
13
15
|
require "shipping_easy/resources/base"
|
14
16
|
require "shipping_easy/resources/order"
|
17
|
+
require "shipping_easy/resources/rate_quote"
|
18
|
+
require "shipping_easy/resources/session"
|
15
19
|
require "shipping_easy/resources/cancellation"
|
16
20
|
require "shipping_easy/version"
|
17
21
|
|
@@ -37,6 +41,16 @@ module ShippingEasy
|
|
37
41
|
configuration.api_key
|
38
42
|
end
|
39
43
|
|
44
|
+
def partner_api_secret
|
45
|
+
return nil if configuration.nil?
|
46
|
+
configuration.partner_api_secret
|
47
|
+
end
|
48
|
+
|
49
|
+
def partner_api_key
|
50
|
+
return nil if configuration.nil?
|
51
|
+
configuration.partner_api_key
|
52
|
+
end
|
53
|
+
|
40
54
|
def base_url
|
41
55
|
return nil if configuration.nil?
|
42
56
|
configuration.base_url
|
@@ -7,12 +7,13 @@ class ShippingEasy::Resources::Base
|
|
7
7
|
request_options[:http_method] = command_options.fetch(:http_method, :get)
|
8
8
|
request_options[:payload] = options.delete(:payload) if options.has_key?(:payload)
|
9
9
|
request_options[:params] = options unless options.nil? || options.empty?
|
10
|
-
execute_request!(request_options)
|
10
|
+
execute_request!(request_options, command_options.fetch(:request_type, :public))
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
14
|
-
def self.execute_request!(options = {})
|
15
|
-
|
14
|
+
def self.execute_request!(options = {}, request_type)
|
15
|
+
request_class = request_type == :partner ? ShippingEasy::Http::PartnerRequest : ShippingEasy::Http::Request
|
16
|
+
response = request_class.connect!(options)
|
16
17
|
ShippingEasy::Http::ResponseHandler.run(response)
|
17
18
|
end
|
18
19
|
|
data/shipping_easy.gemspec
CHANGED
@@ -22,6 +22,6 @@ Gem::Specification.new do |spec|
|
|
22
22
|
spec.add_dependency('rack', ">= 1.4.5")
|
23
23
|
spec.add_dependency('json', "~> 1.8.0")
|
24
24
|
spec.add_development_dependency "bundler", "~> 1.3"
|
25
|
-
spec.add_development_dependency "rspec"
|
25
|
+
spec.add_development_dependency "rspec", "~> 3.0"
|
26
26
|
spec.add_development_dependency "rake"
|
27
27
|
end
|
data/spec/authenticator_spec.rb
CHANGED
@@ -39,20 +39,20 @@ describe ShippingEasy::Authenticator, api: true do
|
|
39
39
|
end
|
40
40
|
|
41
41
|
describe "#request_expired?" do
|
42
|
-
specify { subject.request_expired
|
42
|
+
specify { expect(subject.request_expired?).to be_falsey }
|
43
43
|
|
44
44
|
context "when expired" do
|
45
45
|
let(:api_timestamp) { (Time.now - (ShippingEasy::Authenticator::EXPIRATION_INTERVAL * 2)).to_i }
|
46
|
-
specify { subject.request_expired
|
46
|
+
specify { expect(subject.request_expired?).to be_truthy }
|
47
47
|
end
|
48
48
|
end
|
49
49
|
|
50
50
|
describe "#signatures_match?" do
|
51
|
-
specify { subject.signatures_match
|
51
|
+
specify { expect(subject.signatures_match?).to be_truthy }
|
52
52
|
|
53
53
|
context "when they don't match" do
|
54
54
|
let(:api_signature) { "XXX" }
|
55
|
-
specify { subject.signatures_match
|
55
|
+
specify { expect(subject.signatures_match?).to be_falsey }
|
56
56
|
end
|
57
57
|
end
|
58
58
|
|
@@ -70,7 +70,7 @@ describe ShippingEasy::Authenticator, api: true do
|
|
70
70
|
subject.stub(:request_expired?).and_return(false)
|
71
71
|
subject.stub(:signatures_match?).and_return(true)
|
72
72
|
end
|
73
|
-
specify { subject.authenticate.
|
73
|
+
specify { expect(subject.authenticate).to be_truthy }
|
74
74
|
end
|
75
75
|
|
76
76
|
context "when request has expired" do
|
data/spec/resources/base_spec.rb
CHANGED
@@ -19,7 +19,7 @@ describe ShippingEasy::Resources::Base do
|
|
19
19
|
:http_method=>:get,
|
20
20
|
:params => {:page => 2,
|
21
21
|
:per_page => 3,
|
22
|
-
:status => [:shipped]}})
|
22
|
+
:status => [:shipped]}}, :public)
|
23
23
|
|
24
24
|
GenericResource.find_all(:page => 2, :per_page => 3, :status => [:shipped] )
|
25
25
|
end
|
@@ -29,7 +29,7 @@ describe ShippingEasy::Resources::Base do
|
|
29
29
|
GenericResource.command(:create, http_method: :post) do |args|
|
30
30
|
"/this/is/the/path"
|
31
31
|
end
|
32
|
-
GenericResource.should_receive(:execute_request!).with({:relative_path=>"/this/is/the/path", :http_method=>:post})
|
32
|
+
GenericResource.should_receive(:execute_request!).with({:relative_path=>"/this/is/the/path", :http_method=>:post}, :public)
|
33
33
|
GenericResource.create
|
34
34
|
end
|
35
35
|
|
@@ -38,7 +38,7 @@ describe ShippingEasy::Resources::Base do
|
|
38
38
|
GenericResource.command(:create, http_method: :post) do |args|
|
39
39
|
"/this/is/the/#{args.delete(:name)}"
|
40
40
|
end
|
41
|
-
GenericResource.should_receive(:execute_request!).with({:relative_path=>"/this/is/the/ABC123", :http_method=>:post})
|
41
|
+
GenericResource.should_receive(:execute_request!).with({:relative_path=>"/this/is/the/ABC123", :http_method=>:post}, :public)
|
42
42
|
GenericResource.create(name: "ABC123")
|
43
43
|
end
|
44
44
|
end
|
@@ -9,7 +9,7 @@ describe ShippingEasy::Resources::Order do
|
|
9
9
|
:http_method=>:get,
|
10
10
|
:params => {:page => 2,
|
11
11
|
:per_page => 3,
|
12
|
-
:status => [:shipped]}})
|
12
|
+
:status => [:shipped]}}, :public)
|
13
13
|
|
14
14
|
ShippingEasy::Resources::Order.find_all(:page => 2, :per_page => 3, :status => [:shipped])
|
15
15
|
end
|
@@ -17,14 +17,14 @@ describe ShippingEasy::Resources::Order do
|
|
17
17
|
|
18
18
|
describe ".find" do
|
19
19
|
it "sends a request with the expected options" do
|
20
|
-
ShippingEasy::Resources::Order.should_receive(:execute_request!).with({:relative_path=>"/orders/2", :http_method=>:get})
|
20
|
+
ShippingEasy::Resources::Order.should_receive(:execute_request!).with({:relative_path=>"/orders/2", :http_method=>:get}, :public)
|
21
21
|
ShippingEasy::Resources::Order.find(:id => 2)
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
25
|
describe ".create" do
|
26
26
|
it "sends a request with the expected options" do
|
27
|
-
ShippingEasy::Resources::Order.should_receive(:execute_request!).with({:relative_path=>"/stores/123456/orders", :http_method=>:post, payload: { name: "Jack" }})
|
27
|
+
ShippingEasy::Resources::Order.should_receive(:execute_request!).with({:relative_path=>"/stores/123456/orders", :http_method=>:post, payload: { name: "Jack" }}, :public)
|
28
28
|
ShippingEasy::Resources::Order.create(:store_api_key => "123456", payload: { name: "Jack" })
|
29
29
|
end
|
30
30
|
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe ShippingEasy::Resources::RateQuote do
|
4
|
+
describe ".fetch" do
|
5
|
+
it "sends a request with the expected options" do
|
6
|
+
|
7
|
+
ShippingEasy::Resources::RateQuote.should_receive(:execute_request!).with({:relative_path=>"/rate_quote",
|
8
|
+
:http_method=>:post,
|
9
|
+
:payload => {:carrier => "usps",
|
10
|
+
:carrier_service => "Priority",
|
11
|
+
:packaging => 'custome',
|
12
|
+
:weight => "7",
|
13
|
+
:to_postal_code => "78717",
|
14
|
+
:from_postal_code => "78746"
|
15
|
+
}}, :partner)
|
16
|
+
|
17
|
+
ShippingEasy::Resources::RateQuote.fetch(payload: {:carrier => 'usps',
|
18
|
+
:carrier_service => "Priority",
|
19
|
+
:packaging => 'custome',
|
20
|
+
:weight => "7",
|
21
|
+
:to_postal_code => "78717",
|
22
|
+
:from_postal_code => "78746"}
|
23
|
+
)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe ShippingEasy::Resources::Session do
|
4
|
+
describe ".create" do
|
5
|
+
it "sends a request with the expected options" do
|
6
|
+
|
7
|
+
ShippingEasy::Resources::Session.should_receive(:execute_request!).with({:relative_path=>"/sessions",
|
8
|
+
:http_method=>:post,
|
9
|
+
:payload => {session: { external_identifier: "ABC123",
|
10
|
+
email: "test@shippingeasy.com",
|
11
|
+
name: "Test Inc." }}}, :partner)
|
12
|
+
|
13
|
+
ShippingEasy::Resources::Session.create(payload: { session: { external_identifier: "ABC123",
|
14
|
+
email: "test@shippingeasy.com",
|
15
|
+
name: "Test Inc." }})
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
data/spec/signature_spec.rb
CHANGED
@@ -20,21 +20,21 @@ describe ShippingEasy::Signature do
|
|
20
20
|
end
|
21
21
|
|
22
22
|
describe "#plaintext" do
|
23
|
-
specify { subject.plaintext.
|
23
|
+
specify { expect(subject.plaintext).to eq("POST&/api/orders&api_key=123&test_param=ABCDE&{\"orders\":{\"name\":\"Flip flops\",\"cost\":\"10.00\",\"shipping_cost\":\"2.00\"}}")}
|
24
24
|
end
|
25
25
|
|
26
26
|
describe "#encrypted" do
|
27
|
-
specify { subject.encrypted.
|
27
|
+
specify { expect(subject.encrypted).to eq(OpenSSL::HMAC::hexdigest("sha256", api_secret, subject.plaintext))}
|
28
28
|
end
|
29
29
|
|
30
30
|
describe "#to_s" do
|
31
|
-
specify { subject.to_s.
|
31
|
+
specify { expect(subject.to_s).to eq(subject.encrypted)}
|
32
32
|
end
|
33
33
|
|
34
34
|
describe "#==" do
|
35
35
|
let(:duplicate_signature) { ShippingEasy::Signature.new(api_secret: api_secret, method: method, path: path, params: params, body: request_body) }
|
36
|
-
specify { (subject == OpenSSL::HMAC::hexdigest("sha256", api_secret, subject.plaintext)).
|
37
|
-
specify { (subject == OpenSSL::HMAC::hexdigest("sha256", "BADSECRET", subject.plaintext)).
|
38
|
-
specify { (subject == duplicate_signature).
|
36
|
+
specify { expect(subject == OpenSSL::HMAC::hexdigest("sha256", api_secret, subject.plaintext)).to be_truthy }
|
37
|
+
specify { expect(subject == OpenSSL::HMAC::hexdigest("sha256", "BADSECRET", subject.plaintext)).to be_falsey }
|
38
|
+
specify { expect(subject == duplicate_signature).to be_truthy }
|
39
39
|
end
|
40
40
|
end
|
metadata
CHANGED
@@ -1,97 +1,97 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shipping_easy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ShippingEasy
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-10-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 0.8.7
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 0.8.7
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rack
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: 1.4.5
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 1.4.5
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: json
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - ~>
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: 1.8.0
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - ~>
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 1.8.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: bundler
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - ~>
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '1.3'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - ~>
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '1.3'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rspec
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '0'
|
75
|
+
version: '3.0'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: '0'
|
82
|
+
version: '3.0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: rake
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- -
|
87
|
+
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: '0'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- -
|
94
|
+
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
97
|
description: The official ShippingEasy API client for Ruby.
|
@@ -101,9 +101,9 @@ executables: []
|
|
101
101
|
extensions: []
|
102
102
|
extra_rdoc_files: []
|
103
103
|
files:
|
104
|
-
- .gitignore
|
105
|
-
- .rspec
|
106
|
-
- .travis.yml
|
104
|
+
- ".gitignore"
|
105
|
+
- ".rspec"
|
106
|
+
- ".travis.yml"
|
107
107
|
- CHANGELOG
|
108
108
|
- Gemfile
|
109
109
|
- LICENSE.txt
|
@@ -114,12 +114,15 @@ files:
|
|
114
114
|
- lib/shipping_easy/configuration.rb
|
115
115
|
- lib/shipping_easy/http.rb
|
116
116
|
- lib/shipping_easy/http/faraday_adapter.rb
|
117
|
+
- lib/shipping_easy/http/partner_request.rb
|
117
118
|
- lib/shipping_easy/http/request.rb
|
118
119
|
- lib/shipping_easy/http/response_handler.rb
|
119
120
|
- lib/shipping_easy/resources.rb
|
120
121
|
- lib/shipping_easy/resources/base.rb
|
121
122
|
- lib/shipping_easy/resources/cancellation.rb
|
122
123
|
- lib/shipping_easy/resources/order.rb
|
124
|
+
- lib/shipping_easy/resources/rate_quote.rb
|
125
|
+
- lib/shipping_easy/resources/session.rb
|
123
126
|
- lib/shipping_easy/signature.rb
|
124
127
|
- lib/shipping_easy/version.rb
|
125
128
|
- shipping_easy.gemspec
|
@@ -130,6 +133,8 @@ files:
|
|
130
133
|
- spec/http/response_handler_spec.rb
|
131
134
|
- spec/resources/base_spec.rb
|
132
135
|
- spec/resources/order_spec.rb
|
136
|
+
- spec/resources/rate_request_spec.rb
|
137
|
+
- spec/resources/session_spec.rb
|
133
138
|
- spec/signature_spec.rb
|
134
139
|
- spec/spec_helper.rb
|
135
140
|
homepage: https://github.com/ShippingEasy/shipping_easy-ruby
|
@@ -142,17 +147,17 @@ require_paths:
|
|
142
147
|
- lib
|
143
148
|
required_ruby_version: !ruby/object:Gem::Requirement
|
144
149
|
requirements:
|
145
|
-
- -
|
150
|
+
- - ">="
|
146
151
|
- !ruby/object:Gem::Version
|
147
152
|
version: '0'
|
148
153
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
149
154
|
requirements:
|
150
|
-
- -
|
155
|
+
- - ">="
|
151
156
|
- !ruby/object:Gem::Version
|
152
157
|
version: '0'
|
153
158
|
requirements: []
|
154
159
|
rubyforge_project:
|
155
|
-
rubygems_version: 2.2.
|
160
|
+
rubygems_version: 2.2.2
|
156
161
|
signing_key:
|
157
162
|
specification_version: 4
|
158
163
|
summary: The official ShippingEasy API client for Ruby.
|
@@ -164,5 +169,7 @@ test_files:
|
|
164
169
|
- spec/http/response_handler_spec.rb
|
165
170
|
- spec/resources/base_spec.rb
|
166
171
|
- spec/resources/order_spec.rb
|
172
|
+
- spec/resources/rate_request_spec.rb
|
173
|
+
- spec/resources/session_spec.rb
|
167
174
|
- spec/signature_spec.rb
|
168
175
|
- spec/spec_helper.rb
|