spree-api-client 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
@@ -0,0 +1,9 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.8.7
4
+ - 1.9.2
5
+ - 1.9.3
6
+ - jruby-18mode # JRuby in 1.8 mode
7
+ - jruby-19mode # JRuby in 1.9 mode
8
+ - rbx-18mode
9
+ - rbx-19mode
@@ -0,0 +1,8 @@
1
+ ## Contributing
2
+ * Fork the project.
3
+ * Make your feature addition or bug fix.
4
+ * Add tests for it. This is important so I don't break it in a
5
+ future version unintentionally.
6
+ * Commit, do not mess with rakefile, version, or history.
7
+ (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
8
+ * Send a pull request. Bonus points for topic branches.
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2012 Andrew Nesbitt
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,61 @@
1
+ # Spree::API::Client
2
+
3
+ [![Build Status](https://secure.travis-ci.org/andrew/spree-api-client.png)](https://travis-ci.org/andrew/spree-api-client)
4
+
5
+ ** Beware: very alpha and untested **
6
+
7
+ A rubygem for interacting with the Spree API: http://api.spreecommerce.com/v1/
8
+
9
+ Heavily inspired by the excellent Octokit: https://github.com/pengwynn/octokit
10
+
11
+ ## Installation
12
+
13
+ Add this line to your application's Gemfile:
14
+
15
+ gem 'spree-api-client'
16
+
17
+ And then execute:
18
+
19
+ $ bundle
20
+
21
+ Or install it yourself as:
22
+
23
+ $ gem install spree-api-client
24
+
25
+ ## Usage
26
+
27
+ client = Spree::API::Client.new('http://example/api', 'yourapitokenstring')
28
+ products = client.products
29
+
30
+ ## TODO
31
+
32
+ * More tests
33
+ * Mock web requests in tests
34
+ * documentation
35
+ * rdoc generation
36
+ * release to rubygems.org
37
+ * gemnasium
38
+ * code climate
39
+ * Error handling
40
+ * Autopagination?
41
+
42
+ ## Development
43
+
44
+ Source hosted at [GitHub](http://github.com/andrew/spree-api-client).
45
+ Report Issues/Feature requests on [GitHub Issues](http://github.com/andrew/spree-api-client/issues).
46
+
47
+ Tests can be ran with `rake spec`
48
+
49
+ ### Note on Patches/Pull Requests
50
+
51
+ * Fork the project.
52
+ * Make your feature addition or bug fix.
53
+ * Add tests for it. This is important so I don't break it in a
54
+ future version unintentionally.
55
+ * Commit, do not mess with rakefile, version, or history.
56
+ (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
57
+ * Send me a pull request. Bonus points for topic branches.
58
+
59
+ ## Copyright
60
+
61
+ Copyright (c) 2012 Andrew Nesbitt. See [LICENSE](https://github.com/andrew/spree-api-client/blob/master/LICENSE) for details.
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env rake
2
+ require 'bundler/gem_tasks'
3
+ require 'rspec/core/rake_task'
4
+
5
+ RSpec::Core::RakeTask.new('spec')
6
+
7
+ task :default => :spec
@@ -0,0 +1,49 @@
1
+ require 'faraday_middleware'
2
+ require "spree-api-client/version"
3
+
4
+ require 'spree-api-client/connection'
5
+ require 'spree-api-client/request'
6
+
7
+ require 'spree-api-client/products'
8
+ require 'spree-api-client/variants'
9
+ require 'spree-api-client/orders'
10
+ require 'spree-api-client/taxonomies'
11
+ require 'spree-api-client/addresses'
12
+ require 'spree-api-client/countries'
13
+ require 'spree-api-client/zones'
14
+ require 'spree-api-client/properties'
15
+ require 'spree-api-client/line_items'
16
+ require 'spree-api-client/return_authorizations'
17
+ require 'spree-api-client/taxons'
18
+ require 'spree-api-client/payments'
19
+ require 'spree-api-client/shipments'
20
+
21
+ module Spree
22
+ module API
23
+ class Client
24
+ include Spree::API::Client::Connection
25
+ include Spree::API::Client::Request
26
+
27
+ include Spree::API::Client::Products
28
+ include Spree::API::Client::Variants
29
+ include Spree::API::Client::Orders
30
+ include Spree::API::Client::Taxonomies
31
+ include Spree::API::Client::Addresses
32
+ include Spree::API::Client::Countries
33
+ include Spree::API::Client::Zones
34
+ include Spree::API::Client::Properties
35
+ include Spree::API::Client::LineItems
36
+ include Spree::API::Client::ReturnAuthorizations
37
+ include Spree::API::Client::Taxons
38
+ include Spree::API::Client::Payments
39
+ include Spree::API::Client::Shipments
40
+
41
+ attr_accessor :api_endpoint, :api_token, :per_page
42
+ def initialize(api_endpoint, api_token, options={})
43
+ @api_endpoint = api_endpoint
44
+ @api_token = api_token
45
+ @per_page = options.fetch(:per_page, 30)
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,15 @@
1
+ module Spree
2
+ module API
3
+ class Client
4
+ module Addresses
5
+ def address(id, options={})
6
+ get("addresses/#{id}", options)
7
+ end
8
+
9
+ def update_address(id, options={})
10
+ put("addresses/#{id}", options)
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,30 @@
1
+ module Spree
2
+ module API
3
+ class Client
4
+ module Connection
5
+ def connection(options={})
6
+ options = {
7
+ :authenticate => true,
8
+ :force_urlencoded => false,
9
+ :raw => false,
10
+ :ssl => { :verify => false },
11
+ :url => 'http://localhost:4000/store/api', #api_endpoint
12
+ :path_prefix => '/api'
13
+ }.merge(options)
14
+
15
+ connection = Faraday.new(options) do |builder|
16
+ builder.request :json
17
+
18
+ builder.use FaradayMiddleware::FollowRedirects
19
+ builder.use FaradayMiddleware::Mashify
20
+
21
+ builder.use FaradayMiddleware::ParseJson, :content_type => /\bjson$/
22
+
23
+ builder.adapter Faraday.default_adapter
24
+ end
25
+ connection
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,15 @@
1
+ module Spree
2
+ module API
3
+ class Client
4
+ module Countries
5
+ def countries(options={})
6
+ get("countries", options)['countries']
7
+ end
8
+
9
+ def country(id, options={})
10
+ get("countries/#{id}", options)
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,19 @@
1
+ module Spree
2
+ module API
3
+ class Client
4
+ module LineItems
5
+ def create_line_item(order_number, options={})
6
+ post("orders/#{order_number}/line_items/", options)
7
+ end
8
+
9
+ def update_line_item(order_number, line_item_id, options={})
10
+ put("orders/#{order_number}/line_items/#{line_item_id}", options)
11
+ end
12
+
13
+ def delete_line_item(order_number, line_item_id, options={})
14
+ delete("orders/#{order_number}/line_items/#{line_item_id}", options)
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,31 @@
1
+ module Spree
2
+ module API
3
+ class Client
4
+ module Orders
5
+ def orders(options={})
6
+ get('orders', options)['orders']
7
+ end
8
+
9
+ def order(order_number, options={})
10
+ get("orders/#{order_number}", options)
11
+ end
12
+
13
+ def create_order(options={})
14
+ post("orders", options)
15
+ end
16
+
17
+ def update_order_address(order_number, options={})
18
+ put("orders/#{order_number}/address", options)
19
+ end
20
+
21
+ def set_order_shipping_method(order_number, shipping_method_id, options={})
22
+ put("orders/#{order_number}", options.merge(:shipping_method_id => shipping_method_id))
23
+ end
24
+
25
+ def empty_order(order_number, options={})
26
+ put("orders/#{order_number}/empty", options)
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,43 @@
1
+ module Spree
2
+ module API
3
+ class Client
4
+ module Payments
5
+ def payments(order_number, options={})
6
+ get("orders/#{order_number}/payments", options)['payments']
7
+ end
8
+
9
+ def payment(order_number, payment_id, options={})
10
+ get("orders/#{order_number}/payments/#{payment_id}", options)
11
+ end
12
+
13
+ def new_payment(order_number, options={})
14
+ get("orders/#{order_number}/payments/new", options)
15
+ end
16
+
17
+ def create_payment(order_number, options={})
18
+ post("orders/#{order_number}/payments/", options)
19
+ end
20
+
21
+ def authorize_payment(order_number, payment_id, options={})
22
+ put("orders/#{order_number}/payments/#{payment_id}/authorize", options)
23
+ end
24
+
25
+ def capture_payment(order_number, payment_id, options={})
26
+ put("orders/#{order_number}/payments/#{payment_id}/capture", options)
27
+ end
28
+
29
+ def purchase_payment(order_number, payment_id, options={})
30
+ put("orders/#{order_number}/payments/#{payment_id}/purchase", options)
31
+ end
32
+
33
+ def void_payment(order_number, payment_id, options={})
34
+ put("orders/#{order_number}/payments/#{payment_id}.void", options)
35
+ end
36
+
37
+ def credit_payment(order_number, payment_id, options={})
38
+ put("orders/#{order_number}/payments/#{payment_id}/credit", options)
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,31 @@
1
+ module Spree
2
+ module API
3
+ class Client
4
+ module Products
5
+ def products(options={})
6
+ get('products', options)['products']
7
+ end
8
+
9
+ def product(permalink_or_id, options={})
10
+ get("products/#{permalink_or_id}", options)
11
+ end
12
+
13
+ def new_product(options={})
14
+ get("products/#{permalink_or_id}/new", options)
15
+ end
16
+
17
+ def create_product(options={})
18
+ post("products", options)
19
+ end
20
+
21
+ def update_product(permalink_or_id, options={})
22
+ put("products/#{permalink_or_id}", options)
23
+ end
24
+
25
+ def delete_product(permalink_or_id, options={})
26
+ delete("products/#{permalink_or_id}", options)
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,31 @@
1
+ module Spree
2
+ module API
3
+ class Client
4
+ module Properties
5
+ def properties(product_id, options={})
6
+ get("products/#{product_id}/product_properties", options)['product_properties']
7
+ end
8
+
9
+ def property(product_id, property_id, options={})
10
+ get("products/#{product_id}/product_properties/#{property_id}", options)
11
+ end
12
+
13
+ def new_property(product_id, options={})
14
+ get("products/#{product_id}/product_properties/new", options)
15
+ end
16
+
17
+ def create_property(product_id, options={})
18
+ post("products/#{product_id}/product_properties/", options)
19
+ end
20
+
21
+ def update_property(product_id, property_id, options={})
22
+ put("products/#{product_id}/product_properties/#{property_id}", options)
23
+ end
24
+
25
+ def delete_property(product_id, property_id, options={})
26
+ delete("products/#{product_id}/product_properties/#{property_id}", options)
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,49 @@
1
+ module Spree
2
+ module API
3
+ class Client
4
+ module Request
5
+ def request(method, path, options = {})
6
+ token = options.delete(:api_token) || api_token
7
+
8
+ response = connection.send(method) do |request|
9
+
10
+ request.headers['Accept'] = options.delete(:accept) || 'application/json'
11
+
12
+ if token
13
+ request.headers['X-Spree-Token'] = token
14
+ end
15
+
16
+ case method
17
+ when :get
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
26
+ end
27
+
28
+ response
29
+ end
30
+
31
+ def get(path, options = {})
32
+ request(:get, path, options = {}).body
33
+ end
34
+
35
+ def post(path, options={})
36
+ request(:post, path, options).body
37
+ end
38
+
39
+ def put(path, options={})
40
+ request(:put, path, options).body
41
+ end
42
+
43
+ def delete(path, options={})
44
+ request(:delete, path, options).body
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,31 @@
1
+ module Spree
2
+ module API
3
+ class Client
4
+ module ReturnAuthorizations
5
+ def return_authorizations(order_number, options={})
6
+ get("orders/#{order_number}/return_authorizations", options)['return_authorizations']
7
+ end
8
+
9
+ def return_authorization(order_number, return_authorization_id, options={})
10
+ get("orders/#{order_number}/return_authorizations/#{return_authorization_id}", options)
11
+ end
12
+
13
+ def new_return_authorization(order_number, options={})
14
+ get("orders/#{order_number}/return_authorizations/new", options)
15
+ end
16
+
17
+ def create_return_authorization(order_number, options={})
18
+ post("orders/#{order_number}/return_authorizations/", options)
19
+ end
20
+
21
+ def update_return_authorization(product_id, return_authorization_id, options={})
22
+ put("orders/#{order_number}/return_authorizations/#{return_authorization_id}", options)
23
+ end
24
+
25
+ def delete_return_authorization(product_id, return_authorization_id, options={})
26
+ delete("orders/#{order_number}/return_authorizations/#{return_authorization_id}", options)
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,15 @@
1
+ module Spree
2
+ module API
3
+ class Client
4
+ module Shipments
5
+ def shipment_ready(order_number, shipment_id, options={})
6
+ put("orders/#{order_number}/shipments/#{shipment_id}/ready", options)
7
+ end
8
+
9
+ def ship_shipment(order_number, shipment_id, options={})
10
+ put("orders/#{order_number}/shipments/#{shipment_id}/ship", options)
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,31 @@
1
+ module Spree
2
+ module API
3
+ class Client
4
+ module Taxonomies
5
+ def taxonomies(options={})
6
+ get('taxonomies', options)['taxonomies']
7
+ end
8
+
9
+ def taxonomy(id, options={})
10
+ get("taxonomies/#{id}", options)
11
+ end
12
+
13
+ def new_taxonomy(options={})
14
+ get("taxonomies/#{id}/new", options)
15
+ end
16
+
17
+ def create_taxonomy(options={})
18
+ post("taxonomies", options)
19
+ end
20
+
21
+ def update_taxonomy(id, options={})
22
+ put("taxonomies/#{id}", options)
23
+ end
24
+
25
+ def delete_taxonomy(id, options={})
26
+ delete("taxonomies/#{id}", options)
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,27 @@
1
+ module Spree
2
+ module API
3
+ class Client
4
+ module Taxons
5
+ def taxons(taxonomy_id, options={})
6
+ get("taxonomies/#{taxonomy_id}/taxons", options)
7
+ end
8
+
9
+ def taxon(taxonomy_id, taxon_id, options={})
10
+ get("taxonomies/#{taxonomy_id}/taxons/#{taxon_id}", options)
11
+ end
12
+
13
+ def create_taxon(taxonomy_id, options={})
14
+ post("taxonomies/#{taxonomy_id}/taxons/", options)
15
+ end
16
+
17
+ def update_taxon(taxonomy_id, taxon_id, options={})
18
+ put("taxonomies/#{taxonomy_id}/taxons/#{taxon_id}", options)
19
+ end
20
+
21
+ def delete_taxon(taxonomy_id, taxon_id, options={})
22
+ delete("taxonomies/#{taxonomy_id}/taxons/#{taxon_id}", options)
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,31 @@
1
+ module Spree
2
+ module API
3
+ class Client
4
+ module Variants
5
+ def variants(product_id, options={})
6
+ get("products/#{product_id}/variants", options)['variants']
7
+ end
8
+
9
+ def variant(product_id, variant_id, options={})
10
+ get("products/#{product_id}/variants/#{variant_id}", options)
11
+ end
12
+
13
+ def new_variant(product_id, options={})
14
+ get("products/#{product_id}/variants/new", options)
15
+ end
16
+
17
+ def create_variant(product_id, options={})
18
+ post("products/#{product_id}/variants/", options)
19
+ end
20
+
21
+ def update_variant(product_id, variant_id, options={})
22
+ put("products/#{product_id}/variants/#{variant_id}", options)
23
+ end
24
+
25
+ def delete_variant(product_id, variant_id, options={})
26
+ delete("products/#{product_id}/variants/#{variant_id}", options)
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,7 @@
1
+ module Spree
2
+ module API
3
+ class Client
4
+ VERSION = "0.0.1"
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,31 @@
1
+ module Spree
2
+ module API
3
+ class Client
4
+ module Zones
5
+ def zones(options={})
6
+ get('zones', options)['zones']
7
+ end
8
+
9
+ def zone(id, options={})
10
+ get("zones/#{id}", options)
11
+ end
12
+
13
+ def new_zone(options={})
14
+ get("zones/#{id}/new", options)
15
+ end
16
+
17
+ def create_zone(options={})
18
+ post("zones", options)
19
+ end
20
+
21
+ def update_zone(id, options={})
22
+ put("zones/#{id}", options)
23
+ end
24
+
25
+ def delete_zone(id, options={})
26
+ delete("zones/#{id}", options)
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe Spree::API::Client::Addresses do
4
+ describe 'address' do
5
+ it 'should load address' do
6
+ client = Spree::API::Client.new('http://localhost:4000/store/api', 'b56019f04b61a50553ee323f5ab68c6b435871971e79c987')
7
+ address = client.address(1)
8
+ address.should be_a(Hashie::Mash)
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,31 @@
1
+ require 'spec_helper'
2
+
3
+ describe Spree::API::Client do
4
+ describe ".new" do
5
+ it "is a Spree::API::Client" do
6
+ Spree::API::Client.new('http://example.com/api', 'randomtokenstring').should be_a(Spree::API::Client)
7
+ end
8
+ end
9
+
10
+ describe 'api_endpoint' do
11
+ it 'should be stored' do
12
+ client = Spree::API::Client.new('http://example.com/api', 'randomtokenstring')
13
+ client.api_endpoint.should eql('http://example.com/api')
14
+ end
15
+ end
16
+
17
+ describe 'api_token' do
18
+ it 'should be stored' do
19
+ client = Spree::API::Client.new('http://example.com/api', 'randomtokenstring')
20
+ client.api_token.should eql('randomtokenstring')
21
+ end
22
+ end
23
+
24
+ describe 'request' do
25
+ it 'should load stuff from the api' do
26
+ client = Spree::API::Client.new('http://localhost:4000/store/api', 'randomtokenstring')
27
+ response = client.request(:get, 'products')
28
+ response.should be_a(Faraday::Response)
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe Spree::API::Client::Countries do
4
+ describe 'countries' do
5
+ it 'should load countries' do
6
+ client = Spree::API::Client.new('http://localhost:4000/store/api', 'b56019f04b61a50553ee323f5ab68c6b435871971e79c987')
7
+ countries = client.countries
8
+ countries.should be_a(Array)
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe Spree::API::Client::Orders do
4
+ describe 'orders' do
5
+ it 'should load orders' do
6
+ client = Spree::API::Client.new('http://localhost:4000/store/api', 'b56019f04b61a50553ee323f5ab68c6b435871971e79c987')
7
+ orders = client.orders
8
+ orders.should be_a(Array)
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe Spree::API::Client::Payments do
4
+ describe 'payments' do
5
+ it 'should load payments' do
6
+ client = Spree::API::Client.new('http://localhost:4000/store/api', 'b56019f04b61a50553ee323f5ab68c6b435871971e79c987')
7
+ payments = client.payments('R610162112')
8
+ payments.should be_a(Array)
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe Spree::API::Client::Products do
4
+ describe 'products' do
5
+ it 'should load products' do
6
+ client = Spree::API::Client.new('http://localhost:4000/store/api', 'b56019f04b61a50553ee323f5ab68c6b435871971e79c987')
7
+ products = client.products
8
+ products.should be_a(Array)
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe Spree::API::Client::Properties do
4
+ describe 'properties' do
5
+ it 'should load properties' do
6
+ client = Spree::API::Client.new('http://localhost:4000/store/api', 'b56019f04b61a50553ee323f5ab68c6b435871971e79c987')
7
+ properties = client.properties(1)
8
+ properties.should be_a(Array)
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe Spree::API::Client::ReturnAuthorizations do
4
+ describe 'return_authorizations' do
5
+ it 'should load return_authorizations' do
6
+ client = Spree::API::Client.new('http://localhost:4000/store/api', 'b56019f04b61a50553ee323f5ab68c6b435871971e79c987')
7
+ return_authorizations = client.return_authorizations('R781501551')
8
+ return_authorizations.should be_a(Array)
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe Spree::API::Client::Shipments do
4
+ describe 'shipment_ready' do
5
+ it 'should set a shipment to ready' do
6
+ client = Spree::API::Client.new('http://localhost:4000/store/api', 'b56019f04b61a50553ee323f5ab68c6b435871971e79c987')
7
+ shipment = client.shipment_ready(1, 1)
8
+ shipment.should be_a(Hashie::Mash)
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,5 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+ require 'spree-api-client'
4
+ require 'rspec'
5
+ # require 'webmock/rspec'
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe Spree::API::Client::Taxonomies do
4
+ describe 'taxonomies' do
5
+ it 'should load taxonomies' do
6
+ client = Spree::API::Client.new('http://localhost:4000/store/api', 'b56019f04b61a50553ee323f5ab68c6b435871971e79c987')
7
+ taxonomies = client.taxonomies
8
+ taxonomies.should be_a(Array)
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe Spree::API::Client::Taxons do
4
+ describe 'taxons' do
5
+ it 'should load taxons' do
6
+ client = Spree::API::Client.new('http://localhost:4000/store/api', 'b56019f04b61a50553ee323f5ab68c6b435871971e79c987')
7
+ taxons = client.taxons(1)
8
+ taxons.should be_a(Array)
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe Spree::API::Client::Variants do
4
+ describe 'variants' do
5
+ it 'should load variants' do
6
+ client = Spree::API::Client.new('http://localhost:4000/store/api', 'b56019f04b61a50553ee323f5ab68c6b435871971e79c987')
7
+ variants = client.variants(1)
8
+ variants.should be_a(Array)
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe Spree::API::Client::Zones do
4
+ describe 'zones' do
5
+ it 'should load zones' do
6
+ client = Spree::API::Client.new('http://localhost:4000/store/api', 'b56019f04b61a50553ee323f5ab68c6b435871971e79c987')
7
+ zones = client.zones
8
+ zones.should be_a(Array)
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,27 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'spree-api-client/version'
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.name = "spree-api-client"
8
+ gem.version = Spree::API::Client::VERSION
9
+ gem.authors = ["Andrew Nesbitt"]
10
+ gem.email = ["andrewnez@gmail.com"]
11
+ gem.description = %q{A rubygem for interacting with the Spree API}
12
+ gem.summary = %q{A rubygem for interacting with the Spree API}
13
+ gem.homepage = "https://github.com/andrew/spree-api-client"
14
+
15
+ gem.files = `git ls-files`.split($/)
16
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
+ gem.require_paths = ["lib"]
19
+
20
+ gem.add_dependency 'faraday', '~> 0.8'
21
+ gem.add_dependency 'faraday_middleware', '~> 0.9'
22
+ gem.add_dependency 'hashie', '~> 1.2'
23
+ gem.add_dependency 'multi_json', '~> 1.3'
24
+
25
+ gem.add_development_dependency 'rake'
26
+ gem.add_development_dependency 'rspec'
27
+ end
metadata ADDED
@@ -0,0 +1,164 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: spree-api-client
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Andrew Nesbitt
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-12-06 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: faraday
16
+ requirement: &70322126250800 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '0.8'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *70322126250800
25
+ - !ruby/object:Gem::Dependency
26
+ name: faraday_middleware
27
+ requirement: &70322126263240 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ~>
31
+ - !ruby/object:Gem::Version
32
+ version: '0.9'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *70322126263240
36
+ - !ruby/object:Gem::Dependency
37
+ name: hashie
38
+ requirement: &70322126262760 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ version: '1.2'
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: *70322126262760
47
+ - !ruby/object:Gem::Dependency
48
+ name: multi_json
49
+ requirement: &70322126261720 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '1.3'
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: *70322126261720
58
+ - !ruby/object:Gem::Dependency
59
+ name: rake
60
+ requirement: &70322126260140 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: *70322126260140
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: &70322126257560 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: *70322126257560
80
+ description: A rubygem for interacting with the Spree API
81
+ email:
82
+ - andrewnez@gmail.com
83
+ executables: []
84
+ extensions: []
85
+ extra_rdoc_files: []
86
+ files:
87
+ - .gitignore
88
+ - .travis.yml
89
+ - CONTRIBUTING.md
90
+ - Gemfile
91
+ - LICENSE
92
+ - README.md
93
+ - Rakefile
94
+ - lib/spree-api-client.rb
95
+ - lib/spree-api-client/addresses.rb
96
+ - lib/spree-api-client/connection.rb
97
+ - lib/spree-api-client/countries.rb
98
+ - lib/spree-api-client/line_items.rb
99
+ - lib/spree-api-client/orders.rb
100
+ - lib/spree-api-client/payments.rb
101
+ - lib/spree-api-client/products.rb
102
+ - lib/spree-api-client/properties.rb
103
+ - lib/spree-api-client/request.rb
104
+ - lib/spree-api-client/return_authorizations.rb
105
+ - lib/spree-api-client/shipments.rb
106
+ - lib/spree-api-client/taxonomies.rb
107
+ - lib/spree-api-client/taxons.rb
108
+ - lib/spree-api-client/variants.rb
109
+ - lib/spree-api-client/version.rb
110
+ - lib/spree-api-client/zones.rb
111
+ - spec/addresses_spec.rb
112
+ - spec/client_spec.rb
113
+ - spec/countries_spec.rb
114
+ - spec/orders_spec.rb
115
+ - spec/payments_spec.rb
116
+ - spec/products_spec.rb
117
+ - spec/properties_spec.rb
118
+ - spec/return_authorizations_spec.rb
119
+ - spec/shipments_spec.rb
120
+ - spec/spec_helper.rb
121
+ - spec/taxonomies_spec.rb
122
+ - spec/taxons_spec.rb
123
+ - spec/variants_spec.rb
124
+ - spec/zones_spec.rb
125
+ - spree-api-client.gemspec
126
+ homepage: https://github.com/andrew/spree-api-client
127
+ licenses: []
128
+ post_install_message:
129
+ rdoc_options: []
130
+ require_paths:
131
+ - lib
132
+ required_ruby_version: !ruby/object:Gem::Requirement
133
+ none: false
134
+ requirements:
135
+ - - ! '>='
136
+ - !ruby/object:Gem::Version
137
+ version: '0'
138
+ required_rubygems_version: !ruby/object:Gem::Requirement
139
+ none: false
140
+ requirements:
141
+ - - ! '>='
142
+ - !ruby/object:Gem::Version
143
+ version: '0'
144
+ requirements: []
145
+ rubyforge_project:
146
+ rubygems_version: 1.8.11
147
+ signing_key:
148
+ specification_version: 3
149
+ summary: A rubygem for interacting with the Spree API
150
+ test_files:
151
+ - spec/addresses_spec.rb
152
+ - spec/client_spec.rb
153
+ - spec/countries_spec.rb
154
+ - spec/orders_spec.rb
155
+ - spec/payments_spec.rb
156
+ - spec/products_spec.rb
157
+ - spec/properties_spec.rb
158
+ - spec/return_authorizations_spec.rb
159
+ - spec/shipments_spec.rb
160
+ - spec/spec_helper.rb
161
+ - spec/taxonomies_spec.rb
162
+ - spec/taxons_spec.rb
163
+ - spec/variants_spec.rb
164
+ - spec/zones_spec.rb