shipping_easy 0.3.0 → 0.3.1

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: 5ff1cf485fdfa4f09bf7dbd69c89230897d98bc0
4
- data.tar.gz: d14eaf59c001dfb06ce92aaefaa7e8c3d247c189
3
+ metadata.gz: 8a863c6fb799dcc090fef67943634033515c54b6
4
+ data.tar.gz: 22875fa0281196e5642dfd7be2194155010868b1
5
5
  SHA512:
6
- metadata.gz: cbbc3019268e0f8fc9ae38325ed377d4f716be23ee920ffdc200a7b90d42cfde9a92083bfdefc7d3adfbb3390c14f0ab4c21c8ee60a849bce127f2eb28c377fa
7
- data.tar.gz: 870a7e66a8279a5ba38fc37abc1e7b8073760da54d33233e31c4282100b0911065a9f3771b74739dc22a5b3af5bde99d2a065df14e4dc1964fb9a4b7e43cacb0
6
+ metadata.gz: 5314211e423575528620acacea83c4db39f8af1f5db519a7332901328aaa5b3f3e14ad47505b36cec708f79eaef21d55173eaa38ec7848a92691be62d9addd8b
7
+ data.tar.gz: 2770b3eceb26aa5369715209b5ea1540e7d91a0fb766e7cde303a7c2a0dedfcf6a24d4bcbc2961c0c359e778475bfd931b76cff532cc7f733f32b68ec8b90654
data/CHANGELOG CHANGED
@@ -1,2 +1,5 @@
1
+ v0.3.1
2
+ - Class-level options were being deleted rather than fetched, so subsequent calls were not working.
3
+
1
4
  v0.3.0
2
5
  - Added find and find_all methods to Order.
data/README.md CHANGED
@@ -2,12 +2,16 @@
2
2
 
3
3
  # ShippingEasy
4
4
 
5
- This is the official wrapper for the ShippingEasy API. Currently the API only exposes several functions so this wrapper only handles the following calls:
5
+ This is the official wrapper for the ShippingEasy API.
6
6
 
7
- * Adding an order to a ShippingEasy store
8
- * Cancelling an order before it has been shipped
7
+ The ShippingEasy API supports the following features:
9
8
 
10
- We will keep this library up to date as we expand our API offerings.
9
+ * Secure, authenticated intake of orders for shipment
10
+ * Cancellation of orders that no longer need to be shipped
11
+ * A callback facility that provides shipment information (carrier, cost, tracking number, etc.) for an order
12
+ * Query capabilities to read order data from ShippingEasy
13
+
14
+ We will keep this library up to date as we expand the ShippingEasy API.
11
15
 
12
16
  ## Setup
13
17
 
@@ -62,7 +66,7 @@ The arguments for the constructor are as follows:
62
66
 
63
67
  ### Finding an order
64
68
 
65
- To retrieve a specific order, call the find method on the Order resource class with a ShippingEasy order ID specified.
69
+ To retrieve a specific order, call the find method on the Order resource class.
66
70
 
67
71
  ShippingEasy::Resources::Order.find(id: 876)
68
72
 
@@ -129,7 +133,7 @@ https://gist.github.com/twmills/005b3c4ab9c85330a801
129
133
  Your credentials could not be authenticated or the store api_key could not be found.
130
134
 
131
135
  ##### ShippingEasy::InvalidRequestError
132
- The order could not be created on the server for one or more of the following reasons:
136
+ The orders could not retrieved for one or more of the following reasons:
133
137
 
134
138
  * The API timestamp could not be parsed.
135
139
 
@@ -404,6 +408,36 @@ The cancellation could not complete for one or more of the following reasons:
404
408
 
405
409
  The exception will contain a message that indicates which of these conditions failed.
406
410
 
411
+ ## Making requests via curl
412
+ First you will need to create an API signature. Concatenate these into a plaintext string using the following order:
413
+
414
+ 1. Capitilized method of the request. E.g. "POST"
415
+ 2. The URI path
416
+ 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
418
+
419
+ All parts are then concatenated together with an ampersand. The result resembles something like this:
420
+
421
+ "POST&/api/orders&api_key=f9a7c8ebdfd34beaf260d9b0296c7059&api_timestamp=1401803554&{\"orders\":{\"name\":\"Flip flops\",\"cost\":\"10.00\",\"shipping_cost\":\"2.00\"}}"
422
+
423
+ Finally, using your API secret encrypt the string using HMAC sha256. In ruby, it looks like this:
424
+
425
+ OpenSSL::HMAC::hexdigest("sha256", api_secret, "POST&/api/orders&api_key=f9a7c8ebdfd34beaf260d9b0296c7059&api_timestamp=1401803554&{\"orders\":{\"name\":\"Flip flops\",\"cost\":\"10.00\",\"shipping_cost\":\"2.00\"}}")
426
+
427
+ ### API timestamp
428
+ You must include an API timestamp in your requests. The timestamp should be an integer representation of the current time.
429
+
430
+ ### Example curl request
431
+
432
+ ````shell
433
+ 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"
434
+ ````
435
+
436
+ An example body.json can be found here:
437
+
438
+ https://gist.github.com/twmills/3f4636b835c611ab3f7f
439
+
440
+
407
441
  ## Contributing
408
442
 
409
443
  1. Fork it
@@ -3,8 +3,8 @@ class ShippingEasy::Resources::Base
3
3
  def self.command(name, command_options = {}, &block)
4
4
  define_singleton_method name do |options = {}|
5
5
  request_options = {}
6
- request_options[:relative_path] = command_options.delete(:relative_path) || block.call(options)
7
- request_options[:http_method] = command_options.delete(:http_method) || :get
6
+ request_options[:relative_path] = command_options.fetch(:relative_path, block.call(options))
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
10
  execute_request!(request_options)
@@ -1,3 +1,3 @@
1
1
  module ShippingEasy
2
- VERSION = "0.3.0"
2
+ VERSION = "0.3.1"
3
3
  end
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.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - ShippingEasy
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-21 00:00:00.000000000 Z
11
+ date: 2014-06-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday