shipping_easy 0.3.2 → 0.5.0

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: 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