spree-api-client 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/.ruby-version +1 -0
- data/.travis.yml +7 -5
- data/Gemfile +6 -0
- data/LICENSE +1 -1
- data/README.md +1 -1
- data/fixtures/cassette_library/addresss.yml +46 -0
- data/fixtures/cassette_library/countries.yml +52 -0
- data/fixtures/cassette_library/orders.yml +48 -0
- data/fixtures/cassette_library/payments.yml +48 -0
- data/fixtures/cassette_library/products.yml +66 -0
- data/fixtures/cassette_library/properties.yml +48 -0
- data/fixtures/cassette_library/request.yml +46 -0
- data/fixtures/cassette_library/return_authorizations.yml +48 -0
- data/fixtures/cassette_library/shipment_ready.yml +46 -0
- data/fixtures/cassette_library/taxonomies.yml +48 -0
- data/fixtures/cassette_library/taxons.yml +48 -0
- data/fixtures/cassette_library/variants.yml +63 -0
- data/fixtures/cassette_library/zones.yml +49 -0
- data/lib/spree-api-client/connection.rb +2 -1
- data/lib/spree-api-client/error.rb +47 -0
- data/lib/spree-api-client/orders.rb +2 -1
- data/lib/spree-api-client/request.rb +25 -18
- data/lib/spree-api-client/version.rb +1 -1
- data/spec/addresses_spec.rb +1 -0
- data/spec/client_spec.rb +1 -0
- data/spec/countries_spec.rb +1 -0
- data/spec/orders_spec.rb +1 -0
- data/spec/payments_spec.rb +1 -0
- data/spec/products_spec.rb +1 -0
- data/spec/properties_spec.rb +1 -0
- data/spec/return_authorizations_spec.rb +1 -0
- data/spec/shipments_spec.rb +1 -0
- data/spec/spec_helper.rb +6 -1
- data/spec/support/vcr.rb +9 -0
- data/spec/taxonomies_spec.rb +1 -0
- data/spec/taxons_spec.rb +1 -0
- data/spec/variants_spec.rb +1 -0
- data/spec/zones_spec.rb +1 -0
- data/spree-api-client.gemspec +3 -1
- metadata +96 -16
@@ -0,0 +1,46 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: put
|
5
|
+
uri: http://localhost:4000/store/api/orders/1/shipments/1/ready
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
Accept:
|
11
|
+
- application/json
|
12
|
+
X-Spree-Token:
|
13
|
+
- b56019f04b61a50553ee323f5ab68c6b435871971e79c987
|
14
|
+
Content-Length:
|
15
|
+
- '0'
|
16
|
+
User-Agent:
|
17
|
+
- Ruby
|
18
|
+
response:
|
19
|
+
status:
|
20
|
+
code: 404
|
21
|
+
message: ! 'Not Found '
|
22
|
+
headers:
|
23
|
+
Content-Type:
|
24
|
+
- application/json
|
25
|
+
X-Ua-Compatible:
|
26
|
+
- IE=Edge
|
27
|
+
Cache-Control:
|
28
|
+
- no-cache
|
29
|
+
X-Request-Id:
|
30
|
+
- 10a1c5aac78cf46d9e1e115f95cdf0b2
|
31
|
+
X-Runtime:
|
32
|
+
- '0.036787'
|
33
|
+
Content-Length:
|
34
|
+
- '67'
|
35
|
+
Server:
|
36
|
+
- WEBrick/1.3.1 (Ruby/1.9.3/2012-02-16)
|
37
|
+
Date:
|
38
|
+
- Fri, 07 Dec 2012 17:37:15 GMT
|
39
|
+
Connection:
|
40
|
+
- Keep-Alive
|
41
|
+
body:
|
42
|
+
encoding: US-ASCII
|
43
|
+
string: ! '{"error":"translation missing: en-GB.spree.api.resource_not_found"}'
|
44
|
+
http_version:
|
45
|
+
recorded_at: Fri, 07 Dec 2012 17:37:15 GMT
|
46
|
+
recorded_with: VCR 2.3.0
|
@@ -0,0 +1,48 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: http://localhost:4000/store/api/taxonomies?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
|
+
- ! '"6d4a78870b076c5a43e1017631e3a2a5"'
|
29
|
+
Cache-Control:
|
30
|
+
- max-age=0, private, must-revalidate
|
31
|
+
X-Request-Id:
|
32
|
+
- 818109a0d62f745696fad81744dbfd74
|
33
|
+
X-Runtime:
|
34
|
+
- '0.141291'
|
35
|
+
Content-Length:
|
36
|
+
- '522'
|
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":3,"current_page":1,"pages":1,"taxonomies":[{"taxonomy":{"id":3,"name":"ridebmx","root":{"id":3,"name":"ridebmx","permalink":"ridebmx","position":0,"parent_id":null,"taxonomy_id":3,"taxons":[]}}},{"taxonomy":{"id":1,"name":"rideukbmx","root":{"id":1,"name":"rideukbmx","permalink":"ridebmx","position":0,"parent_id":null,"taxonomy_id":1,"taxons":[]}}},{"taxonomy":{"id":2,"name":"whitelines","root":{"id":2,"name":"whitelines","permalink":"whitelines","position":0,"parent_id":null,"taxonomy_id":2,"taxons":[]}}}]}'
|
46
|
+
http_version:
|
47
|
+
recorded_at: Fri, 07 Dec 2012 17:37:16 GMT
|
48
|
+
recorded_with: VCR 2.3.0
|
@@ -0,0 +1,48 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: http://localhost:4000/store/api/taxonomies/1/taxons?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
|
+
- ! '"d751713988987e9331980363e24189ce"'
|
29
|
+
Cache-Control:
|
30
|
+
- max-age=0, private, must-revalidate
|
31
|
+
X-Request-Id:
|
32
|
+
- 92ea82cb431abd35b20ab737cd348ecd
|
33
|
+
X-Runtime:
|
34
|
+
- '0.033542'
|
35
|
+
Content-Length:
|
36
|
+
- '2'
|
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: ! '[]'
|
46
|
+
http_version:
|
47
|
+
recorded_at: Fri, 07 Dec 2012 17:37:16 GMT
|
48
|
+
recorded_with: VCR 2.3.0
|
@@ -0,0 +1,63 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: http://localhost:4000/store/api/products/1/variants?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
|
+
- ! '"7ebbeb3d86e3857a26aead46fd50dc24"'
|
29
|
+
Cache-Control:
|
30
|
+
- max-age=0, private, must-revalidate
|
31
|
+
X-Request-Id:
|
32
|
+
- 3ea623d6001a50456a17647ca427e6f5
|
33
|
+
X-Runtime:
|
34
|
+
- '0.100396'
|
35
|
+
Content-Length:
|
36
|
+
- '9097'
|
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":30,"total_count":30,"current_page":1,"pages":1,"variants":[{"variant":{"id":1,"name":"Bomb","count_on_hand":0,"sku":"","price":"12.99","weight":null,"height":null,"width":null,"depth":null,"is_master":true,"cost_price":"12.99","permalink":"bomb","option_values":[]}},{"variant":{"id":2,"name":"Bomb","count_on_hand":8,"sku":"","price":"12.99","weight":null,"height":null,"width":null,"depth":null,"is_master":false,"cost_price":null,"permalink":"bomb","option_values":[{"option_value":{"id":1,"name":"Small","presentation":"Small","option_type_name":"Size","option_type_id":1}}]}},{"variant":{"id":3,"name":"Bomb","count_on_hand":20,"sku":"","price":"12.99","weight":null,"height":null,"width":null,"depth":null,"is_master":false,"cost_price":null,"permalink":"bomb","option_values":[{"option_value":{"id":2,"name":"Medium","presentation":"Medium","option_type_name":"Size","option_type_id":1}}]}},{"variant":{"id":4,"name":"Bomb","count_on_hand":14,"sku":"","price":"12.99","weight":null,"height":null,"width":null,"depth":null,"is_master":false,"cost_price":null,"permalink":"bomb","option_values":[{"option_value":{"id":3,"name":"Large","presentation":"Large","option_type_name":"Size","option_type_id":1}}]}},{"variant":{"id":5,"name":"Disobey","count_on_hand":0,"sku":"","price":"12.99","weight":null,"height":null,"width":null,"depth":null,"is_master":true,"cost_price":"12.99","permalink":"disobey","option_values":[]}},{"variant":{"id":6,"name":"Disobey","count_on_hand":10,"sku":"","price":"12.99","weight":null,"height":null,"width":null,"depth":null,"is_master":false,"cost_price":null,"permalink":"disobey","option_values":[{"option_value":{"id":1,"name":"Small","presentation":"Small","option_type_name":"Size","option_type_id":1}}]}},{"variant":{"id":7,"name":"Disobey","count_on_hand":19,"sku":"","price":"12.99","weight":null,"height":null,"width":null,"depth":null,"is_master":false,"cost_price":null,"permalink":"disobey","option_values":[{"option_value":{"id":2,"name":"Medium","presentation":"Medium","option_type_name":"Size","option_type_id":1}}]}},{"variant":{"id":8,"name":"Disobey","count_on_hand":15,"sku":"","price":"12.99","weight":null,"height":null,"width":null,"depth":null,"is_master":false,"cost_price":null,"permalink":"disobey","option_values":[{"option_value":{"id":3,"name":"Large","presentation":"Large","option_type_name":"Size","option_type_id":1}}]}},{"variant":{"id":9,"name":"POV","count_on_hand":0,"sku":"","price":"12.99","weight":null,"height":null,"width":null,"depth":null,"is_master":true,"cost_price":"12.99","permalink":"pov","option_values":[]}},{"variant":{"id":10,"name":"POV","count_on_hand":10,"sku":"","price":"12.99","weight":null,"height":null,"width":null,"depth":null,"is_master":false,"cost_price":null,"permalink":"pov","option_values":[{"option_value":{"id":1,"name":"Small","presentation":"Small","option_type_name":"Size","option_type_id":1}}]}},{"variant":{"id":11,"name":"POV","count_on_hand":19,"sku":"","price":"12.99","weight":null,"height":null,"width":null,"depth":null,"is_master":false,"cost_price":null,"permalink":"pov","option_values":[{"option_value":{"id":2,"name":"Medium","presentation":"Medium","option_type_name":"Size","option_type_id":1}}]}},{"variant":{"id":12,"name":"POV","count_on_hand":15,"sku":"","price":"12.99","weight":null,"height":null,"width":null,"depth":null,"is_master":false,"cost_price":null,"permalink":"pov","option_values":[{"option_value":{"id":3,"name":"Large","presentation":"Large","option_type_name":"Size","option_type_id":1}}]}},{"variant":{"id":13,"name":"Bomb","count_on_hand":5,"sku":"","price":"12.99","weight":null,"height":null,"width":null,"depth":null,"is_master":false,"cost_price":"12.99","permalink":"bomb","option_values":[{"option_value":{"id":4,"name":"XL","presentation":"XL","option_type_name":"Size","option_type_id":1}}]}},{"variant":{"id":14,"name":"Disobey","count_on_hand":5,"sku":"","price":"12.99","weight":null,"height":null,"width":null,"depth":null,"is_master":false,"cost_price":null,"permalink":"disobey","option_values":[{"option_value":{"id":4,"name":"XL","presentation":"XL","option_type_name":"Size","option_type_id":1}}]}},{"variant":{"id":15,"name":"POV","count_on_hand":5,"sku":"","price":"12.99","weight":null,"height":null,"width":null,"depth":null,"is_master":false,"cost_price":null,"permalink":"pov","option_values":[{"option_value":{"id":4,"name":"XL","presentation":"XL","option_type_name":"Size","option_type_id":1}}]}},{"variant":{"id":16,"name":"Whitelines
|
46
|
+
1","count_on_hand":0,"sku":"","price":"14.0","weight":null,"height":null,"width":null,"depth":null,"is_master":true,"cost_price":null,"permalink":"whitelines-1","option_values":[]}},{"variant":{"id":17,"name":"Whitelines
|
47
|
+
1","count_on_hand":0,"sku":"","price":"14.0","weight":null,"height":null,"width":null,"depth":null,"is_master":false,"cost_price":null,"permalink":"whitelines-1","option_values":[{"option_value":{"id":1,"name":"Small","presentation":"Small","option_type_name":"Size","option_type_id":1}}]}},{"variant":{"id":18,"name":"Whitelines
|
48
|
+
1","count_on_hand":0,"sku":"","price":"14.0","weight":null,"height":null,"width":null,"depth":null,"is_master":false,"cost_price":null,"permalink":"whitelines-1","option_values":[{"option_value":{"id":2,"name":"Medium","presentation":"Medium","option_type_name":"Size","option_type_id":1}}]}},{"variant":{"id":19,"name":"Whitelines
|
49
|
+
1","count_on_hand":0,"sku":"","price":"14.0","weight":null,"height":null,"width":null,"depth":null,"is_master":false,"cost_price":null,"permalink":"whitelines-1","option_values":[{"option_value":{"id":3,"name":"Large","presentation":"Large","option_type_name":"Size","option_type_id":1}}]}},{"variant":{"id":20,"name":"Whitelines
|
50
|
+
1","count_on_hand":0,"sku":"","price":"14.0","weight":null,"height":null,"width":null,"depth":null,"is_master":false,"cost_price":null,"permalink":"whitelines-1","option_values":[{"option_value":{"id":4,"name":"XL","presentation":"XL","option_type_name":"Size","option_type_id":1}}]}},{"variant":{"id":21,"name":"Whitelines
|
51
|
+
2","count_on_hand":0,"sku":"","price":"14.0","weight":null,"height":null,"width":null,"depth":null,"is_master":true,"cost_price":null,"permalink":"whitelines-2","option_values":[]}},{"variant":{"id":22,"name":"Whitelines
|
52
|
+
3","count_on_hand":0,"sku":"","price":"14.0","weight":null,"height":null,"width":null,"depth":null,"is_master":true,"cost_price":null,"permalink":"whitelines-3","option_values":[]}},{"variant":{"id":23,"name":"Whitelines
|
53
|
+
2","count_on_hand":0,"sku":"","price":"14.0","weight":null,"height":null,"width":null,"depth":null,"is_master":false,"cost_price":null,"permalink":"whitelines-2","option_values":[{"option_value":{"id":1,"name":"Small","presentation":"Small","option_type_name":"Size","option_type_id":1}}]}},{"variant":{"id":24,"name":"Whitelines
|
54
|
+
2","count_on_hand":0,"sku":"","price":"14.0","weight":null,"height":null,"width":null,"depth":null,"is_master":false,"cost_price":null,"permalink":"whitelines-2","option_values":[{"option_value":{"id":2,"name":"Medium","presentation":"Medium","option_type_name":"Size","option_type_id":1}}]}},{"variant":{"id":25,"name":"Whitelines
|
55
|
+
2","count_on_hand":0,"sku":"","price":"14.0","weight":null,"height":null,"width":null,"depth":null,"is_master":false,"cost_price":null,"permalink":"whitelines-2","option_values":[{"option_value":{"id":3,"name":"Large","presentation":"Large","option_type_name":"Size","option_type_id":1}}]}},{"variant":{"id":26,"name":"Whitelines
|
56
|
+
2","count_on_hand":0,"sku":"","price":"14.0","weight":null,"height":null,"width":null,"depth":null,"is_master":false,"cost_price":null,"permalink":"whitelines-2","option_values":[{"option_value":{"id":4,"name":"XL","presentation":"XL","option_type_name":"Size","option_type_id":1}}]}},{"variant":{"id":27,"name":"Whitelines
|
57
|
+
3","count_on_hand":0,"sku":"","price":"14.0","weight":null,"height":null,"width":null,"depth":null,"is_master":false,"cost_price":null,"permalink":"whitelines-3","option_values":[{"option_value":{"id":1,"name":"Small","presentation":"Small","option_type_name":"Size","option_type_id":1}}]}},{"variant":{"id":28,"name":"Whitelines
|
58
|
+
3","count_on_hand":0,"sku":"","price":"14.0","weight":null,"height":null,"width":null,"depth":null,"is_master":false,"cost_price":null,"permalink":"whitelines-3","option_values":[{"option_value":{"id":2,"name":"Medium","presentation":"Medium","option_type_name":"Size","option_type_id":1}}]}},{"variant":{"id":29,"name":"Whitelines
|
59
|
+
3","count_on_hand":0,"sku":"","price":"14.0","weight":null,"height":null,"width":null,"depth":null,"is_master":false,"cost_price":null,"permalink":"whitelines-3","option_values":[{"option_value":{"id":3,"name":"Large","presentation":"Large","option_type_name":"Size","option_type_id":1}}]}},{"variant":{"id":30,"name":"Whitelines
|
60
|
+
3","count_on_hand":0,"sku":"","price":"14.0","weight":null,"height":null,"width":null,"depth":null,"is_master":false,"cost_price":null,"permalink":"whitelines-3","option_values":[{"option_value":{"id":4,"name":"XL","presentation":"XL","option_type_name":"Size","option_type_id":1}}]}}]}'
|
61
|
+
http_version:
|
62
|
+
recorded_at: Fri, 07 Dec 2012 17:37:16 GMT
|
63
|
+
recorded_with: VCR 2.3.0
|
@@ -0,0 +1,49 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: http://localhost:4000/store/api/zones?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
|
@@ -8,7 +8,7 @@ module Spree
|
|
8
8
|
:force_urlencoded => false,
|
9
9
|
:raw => false,
|
10
10
|
:ssl => { :verify => false },
|
11
|
-
:url
|
11
|
+
:url => api_endpoint,
|
12
12
|
:path_prefix => '/api'
|
13
13
|
}.merge(options)
|
14
14
|
|
@@ -17,6 +17,7 @@ module Spree
|
|
17
17
|
|
18
18
|
builder.use FaradayMiddleware::FollowRedirects
|
19
19
|
builder.use FaradayMiddleware::Mashify
|
20
|
+
builder.use Faraday::Response::RaiseError
|
20
21
|
|
21
22
|
builder.use FaradayMiddleware::ParseJson, :content_type => /\bjson$/
|
22
23
|
|
@@ -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
|
@@ -19,7 +19,8 @@ module Spree
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def set_order_shipping_method(order_number, shipping_method_id, options={})
|
22
|
-
|
22
|
+
order_options = (options[:order] || {}).merge(:shipping_method_id => shipping_method_id)
|
23
|
+
put("orders/#{order_number}", options.merge(order: order_options))
|
23
24
|
end
|
24
25
|
|
25
26
|
def empty_order(order_number, options={})
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'spree-api-client/error'
|
2
|
+
|
1
3
|
module Spree
|
2
4
|
module API
|
3
5
|
class Client
|
@@ -5,31 +7,36 @@ module Spree
|
|
5
7
|
def request(method, path, options = {})
|
6
8
|
token = options.delete(:api_token) || api_token
|
7
9
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
10
|
+
begin
|
11
|
+
response = connection.send(method) do |request|
|
12
|
+
|
13
|
+
request.headers['Accept'] = options.delete(:accept) || 'application/json'
|
14
|
+
|
15
|
+
if token
|
16
|
+
request.headers['X-Spree-Token'] = token
|
17
|
+
end
|
18
|
+
|
19
|
+
case method
|
20
|
+
when :get
|
21
|
+
options.merge(:per_page => per_page)
|
22
|
+
request.url(path, options)
|
23
|
+
when :delete, :head
|
24
|
+
request.url(path, options)
|
25
|
+
when :patch, :post, :put
|
26
|
+
request.path = path
|
27
|
+
request.body = MultiJson.dump(options) unless options.empty?
|
28
|
+
end
|
14
29
|
end
|
15
30
|
|
16
|
-
|
17
|
-
|
18
|
-
options.merge!(:per_page => per_page) if per_page
|
19
|
-
request.url(path, options)
|
20
|
-
when :delete, :head
|
21
|
-
request.url(path, options)
|
22
|
-
when :patch, :post, :put
|
23
|
-
request.path = path
|
24
|
-
request.body = MultiJson.dump(options) unless options.empty?
|
25
|
-
end
|
31
|
+
rescue Faraday::Error::ClientError => error
|
32
|
+
raise Spree::API::Client::Error::ClientError.new(error)
|
26
33
|
end
|
27
34
|
|
28
35
|
response
|
29
36
|
end
|
30
|
-
|
37
|
+
|
31
38
|
def get(path, options = {})
|
32
|
-
request(:get, path, options
|
39
|
+
request(:get, path, options).body
|
33
40
|
end
|
34
41
|
|
35
42
|
def post(path, options={})
|
data/spec/addresses_spec.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Spree::API::Client::Addresses do
|
4
|
+
use_vcr_cassette "addresss", :record => :new_episodes
|
4
5
|
describe 'address' do
|
5
6
|
it 'should load address' do
|
6
7
|
client = Spree::API::Client.new('http://localhost:4000/store/api', 'b56019f04b61a50553ee323f5ab68c6b435871971e79c987')
|
data/spec/client_spec.rb
CHANGED
@@ -22,6 +22,7 @@ describe Spree::API::Client do
|
|
22
22
|
end
|
23
23
|
|
24
24
|
describe 'request' do
|
25
|
+
use_vcr_cassette "request", :record => :new_episodes
|
25
26
|
it 'should load stuff from the api' do
|
26
27
|
client = Spree::API::Client.new('http://localhost:4000/store/api', 'randomtokenstring')
|
27
28
|
response = client.request(:get, 'products')
|
data/spec/countries_spec.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Spree::API::Client::Countries do
|
4
|
+
use_vcr_cassette "countries", :record => :new_episodes
|
4
5
|
describe 'countries' do
|
5
6
|
it 'should load countries' do
|
6
7
|
client = Spree::API::Client.new('http://localhost:4000/store/api', 'b56019f04b61a50553ee323f5ab68c6b435871971e79c987')
|
data/spec/orders_spec.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Spree::API::Client::Orders do
|
4
|
+
use_vcr_cassette "orders", :record => :new_episodes
|
4
5
|
describe 'orders' do
|
5
6
|
it 'should load orders' do
|
6
7
|
client = Spree::API::Client.new('http://localhost:4000/store/api', 'b56019f04b61a50553ee323f5ab68c6b435871971e79c987')
|
data/spec/payments_spec.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Spree::API::Client::Payments do
|
4
|
+
use_vcr_cassette "payments", :record => :new_episodes
|
4
5
|
describe 'payments' do
|
5
6
|
it 'should load payments' do
|
6
7
|
client = Spree::API::Client.new('http://localhost:4000/store/api', 'b56019f04b61a50553ee323f5ab68c6b435871971e79c987')
|