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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 178175ddee9b9fe1feafdccaad4d9f425551cb52
4
- data.tar.gz: 415c743deb0377422be2a40283a428b42f1bc20c
3
+ metadata.gz: c9a1f528afded6fdfb85a8ad80b7f34d51adff8f
4
+ data.tar.gz: cba57f8d48e64b0855bd8f6cb7aebd63a96a250d
5
5
  SHA512:
6
- metadata.gz: e3b70a21db72943eca73434071ba1002dca100257fcbafde554331da74df91a5f6979f435c14e7e2818a6d524b2f1761f5b4252c4338359332fd5caaf2c7343a
7
- data.tar.gz: a0deaee64cc9ee3f6ec4f9bef8ab488155a6112b483dd883976aa963347076316ad262e57e602888ea5312623e87cd94da11a7346a9dc23e82de21b5c5c5bd22
6
+ metadata.gz: 9337c45b1aac07250075c065782047c40e58b65280f2cf19d3ed7fec84d286f9330685c0f3586584dffd0ff4eea5a3b5700a5c7bf15974dfa984b544238049c0
7
+ data.tar.gz: cb38d0b55c576fb39c1ed472b1282586835aeb5d5f9075f5845ad877243b464283b7720c339932f6686ad99687d38a29ee76c5661997c1fc430a083b6e257ff5
@@ -1,5 +1,6 @@
1
1
  rvm:
2
2
  - "1.9.3"
3
3
  - "2.0.0"
4
+ - "2.1.2"
4
5
  - "1.9.2"
5
6
  - jruby-19mode
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
- [![Code Climate](https://codeclimate.com/repos/5315eeefe30ba01aa501c119/badges/92e9ca8e93ca2cbc260b/gpa.png)](https://codeclimate.com/repos/5315eeefe30ba01aa501c119/feed)
2
-
1
+ [![Code Climate](https://codeclimate.com/github/ShippingEasy/shipping_easy-ruby/badges/gpa.svg)](https://codeclimate.com/github/ShippingEasy/shipping_easy-ruby)
2
+ [![Build Status](https://travis-ci.org/ShippingEasy/shipping_easy-ruby.svg?branch=master)](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&param2=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 request
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
 
@@ -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
@@ -16,6 +16,8 @@ module ShippingEasy
16
16
 
17
17
  attr_accessor :api_key,
18
18
  :api_secret,
19
+ :partner_api_key,
20
+ :partner_api_secret,
19
21
  :api_version,
20
22
  :base_url,
21
23
  :http_adapter
@@ -0,0 +1,15 @@
1
+ class ShippingEasy::Http::PartnerRequest < ShippingEasy::Http::Request
2
+
3
+ def uri
4
+ "/partners/api#{relative_path}"
5
+ end
6
+
7
+ def api_secret
8
+ ShippingEasy.partner_api_secret
9
+ end
10
+
11
+ def api_key
12
+ ShippingEasy.partner_api_key
13
+ end
14
+
15
+ end
@@ -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
- response = ShippingEasy::Http::Request.connect!(options)
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
 
@@ -0,0 +1,6 @@
1
+ class ShippingEasy::Resources::RateQuote < ShippingEasy::Resources::Base
2
+
3
+ command :fetch, request_type: :partner, http_method: :post do |args|
4
+ "/rate_quote"
5
+ end
6
+ end
@@ -0,0 +1,5 @@
1
+ class ShippingEasy::Resources::Session < ShippingEasy::Resources::Base
2
+ command :create, request_type: :partner, http_method: :post do |args|
3
+ "/sessions"
4
+ end
5
+ end
@@ -1,3 +1,3 @@
1
1
  module ShippingEasy
2
- VERSION = "0.3.2"
2
+ VERSION = "0.5.0"
3
3
  end
@@ -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
@@ -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?.should be_false }
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?.should be_true }
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?.should be_true }
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?.should be_false }
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.should be_true }
73
+ specify { expect(subject.authenticate).to be_truthy }
74
74
  end
75
75
 
76
76
  context "when request has expired" do
@@ -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
+
@@ -20,21 +20,21 @@ describe ShippingEasy::Signature do
20
20
  end
21
21
 
22
22
  describe "#plaintext" do
23
- specify { subject.plaintext.should == "POST&/api/orders&api_key=123&test_param=ABCDE&{\"orders\":{\"name\":\"Flip flops\",\"cost\":\"10.00\",\"shipping_cost\":\"2.00\"}}"}
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.should == OpenSSL::HMAC::hexdigest("sha256", api_secret, subject.plaintext)}
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.should == subject.encrypted}
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)).should be_true }
37
- specify { (subject == OpenSSL::HMAC::hexdigest("sha256", "BADSECRET", subject.plaintext)).should be_false }
38
- specify { (subject == duplicate_signature).should be_true }
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.3.2
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-08-26 00:00:00.000000000 Z
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.0
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