cq-spree-api-client 0.0.5
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 +7 -0
- data/.gitignore +19 -0
- data/.rspec +2 -0
- data/.ruby-version +1 -0
- data/.travis.yml +11 -0
- data/CONTRIBUTING.md +8 -0
- data/Gemfile +3 -0
- data/LICENSE +22 -0
- data/README.md +61 -0
- data/Rakefile +7 -0
- data/fixtures/cassette_library/Spree_API_Client_Addresses/address/should_load_address.yml +59 -0
- data/fixtures/cassette_library/Spree_API_Client_Addresses/update_address/should_update_address.yml +61 -0
- data/fixtures/cassette_library/Spree_API_Client_Shipments/shipment_ready/should_set_a_shipment_to_ready.yml +55 -0
- data/fixtures/cassette_library/Spree_API_Client_Shipments/shipment_ready/should_set_a_shipment_to_ship.yml +56 -0
- data/fixtures/cassette_library/countries.yml +62 -0
- data/fixtures/cassette_library/orders.yml +55 -0
- data/fixtures/cassette_library/payments.yml +48 -0
- data/fixtures/cassette_library/products.yml +241 -0
- data/fixtures/cassette_library/properties.yml +56 -0
- data/fixtures/cassette_library/request.yml +241 -0
- data/fixtures/cassette_library/return_authorizations.yml +48 -0
- data/fixtures/cassette_library/stock_items.yml +1950 -0
- data/fixtures/cassette_library/taxonomies.yml +62 -0
- data/fixtures/cassette_library/taxons.yml +60 -0
- data/fixtures/cassette_library/variants.yml +58 -0
- data/fixtures/cassette_library/zones.yml +49 -0
- data/lib/spree-api-client.rb +65 -0
- data/lib/spree-api-client/addresses.rb +20 -0
- data/lib/spree-api-client/adjustments.rb +23 -0
- data/lib/spree-api-client/checkouts.rb +27 -0
- data/lib/spree-api-client/connection.rb +27 -0
- data/lib/spree-api-client/countries.rb +15 -0
- data/lib/spree-api-client/credit_cards.rb +20 -0
- data/lib/spree-api-client/error.rb +47 -0
- data/lib/spree-api-client/line_items.rb +19 -0
- data/lib/spree-api-client/option_types.rb +31 -0
- data/lib/spree-api-client/option_values.rb +31 -0
- data/lib/spree-api-client/orders.rb +56 -0
- data/lib/spree-api-client/payments.rb +44 -0
- data/lib/spree-api-client/products.rb +31 -0
- data/lib/spree-api-client/promotions.rb +15 -0
- data/lib/spree-api-client/properties.rb +31 -0
- data/lib/spree-api-client/request.rb +59 -0
- data/lib/spree-api-client/return_authorizations.rb +31 -0
- data/lib/spree-api-client/shipments.rb +15 -0
- data/lib/spree-api-client/stock_items.rb +31 -0
- data/lib/spree-api-client/stock_locations.rb +31 -0
- data/lib/spree-api-client/taxonomies.rb +31 -0
- data/lib/spree-api-client/taxons.rb +36 -0
- data/lib/spree-api-client/users.rb +31 -0
- data/lib/spree-api-client/variants.rb +31 -0
- data/lib/spree-api-client/version.rb +7 -0
- data/lib/spree-api-client/zones.rb +31 -0
- data/spec/addresses_spec.rb +21 -0
- data/spec/client_spec.rb +32 -0
- data/spec/countries_spec.rb +12 -0
- data/spec/orders_spec.rb +12 -0
- data/spec/payments_spec.rb +12 -0
- data/spec/products_spec.rb +12 -0
- data/spec/properties_spec.rb +12 -0
- data/spec/return_authorizations_spec.rb +12 -0
- data/spec/shipments_spec.rb +19 -0
- data/spec/spec_helper.rb +80 -0
- data/spec/stock_items_spec.rb +12 -0
- data/spec/support/vcr.rb +9 -0
- data/spec/taxonomies_spec.rb +12 -0
- data/spec/taxons_spec.rb +12 -0
- data/spec/variants_spec.rb +12 -0
- data/spec/zones_spec.rb +12 -0
- data/spree-api-client.gemspec +33 -0
- metadata +268 -0
@@ -0,0 +1,62 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: http://localhost:4000/store/api/taxonomies?locale=en-US&per_page=30
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
User-Agent:
|
11
|
+
- Faraday v0.9.1
|
12
|
+
Accept:
|
13
|
+
- application/json
|
14
|
+
X-Spree-Token:
|
15
|
+
- b56019f04b61a50553ee323f5ab68c6b435871971e79c987
|
16
|
+
Accept-Encoding:
|
17
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
18
|
+
response:
|
19
|
+
status:
|
20
|
+
code: 200
|
21
|
+
message: 'OK '
|
22
|
+
headers:
|
23
|
+
X-Frame-Options:
|
24
|
+
- SAMEORIGIN
|
25
|
+
X-Xss-Protection:
|
26
|
+
- 1; mode=block
|
27
|
+
X-Content-Type-Options:
|
28
|
+
- nosniff
|
29
|
+
Content-Type:
|
30
|
+
- application/json; charset=utf-8
|
31
|
+
Etag:
|
32
|
+
- W/"d77fba7f7ff0964ee7fc0ed59a7af1dd"
|
33
|
+
Cache-Control:
|
34
|
+
- max-age=0, private, must-revalidate
|
35
|
+
X-Request-Id:
|
36
|
+
- db183f4f-4ff8-4ad1-89ad-e8ca3d835558
|
37
|
+
X-Runtime:
|
38
|
+
- '0.172052'
|
39
|
+
Server:
|
40
|
+
- WEBrick/1.3.1 (Ruby/2.2.2/2015-04-13)
|
41
|
+
Date:
|
42
|
+
- Wed, 08 Jul 2015 15:48:52 GMT
|
43
|
+
Content-Length:
|
44
|
+
- '1202'
|
45
|
+
Connection:
|
46
|
+
- Keep-Alive
|
47
|
+
Set-Cookie:
|
48
|
+
- guest_token=ImNKWFd1cVJwYW5LbDdzZ2ZPcUlQYVEi--8488b9fe70b8c8788da14f8d3d7967c875e824cf;
|
49
|
+
path=/; expires=Sun, 08 Jul 2035 15:48:52 -0000
|
50
|
+
body:
|
51
|
+
encoding: UTF-8
|
52
|
+
string: '{"count":2,"current_page":1,"pages":1,"taxonomies":[{"id":1,"name":"Categories","root":{"id":1,"name":"Categories","pretty_name":"Categories","permalink":"categories","parent_id":null,"taxonomy_id":1,"taxons":[{"id":3,"name":"Bags","pretty_name":"Categories
|
53
|
+
-\u003e Bags","permalink":"categories/bags","parent_id":1,"taxonomy_id":1},{"id":4,"name":"Mugs","pretty_name":"Categories
|
54
|
+
-\u003e Mugs","permalink":"categories/mugs","parent_id":1,"taxonomy_id":1},{"id":5,"name":"Clothing","pretty_name":"Categories
|
55
|
+
-\u003e Clothing","permalink":"categories/clothing","parent_id":1,"taxonomy_id":1}]}},{"id":2,"name":"Brand","root":{"id":2,"name":"Brand","pretty_name":"Brand","permalink":"brand","parent_id":null,"taxonomy_id":2,"taxons":[{"id":8,"name":"Ruby","pretty_name":"Brand
|
56
|
+
-\u003e Ruby","permalink":"brand/ruby","parent_id":2,"taxonomy_id":2},{"id":9,"name":"Apache","pretty_name":"Brand
|
57
|
+
-\u003e Apache","permalink":"brand/apache","parent_id":2,"taxonomy_id":2},{"id":10,"name":"Spree","pretty_name":"Brand
|
58
|
+
-\u003e Spree","permalink":"brand/spree","parent_id":2,"taxonomy_id":2},{"id":11,"name":"Rails","pretty_name":"Brand
|
59
|
+
-\u003e Rails","permalink":"brand/rails","parent_id":2,"taxonomy_id":2}]}}]}'
|
60
|
+
http_version:
|
61
|
+
recorded_at: Wed, 08 Jul 2015 15:48:52 GMT
|
62
|
+
recorded_with: VCR 2.9.3
|
@@ -0,0 +1,60 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: http://localhost:4000/store/api/taxonomies/1/taxons?locale=en-US&per_page=30
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
User-Agent:
|
11
|
+
- Faraday v0.9.1
|
12
|
+
Accept:
|
13
|
+
- application/json
|
14
|
+
X-Spree-Token:
|
15
|
+
- b56019f04b61a50553ee323f5ab68c6b435871971e79c987
|
16
|
+
Accept-Encoding:
|
17
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
18
|
+
response:
|
19
|
+
status:
|
20
|
+
code: 200
|
21
|
+
message: 'OK '
|
22
|
+
headers:
|
23
|
+
X-Frame-Options:
|
24
|
+
- SAMEORIGIN
|
25
|
+
X-Xss-Protection:
|
26
|
+
- 1; mode=block
|
27
|
+
X-Content-Type-Options:
|
28
|
+
- nosniff
|
29
|
+
Content-Type:
|
30
|
+
- application/json; charset=utf-8
|
31
|
+
Etag:
|
32
|
+
- W/"bcc0eb61da4cbd983ff4d4659f6acff8"
|
33
|
+
Cache-Control:
|
34
|
+
- max-age=0, private, must-revalidate
|
35
|
+
X-Request-Id:
|
36
|
+
- 9be9be1b-e157-4102-b6a7-4ff9e580c6b3
|
37
|
+
X-Runtime:
|
38
|
+
- '0.114618'
|
39
|
+
Server:
|
40
|
+
- WEBrick/1.3.1 (Ruby/2.2.2/2015-04-13)
|
41
|
+
Date:
|
42
|
+
- Wed, 08 Jul 2015 15:53:11 GMT
|
43
|
+
Content-Length:
|
44
|
+
- '837'
|
45
|
+
Connection:
|
46
|
+
- Keep-Alive
|
47
|
+
Set-Cookie:
|
48
|
+
- guest_token=IlZJNUR1OXJrMlFFejJLazQwd0NxWVEi--595ea9ba2e4093912d061e9ce62870e553739d32;
|
49
|
+
path=/; expires=Sun, 08 Jul 2035 15:53:10 -0000
|
50
|
+
body:
|
51
|
+
encoding: UTF-8
|
52
|
+
string: '{"count":3,"total_count":3,"current_page":1,"per_page":"30","pages":1,"taxons":[{"taxons":[],"id":3,"name":"Bags","pretty_name":"Categories
|
53
|
+
-\u003e Bags","permalink":"categories/bags","parent_id":1,"taxonomy_id":1},{"taxons":[],"id":4,"name":"Mugs","pretty_name":"Categories
|
54
|
+
-\u003e Mugs","permalink":"categories/mugs","parent_id":1,"taxonomy_id":1},{"taxons":[{"taxons":[],"id":6,"name":"Shirts","pretty_name":"Categories
|
55
|
+
-\u003e Clothing -\u003e Shirts","permalink":"categories/clothing/shirts","parent_id":5,"taxonomy_id":1},{"taxons":[],"id":7,"name":"T-Shirts","pretty_name":"Categories
|
56
|
+
-\u003e Clothing -\u003e T-Shirts","permalink":"categories/clothing/t-shirts","parent_id":5,"taxonomy_id":1}],"id":5,"name":"Clothing","pretty_name":"Categories
|
57
|
+
-\u003e Clothing","permalink":"categories/clothing","parent_id":1,"taxonomy_id":1}]}'
|
58
|
+
http_version:
|
59
|
+
recorded_at: Wed, 08 Jul 2015 15:53:11 GMT
|
60
|
+
recorded_with: VCR 2.9.3
|
@@ -0,0 +1,58 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: http://localhost:4000/store/api/products/1/variants?locale=en-US&per_page=30
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
User-Agent:
|
11
|
+
- Faraday v0.9.1
|
12
|
+
Accept:
|
13
|
+
- application/json
|
14
|
+
X-Spree-Token:
|
15
|
+
- b56019f04b61a50553ee323f5ab68c6b435871971e79c987
|
16
|
+
Accept-Encoding:
|
17
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
18
|
+
response:
|
19
|
+
status:
|
20
|
+
code: 200
|
21
|
+
message: 'OK '
|
22
|
+
headers:
|
23
|
+
X-Frame-Options:
|
24
|
+
- SAMEORIGIN
|
25
|
+
X-Xss-Protection:
|
26
|
+
- 1; mode=block
|
27
|
+
X-Content-Type-Options:
|
28
|
+
- nosniff
|
29
|
+
Content-Type:
|
30
|
+
- application/json; charset=utf-8
|
31
|
+
Etag:
|
32
|
+
- W/"65c4b631b5b31b1e55671aeafc996aac"
|
33
|
+
Cache-Control:
|
34
|
+
- max-age=0, private, must-revalidate
|
35
|
+
X-Request-Id:
|
36
|
+
- ced98e62-f925-425a-90bc-934e54501432
|
37
|
+
X-Runtime:
|
38
|
+
- '0.120245'
|
39
|
+
Server:
|
40
|
+
- WEBrick/1.3.1 (Ruby/2.2.2/2015-04-13)
|
41
|
+
Date:
|
42
|
+
- Wed, 08 Jul 2015 15:48:54 GMT
|
43
|
+
Content-Length:
|
44
|
+
- '1816'
|
45
|
+
Connection:
|
46
|
+
- Keep-Alive
|
47
|
+
Set-Cookie:
|
48
|
+
- guest_token=IkxweWVkUHh6enZUaWkwOC1yNExnclEi--13ffd38a679ba65089afc19c6d46c82cc93660aa;
|
49
|
+
path=/; expires=Sun, 08 Jul 2035 15:48:54 -0000
|
50
|
+
body:
|
51
|
+
encoding: UTF-8
|
52
|
+
string: '{"count":1,"total_count":1,"current_page":1,"pages":1,"variants":[{"id":1,"name":"Ruby
|
53
|
+
on Rails Tote","sku":"ROR-00011","price":"15.99","weight":"0.0","height":null,"width":null,"depth":null,"is_master":true,"slug":"ruby-on-rails-tote","description":"Recusandae
|
54
|
+
explicabo possimus est dignissimos. Natus earum ut deserunt corporis ipsa.
|
55
|
+
Sunt magni voluptate quia repudiandae.","track_inventory":true,"cost_price":"17.0","display_price":"$15.99","options_text":"","in_stock":true,"is_backorderable":false,"total_on_hand":10,"is_destroyed":false,"option_values":[],"images":[{"id":21,"position":1,"attachment_content_type":"image/jpeg","attachment_file_name":"ror_tote.jpeg","type":"Spree::Image","attachment_updated_at":"2015-07-08T15:40:40.606Z","attachment_width":360,"attachment_height":360,"alt":null,"viewable_type":"Spree::Variant","viewable_id":1,"mini_url":"/spree/products/21/mini/ror_tote.jpeg?1436370040","small_url":"/spree/products/21/small/ror_tote.jpeg?1436370040","product_url":"/spree/products/21/product/ror_tote.jpeg?1436370040","large_url":"/spree/products/21/large/ror_tote.jpeg?1436370040"},{"id":22,"position":2,"attachment_content_type":"image/jpeg","attachment_file_name":"ror_tote_back.jpeg","type":"Spree::Image","attachment_updated_at":"2015-07-08T15:40:40.868Z","attachment_width":360,"attachment_height":360,"alt":null,"viewable_type":"Spree::Variant","viewable_id":1,"mini_url":"/spree/products/22/mini/ror_tote_back.jpeg?1436370040","small_url":"/spree/products/22/small/ror_tote_back.jpeg?1436370040","product_url":"/spree/products/22/product/ror_tote_back.jpeg?1436370040","large_url":"/spree/products/22/large/ror_tote_back.jpeg?1436370040"}],"stock_items":[{"id":1,"count_on_hand":10,"stock_location_id":1,"backorderable":false,"available":true,"stock_location_name":"default"}]}]}'
|
56
|
+
http_version:
|
57
|
+
recorded_at: Wed, 08 Jul 2015 15:48:54 GMT
|
58
|
+
recorded_with: VCR 2.9.3
|
@@ -0,0 +1,49 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: http://localhost:4000/store/api/zones?locale=en-US&per_page=30
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
Accept:
|
11
|
+
- application/json
|
12
|
+
X-Spree-Token:
|
13
|
+
- b56019f04b61a50553ee323f5ab68c6b435871971e79c987
|
14
|
+
Accept-Encoding:
|
15
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
16
|
+
User-Agent:
|
17
|
+
- Ruby
|
18
|
+
response:
|
19
|
+
status:
|
20
|
+
code: 200
|
21
|
+
message: ! 'OK '
|
22
|
+
headers:
|
23
|
+
Content-Type:
|
24
|
+
- application/json
|
25
|
+
X-Ua-Compatible:
|
26
|
+
- IE=Edge
|
27
|
+
Etag:
|
28
|
+
- ! '"c92d758de9ce28cbf25aff60593d11ae"'
|
29
|
+
Cache-Control:
|
30
|
+
- max-age=0, private, must-revalidate
|
31
|
+
X-Request-Id:
|
32
|
+
- 10ac41a5c0639706a64786e46caa8352
|
33
|
+
X-Runtime:
|
34
|
+
- '0.199412'
|
35
|
+
Content-Length:
|
36
|
+
- '293'
|
37
|
+
Server:
|
38
|
+
- WEBrick/1.3.1 (Ruby/1.9.3/2012-02-16)
|
39
|
+
Date:
|
40
|
+
- Fri, 07 Dec 2012 17:37:16 GMT
|
41
|
+
Connection:
|
42
|
+
- Keep-Alive
|
43
|
+
body:
|
44
|
+
encoding: US-ASCII
|
45
|
+
string: ! '{"count":2,"current_page":1,"pages":1,"zones":[{"zone":{"id":4,"name":"England","description":"","zone_members":[]}},{"zone":{"id":3,"name":"UK","description":"UK","zone_members":[{"zone_member":{"id":1017582645,"name":"United
|
46
|
+
Kingdom","zoneable_type":"Spree::Country","zoneable_id":213}}]}}]}'
|
47
|
+
http_version:
|
48
|
+
recorded_at: Fri, 07 Dec 2012 17:37:16 GMT
|
49
|
+
recorded_with: VCR 2.3.0
|
@@ -0,0 +1,65 @@
|
|
1
|
+
require "spree-api-client/version"
|
2
|
+
|
3
|
+
require 'faraday_middleware'
|
4
|
+
require 'spree-api-client/connection'
|
5
|
+
require 'spree-api-client/request'
|
6
|
+
|
7
|
+
require 'spree-api-client/users'
|
8
|
+
require 'spree-api-client/checkouts'
|
9
|
+
require 'spree-api-client/credit_cards'
|
10
|
+
require 'spree-api-client/adjustments'
|
11
|
+
require 'spree-api-client/products'
|
12
|
+
require 'spree-api-client/variants'
|
13
|
+
require 'spree-api-client/orders'
|
14
|
+
require 'spree-api-client/taxonomies'
|
15
|
+
require 'spree-api-client/addresses'
|
16
|
+
require 'spree-api-client/countries'
|
17
|
+
require 'spree-api-client/zones'
|
18
|
+
require 'spree-api-client/properties'
|
19
|
+
require 'spree-api-client/line_items'
|
20
|
+
require 'spree-api-client/stock_items'
|
21
|
+
require 'spree-api-client/stock_locations'
|
22
|
+
require 'spree-api-client/return_authorizations'
|
23
|
+
require 'spree-api-client/taxons'
|
24
|
+
require 'spree-api-client/payments'
|
25
|
+
require 'spree-api-client/shipments'
|
26
|
+
require 'spree-api-client/promotions'
|
27
|
+
|
28
|
+
module Spree
|
29
|
+
module API
|
30
|
+
class Client
|
31
|
+
include Spree::API::Client::Connection
|
32
|
+
include Spree::API::Client::Request
|
33
|
+
|
34
|
+
include Spree::API::Client::Users
|
35
|
+
include Spree::API::Client::Checkouts
|
36
|
+
include Spree::API::Client::Products
|
37
|
+
include Spree::API::Client::Variants
|
38
|
+
include Spree::API::Client::Orders
|
39
|
+
include Spree::API::Client::Taxonomies
|
40
|
+
include Spree::API::Client::Addresses
|
41
|
+
include Spree::API::Client::Countries
|
42
|
+
include Spree::API::Client::Zones
|
43
|
+
include Spree::API::Client::Properties
|
44
|
+
include Spree::API::Client::LineItems
|
45
|
+
include Spree::API::Client::StockLocations
|
46
|
+
include Spree::API::Client::StockItems
|
47
|
+
include Spree::API::Client::ReturnAuthorizations
|
48
|
+
include Spree::API::Client::Taxons
|
49
|
+
include Spree::API::Client::Payments
|
50
|
+
include Spree::API::Client::Shipments
|
51
|
+
include Spree::API::Client::CreditCards
|
52
|
+
include Spree::API::Client::Adjustments
|
53
|
+
include Spree::API::Client::Promotions
|
54
|
+
include Spree::API::Client::Checkouts
|
55
|
+
|
56
|
+
attr_accessor :api_endpoint, :api_token, :per_page, :locale
|
57
|
+
def initialize(api_endpoint, api_token, locale="en-US", options={})
|
58
|
+
@api_endpoint = api_endpoint
|
59
|
+
@api_token = api_token
|
60
|
+
@locale = locale
|
61
|
+
@per_page = options.fetch(:per_page, 30)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Spree
|
2
|
+
module API
|
3
|
+
class Client
|
4
|
+
module Addresses
|
5
|
+
def address(order_number, id, options={})
|
6
|
+
get("orders/#{order_number}/addresses/#{id}", options)
|
7
|
+
end
|
8
|
+
|
9
|
+
# #get addresses by user
|
10
|
+
# def addresses(order_number, options={})
|
11
|
+
# get("orders/#{order_number}/addresses",options)["addresses"]
|
12
|
+
# end
|
13
|
+
|
14
|
+
def update_address(order_number, id, options={})
|
15
|
+
put("orders/#{order_number}/addresses/#{id}", options)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Spree
|
2
|
+
module API
|
3
|
+
class Client
|
4
|
+
module Adjustments
|
5
|
+
def adjustment(id, options={})
|
6
|
+
get("adjustments/#{id}", options)
|
7
|
+
end
|
8
|
+
|
9
|
+
def adjustments(options={})
|
10
|
+
get('adjustments', options)
|
11
|
+
end
|
12
|
+
|
13
|
+
def create_adjustment(options={})
|
14
|
+
post("adjustments", options)
|
15
|
+
end
|
16
|
+
|
17
|
+
def update_adjustment(id, options={})
|
18
|
+
post("adjustments", options)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Spree
|
2
|
+
module API
|
3
|
+
class Client
|
4
|
+
module Checkouts
|
5
|
+
def checkouts(options={})
|
6
|
+
get('checkouts', options)['checkouts']
|
7
|
+
end
|
8
|
+
|
9
|
+
def checkout(order_number, options={})
|
10
|
+
get("checkouts/#{order_number}", options)
|
11
|
+
end
|
12
|
+
|
13
|
+
def create_checkout(options={})
|
14
|
+
post("checkouts", options)
|
15
|
+
end
|
16
|
+
|
17
|
+
def update_checkout(order_number, options={})
|
18
|
+
put("checkouts/#{order_number}", options)
|
19
|
+
end
|
20
|
+
|
21
|
+
def next(order_number)
|
22
|
+
put("checkouts/#{order_number}/next")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Spree
|
2
|
+
module API
|
3
|
+
class Client
|
4
|
+
module Connection
|
5
|
+
def connection(options={})
|
6
|
+
options = {
|
7
|
+
:ssl => { :verify => false },
|
8
|
+
:url => api_endpoint,
|
9
|
+
}.merge(options)
|
10
|
+
|
11
|
+
connection = Faraday.new(options) do |builder|
|
12
|
+
builder.request :json
|
13
|
+
|
14
|
+
builder.use FaradayMiddleware::FollowRedirects
|
15
|
+
builder.use FaradayMiddleware::Mashify
|
16
|
+
builder.use Faraday::Response::RaiseError
|
17
|
+
|
18
|
+
builder.use FaradayMiddleware::ParseJson, :content_type => /\bjson$/
|
19
|
+
|
20
|
+
builder.adapter Faraday.default_adapter
|
21
|
+
end
|
22
|
+
connection
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Spree
|
2
|
+
module API
|
3
|
+
class Client
|
4
|
+
module CreditCards
|
5
|
+
def credit_card(id, options={})
|
6
|
+
get("credit_cards/#{id}", options)
|
7
|
+
end
|
8
|
+
|
9
|
+
def credit_cards(options={})
|
10
|
+
get('credit_cards', options)["credit_cards"]
|
11
|
+
end
|
12
|
+
|
13
|
+
#NOTE- requires ID of already existing Spree::CreditCard
|
14
|
+
def authorize_credit_card(options={})
|
15
|
+
post('credit_cards/authorize', options)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module Spree
|
2
|
+
module API
|
3
|
+
class Client
|
4
|
+
class Error < StandardError
|
5
|
+
|
6
|
+
# Raised when Spree returns a 4xx or 500 HTTP status code
|
7
|
+
class ClientError < Error
|
8
|
+
|
9
|
+
# Creates a new error from an HTTP environement
|
10
|
+
#
|
11
|
+
# @param error [Exception]
|
12
|
+
# @return [Spree::API::Client::Error::ClientError]
|
13
|
+
def initialize(error=nil)
|
14
|
+
if error.respond_to?(:response) && !error.response.nil?
|
15
|
+
http_error = error.response[:status].to_i
|
16
|
+
|
17
|
+
if ERROR_MAP.has_key?(http_error)
|
18
|
+
raise ERROR_MAP[http_error].new(
|
19
|
+
message: error.response[:body]["error"],
|
20
|
+
validation_errors: error.response[:body]["errors"] || error.response[:body]["exception"])
|
21
|
+
else
|
22
|
+
super
|
23
|
+
end
|
24
|
+
else
|
25
|
+
super
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end # ClientError
|
29
|
+
|
30
|
+
# Raised when Spree returns a 401 HTTP status code
|
31
|
+
class Unauthorized < Error; end
|
32
|
+
|
33
|
+
# Raised when Spree returns a 404 HTTP status code
|
34
|
+
class NotFound < Error; end
|
35
|
+
|
36
|
+
# Raised when Spree returns a 422 HTTP status code
|
37
|
+
class UnprocessableEntity < Error; end
|
38
|
+
|
39
|
+
ERROR_MAP = {
|
40
|
+
401 => Spree::API::Client::Error::Unauthorized,
|
41
|
+
404 => Spree::API::Client::Error::NotFound,
|
42
|
+
422 => Spree::API::Client::Error::UnprocessableEntity
|
43
|
+
}
|
44
|
+
end # Error
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|