bigcommerce-test 0.8.42
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.
- data/LICENSE +20 -0
- data/README.md +130 -0
- data/Rakefile +11 -0
- data/bigcommerce.gemspec +35 -0
- data/lib/big_commerce.rb +1 -0
- data/lib/bigcommerce_test.rb +7 -0
- data/lib/bigcommerce_test/api.rb +458 -0
- data/lib/bigcommerce_test/connection.rb +99 -0
- data/lib/bigcommerce_test/version.rb +6 -0
- data/spec/big_commerce_spec.rb +9 -0
- data/spec/integration/orders_spec.rb +18 -0
- data/spec/spec_helper.rb +27 -0
- data/spec/support/integration_context.rb +13 -0
- data/spec/support/mock_api_context.rb +10 -0
- data/spec/unit/api_request_spec.rb +34 -0
- data/spec/unit/connection_spec.rb +24 -0
- data/spec/unit/date_time_spec.rb +31 -0
- data/spec/unit/version_spec.rb +13 -0
- metadata +242 -0
data/LICENSE
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
Copyright (C) Bigcommerce, 2011.
|
|
2
|
+
All rights reserved.
|
|
3
|
+
|
|
4
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
5
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
6
|
+
in the Software without restriction, including without limitation the rights
|
|
7
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
8
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
9
|
+
furnished to do so, subject to the following conditions:
|
|
10
|
+
|
|
11
|
+
The above copyright notice and this permission notice shall be included in
|
|
12
|
+
all copies or substantial portions of the Software.
|
|
13
|
+
|
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
15
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
16
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
17
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
18
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
19
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
20
|
+
THE SOFTWARE.
|
data/README.md
ADDED
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
Bigcommerce API V2 - Ruby Client
|
|
2
|
+
================================
|
|
3
|
+
|
|
4
|
+
[](https://rubygems.org/gems/bigcommerce)
|
|
5
|
+
[](https://travis-ci.org/bigcommerce/bigcommerce-api-ruby)
|
|
6
|
+
[](https://gemnasium.com/bigcommerce/bigcommerce-api-ruby)
|
|
7
|
+
[](https://codeclimate.com/github/bigcommerce/bigcommerce-api-ruby)
|
|
8
|
+
[](https://coveralls.io/r/bigcommerce/bigcommerce-api-ruby?branch=master)
|
|
9
|
+
|
|
10
|
+
This library provides a wrapper around the Bigcommerce REST API for use within
|
|
11
|
+
Ruby apps or via the console.
|
|
12
|
+
|
|
13
|
+
Note
|
|
14
|
+
----
|
|
15
|
+
If you find anything that is missing or needs clean up, please feel free to fork
|
|
16
|
+
it and submit a changes with your pull request.
|
|
17
|
+
|
|
18
|
+
Requirements
|
|
19
|
+
------------
|
|
20
|
+
|
|
21
|
+
- Ruby 1.9+
|
|
22
|
+
|
|
23
|
+
To connect to the API, you need the following credentials:
|
|
24
|
+
|
|
25
|
+
- Secure URL pointing to a Bigcommerce store
|
|
26
|
+
- Username of an authorized admin user of the store
|
|
27
|
+
- API key for the user
|
|
28
|
+
|
|
29
|
+
A valid API key is required to authenticate requests. To grant API access for a
|
|
30
|
+
user, go to Control Panel > Users > Edit User and make sure that the
|
|
31
|
+
'Enable API access?' checkbox is ticked.
|
|
32
|
+
|
|
33
|
+
Installation
|
|
34
|
+
------------
|
|
35
|
+
|
|
36
|
+
Download the lib folder and copy it to a path accessible within your app, or
|
|
37
|
+
install the package directly from Rubygems:
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
gem install bigcommerce
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Note that the RubyGems version of this gem might be outdated. You can install the
|
|
44
|
+
gem directly from this repo. If you are using Rails, you can point your Gemfile
|
|
45
|
+
to this git repo directly or do a local install of the gem by -
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
rake build
|
|
49
|
+
gem install pkg/bigcommerce-*.gem
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Configuration
|
|
53
|
+
-------------
|
|
54
|
+
|
|
55
|
+
To use the API client in your Ruby code, provide the required credentials as
|
|
56
|
+
follows:
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
require 'bigcommerce'
|
|
60
|
+
|
|
61
|
+
api = Bigcommerce::Api.new({
|
|
62
|
+
:store_url => "https://store.mybigcommerce.com",
|
|
63
|
+
:username => "admin",
|
|
64
|
+
:api_key => "d81aada4c19c34d913e18f07fd7f36ca"
|
|
65
|
+
})
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
If you want to enable SSL certificates -
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
require 'bigcommerce'
|
|
72
|
+
api = Bigcommerce::Api.new({
|
|
73
|
+
:store_url => "https://store.mybigcommerce.com",
|
|
74
|
+
:username => "admin",
|
|
75
|
+
:api_key => "d81aada4c19c34d913e18f07fd7f36ca"
|
|
76
|
+
:ssl_client_cert => OpenSSL::X509::Certificate.new(File.read("cert.pem")),
|
|
77
|
+
:ssl_client_key => OpenSSL::PKey::RSA.new(File.read("key.pem"), "passphrase, if any"),
|
|
78
|
+
:ssl_ca_file => "ca_certificate.pem",
|
|
79
|
+
:verify_ssl => OpenSSL::SSL::VERIFY_PEER
|
|
80
|
+
})
|
|
81
|
+
```
|
|
82
|
+
Remember that the fields `:ssl_client_cert`, `:ssl_client_key`, `:ssl_ca_file`
|
|
83
|
+
and `:verify_ssl` are all required when enabling SSL certificates.
|
|
84
|
+
|
|
85
|
+
Connecting to the store
|
|
86
|
+
-----------------------
|
|
87
|
+
|
|
88
|
+
Ping the get_time method to check that your configuration is working and you
|
|
89
|
+
can connect successfully to the store:
|
|
90
|
+
|
|
91
|
+
```
|
|
92
|
+
ping = api.get_time
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Usage
|
|
96
|
+
-----
|
|
97
|
+
|
|
98
|
+
The API object acts as a gateway to all top level resources in the V2 API.
|
|
99
|
+
|
|
100
|
+
Fetch Data
|
|
101
|
+
```
|
|
102
|
+
orders = api.get_orders
|
|
103
|
+
orders = api.get_orders({:min_id=>100,:max_id=>101})
|
|
104
|
+
orders = api.get_orders(:is_deleted => true)
|
|
105
|
+
|
|
106
|
+
products = api.get_products
|
|
107
|
+
products = api.get_products(:description=>"iphone", :condition=>"New")
|
|
108
|
+
|
|
109
|
+
options = api.get_options
|
|
110
|
+
options = api.get_options(:type=>"MT")
|
|
111
|
+
...
|
|
112
|
+
|
|
113
|
+
```
|
|
114
|
+
Create Data
|
|
115
|
+
```
|
|
116
|
+
api.create_products({:name => "Spiderman - The best return",:price => 9.99,:categories => [17],:type =>"physical",:availability => "available", :weight => 1})
|
|
117
|
+
|
|
118
|
+
api.update_products(31,{:name => "marvel comics spiderman",:sku => "marvel-spidey-1", :inventory_tracking => "simple", :inventory_level => 500})
|
|
119
|
+
|
|
120
|
+
api.update_orders(101,{:status_id => 12, :is_deleted => true})
|
|
121
|
+
|
|
122
|
+
```
|
|
123
|
+
Update Data
|
|
124
|
+
|
|
125
|
+
```
|
|
126
|
+
api.update_products(31,{:name => "marvel comics spiderman",:sku => "marvel-spidey-1", :inventory_tracking => "simple", :inventory_level => 500})
|
|
127
|
+
|
|
128
|
+
api.update_optionsets(13,{:name => "Marvel toys"})
|
|
129
|
+
|
|
130
|
+
```
|
data/Rakefile
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
require 'bundler/gem_tasks'
|
|
2
|
+
require 'ci/reporter/rake/rspec'
|
|
3
|
+
require 'rspec/core/rake_task'
|
|
4
|
+
|
|
5
|
+
Bundler::GemHelper.install_tasks
|
|
6
|
+
|
|
7
|
+
RSpec::Core::RakeTask.new(:spec) do |spec|
|
|
8
|
+
spec.pattern = 'spec/**/*_spec.rb'
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
task :default => ['ci:setup:rspec', :spec]
|
data/bigcommerce.gemspec
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
require File.expand_path('../lib/bigcommerce_test/version', __FILE__)
|
|
3
|
+
|
|
4
|
+
Gem::Specification.new do |s|
|
|
5
|
+
if RUBY_VERSION < '1.9'
|
|
6
|
+
s.add_dependency('activesupport', '< 4.0')
|
|
7
|
+
else
|
|
8
|
+
s.add_dependency('activesupport')
|
|
9
|
+
end
|
|
10
|
+
s.add_dependency('json')
|
|
11
|
+
s.add_dependency('rest-client')
|
|
12
|
+
if RUBY_VERSION >= '1.9'
|
|
13
|
+
s.add_development_dependency("coveralls")
|
|
14
|
+
end
|
|
15
|
+
s.add_development_dependency("ci_reporter")
|
|
16
|
+
s.add_development_dependency("mocha")
|
|
17
|
+
s.add_development_dependency("rake")
|
|
18
|
+
s.add_development_dependency("rspec", '~> 2.11')
|
|
19
|
+
s.add_development_dependency("vcr")
|
|
20
|
+
s.add_development_dependency("webmock", '1.9')
|
|
21
|
+
s.authors = ["Mark Rickerby", "Rob Howard", "Saranyan Vigraham", "Sasha Gerrand"]
|
|
22
|
+
s.date = Time.now.strftime("%Y-%m-%d")
|
|
23
|
+
s.description = "Test Version of the Bigcommerce API lib - Please use the official version for your purposes"
|
|
24
|
+
s.email = ["mark.rickerby@bigcommerce.com",
|
|
25
|
+
"rob.howard@bigcommerce.com",
|
|
26
|
+
"saranyan.vigraham@bigcommerce.com",
|
|
27
|
+
"sasha.gerrand@bigcommerce.com"]
|
|
28
|
+
s.files = ["LICENSE", "Rakefile", "README.md", "bigcommerce.gemspec"] + Dir['./**/*.rb'] + Dir['./**/*.crt']
|
|
29
|
+
s.has_rdoc = false
|
|
30
|
+
s.homepage = "http://github.com/saranyan/bigcommerce-api-ruby"
|
|
31
|
+
s.name = "bigcommerce-test"
|
|
32
|
+
s.summary = "Enables Ruby applications to communicate with the Bigcommerce API"
|
|
33
|
+
s.test_files = Dir.glob('spec/**/*_spec.rb')
|
|
34
|
+
s.version = BigcommerceTest::VERSION
|
|
35
|
+
end
|
data/lib/big_commerce.rb
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
raise "'big_commerce' (BigCommerce::Api) is no longer supported. Please require 'bigcommerce' (Bigcommerce::Api)"
|
|
@@ -0,0 +1,458 @@
|
|
|
1
|
+
module BigcommerceTest
|
|
2
|
+
class Api
|
|
3
|
+
|
|
4
|
+
def initialize(configuration={})
|
|
5
|
+
@connection = Connection.new(configuration)
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def connection
|
|
9
|
+
@connection
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def store_url=(store_url)
|
|
13
|
+
@connection.store_url = store_url
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def username=(username)
|
|
17
|
+
@connection.username = username
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def api_key=(api_key)
|
|
21
|
+
@connection.api_key = api_key
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def verify_ssl=(verify)
|
|
25
|
+
@connection.verify_ssl = verify
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def ca_file=(path)
|
|
29
|
+
@connection.ca_file = path
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def to_rfc2822(datetime)
|
|
33
|
+
datetime.strftime("%a, %d %b %Y %H:%M:%S %z")
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def get_time
|
|
37
|
+
@connection.get '/time'
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def get_brands(options={})
|
|
41
|
+
@connection.get("/brands", options)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def get_brands_count
|
|
45
|
+
@connection.get '/brands/count'
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def get_brand(id)
|
|
49
|
+
@connection.get("/brands/#{id}", {})
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def create_brands(options={})
|
|
53
|
+
@connection.post("/brands", options)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def update_brand(id, options={})
|
|
57
|
+
@connection.put("/brands/#{id}", options)
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def delete_brand(id)
|
|
61
|
+
@connection.delete("/brands/#{id}")
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def delete_brands()
|
|
65
|
+
@connection.delete("/brands")
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def get_coupons(options={})
|
|
69
|
+
@connection.get("/coupons", options)
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def create_coupons(options={})
|
|
73
|
+
@connection.post("/coupons", options)
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def update_coupon(id, options={})
|
|
77
|
+
@connection.put("/coupons/#{id}", options)
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def get_categories(options={})
|
|
81
|
+
@connection.get("/categories", options)
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def get_categories_count
|
|
85
|
+
@connection.get '/categories/count'
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def get_category(id)
|
|
89
|
+
@connection.get("/categories/#{id}", {})
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def create_categories(options={})
|
|
93
|
+
@connection.post("/categories", options)
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
def update_category(id, options={})
|
|
97
|
+
@connection.put("/categories/#{id}", options)
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def delete_category(id)
|
|
101
|
+
@connection.delete("/categories/#{id}")
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
def delete_categories()
|
|
105
|
+
@connection.delete("/categories")
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def get_countries(options={})
|
|
109
|
+
@connection.get("/countries", options)
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
def get_country(id)
|
|
113
|
+
@connection.get("/countries/#{id}", {})
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
def get_countries_states(options={})
|
|
117
|
+
@connection.get("/countries/states", options)
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
def get_countries_state(id, options={})
|
|
121
|
+
@connection.get("/countries/#{id}/states", {})
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
def get_customers(options = {})
|
|
125
|
+
@connection.get("/customers", options)
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
def get_customer(id)
|
|
129
|
+
@connection.get('/customers/' + id.to_s, {})
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
def get_customer_addresses(id, options = {})
|
|
133
|
+
@connection.get("/customers/#{id}/addresses", options)
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
def get_customer_address(customer_id, address_id)
|
|
137
|
+
@connection.get("/customers/#{customer_id}/addresses/#{address_id}",{})
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
def get_options(options={})
|
|
141
|
+
@connection.get("/options", options)
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
def get_options_count
|
|
145
|
+
@connection.get '/options/count'
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
def get_option(id)
|
|
149
|
+
@connection.get("/options/#{id}",{})
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
def create_option(options={})
|
|
153
|
+
@connection.post("/options", options)
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
def update_option(id, options={})
|
|
157
|
+
@connection.put("/options/#{id}", options)
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
def delete_option(id)
|
|
161
|
+
@connection.delete("/options/#{id}")
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
def get_options_values(options={})
|
|
165
|
+
@connection.get("/options/values", options)
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
def get_options_value(id)
|
|
169
|
+
@connection.get("/options/#{id}/values",{})
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
def create_options_values(options_id, options={})
|
|
173
|
+
@connection.post("/options/#{options_id}/values", options)
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
def update_options_value(options_id, values_id, options={})
|
|
177
|
+
@connection.put("/options/#{options_id}/values/#{values_id}", options)
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
def get_optionsets(options={})
|
|
181
|
+
@connection.get("/optionsets", options)
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
def get_optionsets_count
|
|
185
|
+
@connection.get '/optionsets/count'
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
def get_optionset(id)
|
|
189
|
+
@connection.get("/optionsets/#{id}", {})
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
def create_optionset(options={})
|
|
193
|
+
@connection.post("/optionsets", options)
|
|
194
|
+
end
|
|
195
|
+
|
|
196
|
+
def update_optionset(id, options={})
|
|
197
|
+
@connection.put("/optionsets/#{id}", options)
|
|
198
|
+
end
|
|
199
|
+
|
|
200
|
+
def delete_optionset(id)
|
|
201
|
+
@connection.delete("/optionsets/#{id}")
|
|
202
|
+
end
|
|
203
|
+
|
|
204
|
+
def get_optionsets_options(options={})
|
|
205
|
+
@connection.get("/optionsets/options", options)
|
|
206
|
+
end
|
|
207
|
+
|
|
208
|
+
def get_optionset_options(id)
|
|
209
|
+
@connection.get("/optionsets/#{id}/options", {})
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
def get_optionsets_option(id)
|
|
213
|
+
@connection.get("/optionsets/options/#{id}", {})
|
|
214
|
+
end
|
|
215
|
+
|
|
216
|
+
def create_optionset_option(id, options={})
|
|
217
|
+
@connection.post("/optionsets/#{id}/options", options)
|
|
218
|
+
end
|
|
219
|
+
|
|
220
|
+
def update_optionset_option(optionset_id, option_id, options={})
|
|
221
|
+
@connection.put("/optionsets/#{optionset_id}/options/#{option_id}", options)
|
|
222
|
+
end
|
|
223
|
+
|
|
224
|
+
def get_orders(options={})
|
|
225
|
+
@connection.get("/orders", options)
|
|
226
|
+
end
|
|
227
|
+
|
|
228
|
+
def get_orders_by_date(date, options={})
|
|
229
|
+
if date.is_a?(String)
|
|
230
|
+
date = DateTime.parse(date)
|
|
231
|
+
end
|
|
232
|
+
@connection.get('/orders', options.merge!(:min_date_created => to_rfc2822(date)))
|
|
233
|
+
end
|
|
234
|
+
|
|
235
|
+
def get_orders_modified_since(date)
|
|
236
|
+
@connection.get('/orders', {}, {'If-Modified-Since' => to_rfc2822(date)})
|
|
237
|
+
end
|
|
238
|
+
|
|
239
|
+
def get_order(id)
|
|
240
|
+
@connection.get("/orders/#{id}", {})
|
|
241
|
+
end
|
|
242
|
+
|
|
243
|
+
def update_order(id,options={})
|
|
244
|
+
@connection.put("/orders/#{id}", options)
|
|
245
|
+
end
|
|
246
|
+
|
|
247
|
+
def get_orders_coupons(id)
|
|
248
|
+
@connection.get("/orders/#{id}/coupons", {})
|
|
249
|
+
end
|
|
250
|
+
|
|
251
|
+
def get_orders_coupon(order_id,coupon_id)
|
|
252
|
+
@connection.get("/orders/#{order_id}/coupons/#{coupon_id}", {})
|
|
253
|
+
end
|
|
254
|
+
|
|
255
|
+
def get_orders_products(id)
|
|
256
|
+
@connection.get("/orders/#{id}/products", {})
|
|
257
|
+
end
|
|
258
|
+
|
|
259
|
+
def get_orders_product(order_id,product_id)
|
|
260
|
+
@connection.get("/orders/#{order_id}/products/#{product_id}", {})
|
|
261
|
+
end
|
|
262
|
+
|
|
263
|
+
def get_orders_shipments(id)
|
|
264
|
+
@connection.get("/orders/#{id}/shipments", {})
|
|
265
|
+
end
|
|
266
|
+
|
|
267
|
+
def create_orders_shipments(id)
|
|
268
|
+
@connection.post("/orders/#{id}/shipments", {})
|
|
269
|
+
end
|
|
270
|
+
|
|
271
|
+
def get_orders_shipment(order_id,shipment_id)
|
|
272
|
+
@connection.get("/orders/#{order_id}/shipments/#{shipment_id}", {})
|
|
273
|
+
end
|
|
274
|
+
|
|
275
|
+
def update_orders_shipment(order_id,shipment_id,options={})
|
|
276
|
+
@connection.put("/orders/#{order_id}/shipments/#{shipment_id}", options)
|
|
277
|
+
end
|
|
278
|
+
|
|
279
|
+
def get_orders_shippingaddresses(id)
|
|
280
|
+
@connection.get("/orders/#{id}/shippingaddresses", {})
|
|
281
|
+
end
|
|
282
|
+
|
|
283
|
+
def get_orders_shippingaddress(order_id,shippingaddress_id)
|
|
284
|
+
@connection.get("/orders/#{order_id}/shippingaddresses/#{shippingaddress_id}", {})
|
|
285
|
+
end
|
|
286
|
+
|
|
287
|
+
def get_orderstatuses(options={})
|
|
288
|
+
@connection.get("/orderstatuses", options)
|
|
289
|
+
end
|
|
290
|
+
|
|
291
|
+
def get_orderstatus(id)
|
|
292
|
+
@connection.get("/orderstatuses/#{id}", {})
|
|
293
|
+
end
|
|
294
|
+
|
|
295
|
+
def get_products(options={})
|
|
296
|
+
@connection.get("/products", options)
|
|
297
|
+
end
|
|
298
|
+
|
|
299
|
+
def get_products_count
|
|
300
|
+
@connection.get '/products/count'
|
|
301
|
+
end
|
|
302
|
+
|
|
303
|
+
def get_product(id)
|
|
304
|
+
@connection.get("/products/#{id}", {})
|
|
305
|
+
end
|
|
306
|
+
|
|
307
|
+
def create_products(options={})
|
|
308
|
+
@connection.post('/products', options)
|
|
309
|
+
end
|
|
310
|
+
|
|
311
|
+
def update_products(id, options={})
|
|
312
|
+
@connection.put("/products/#{id}", options)
|
|
313
|
+
end
|
|
314
|
+
|
|
315
|
+
def delete_products()
|
|
316
|
+
@connection.delete("/products")
|
|
317
|
+
end
|
|
318
|
+
|
|
319
|
+
def get_products_discountrules(options={})
|
|
320
|
+
@connection.get("/products/discountrules", options)
|
|
321
|
+
end
|
|
322
|
+
|
|
323
|
+
def get_product_discountrules(product_id, options={})
|
|
324
|
+
@connection.get("/products/#{product_id}/discountrules", options)
|
|
325
|
+
end
|
|
326
|
+
|
|
327
|
+
def get_products_discountrule(product_id, discountrule_id)
|
|
328
|
+
@connection.get("/products/#{product_id}/discountrules/#{discountrule_id}", {})
|
|
329
|
+
end
|
|
330
|
+
|
|
331
|
+
def get_products_configurablefields(options={})
|
|
332
|
+
@connection.get("/products/configurablefields", options)
|
|
333
|
+
end
|
|
334
|
+
|
|
335
|
+
def get_product_configurablefields(product_id, options={})
|
|
336
|
+
@connection.get("/products/#{product_id}/configurablefields", options)
|
|
337
|
+
end
|
|
338
|
+
|
|
339
|
+
def get_products_configurablefield(product_id, configurable_field_id)
|
|
340
|
+
@connection.get("/products/#{product_id}/configurablefields/#{configurable_field_id}", {})
|
|
341
|
+
end
|
|
342
|
+
|
|
343
|
+
def get_products_customfields(options={})
|
|
344
|
+
@connection.get("/products/customfields", options)
|
|
345
|
+
end
|
|
346
|
+
|
|
347
|
+
def get_product_customfields(product_id, options={})
|
|
348
|
+
@connection.get("/products/#{product_id}/customfields", options)
|
|
349
|
+
end
|
|
350
|
+
|
|
351
|
+
def get_products_customfield(product_id, custom_field_id)
|
|
352
|
+
@connection.get("/products/#{product_id}/customfields/#{custom_field_id}", {})
|
|
353
|
+
end
|
|
354
|
+
|
|
355
|
+
def get_product_images(product_id, options={})
|
|
356
|
+
@connection.get("/products/#{product_id}/images", options)
|
|
357
|
+
end
|
|
358
|
+
|
|
359
|
+
def create_product_images(product_id, options={})
|
|
360
|
+
@connection.post("/products/#{product_id}/images", options)
|
|
361
|
+
end
|
|
362
|
+
|
|
363
|
+
def get_products_images(options={})
|
|
364
|
+
@connection.get("/products/images", options)
|
|
365
|
+
end
|
|
366
|
+
|
|
367
|
+
def create_products_images(options={})
|
|
368
|
+
@connection.post("/products/images", options)
|
|
369
|
+
end
|
|
370
|
+
|
|
371
|
+
def get_products_image(product_id, image_id)
|
|
372
|
+
@connection.get("/products/#{product_id}/images/#{image_id}", {})
|
|
373
|
+
end
|
|
374
|
+
|
|
375
|
+
def update_products_image(product_id,image_id,options={})
|
|
376
|
+
@connection.put("/products/#{product_id}/images/#{image_id}", options)
|
|
377
|
+
end
|
|
378
|
+
|
|
379
|
+
def get_products_customfields(options={})
|
|
380
|
+
@connection.get("/products/options", options)
|
|
381
|
+
end
|
|
382
|
+
|
|
383
|
+
def get_product_options(product_id, options={})
|
|
384
|
+
@connection.get("/products/#{product_id}/options", options)
|
|
385
|
+
end
|
|
386
|
+
|
|
387
|
+
def get_products_option(product_id,option_id)
|
|
388
|
+
@connection.get("/products/#{product_id}/options/#{option_id}", {})
|
|
389
|
+
end
|
|
390
|
+
|
|
391
|
+
def get_products_rules(options={})
|
|
392
|
+
@connection.get("/products/rules", options)
|
|
393
|
+
end
|
|
394
|
+
|
|
395
|
+
def get_product_rules(product_id, options={})
|
|
396
|
+
@connection.get("/products/#{product_id}/rules", options)
|
|
397
|
+
end
|
|
398
|
+
|
|
399
|
+
def create_products_rules(options={})
|
|
400
|
+
@connection.post("/products/rules", options)
|
|
401
|
+
end
|
|
402
|
+
|
|
403
|
+
def get_products_rule(product_id,rule_id)
|
|
404
|
+
@connection.get("/products/#{product_id}/rules/#{rule_id}", {})
|
|
405
|
+
end
|
|
406
|
+
|
|
407
|
+
def update_products_rule(product_id, rule_id, options={})
|
|
408
|
+
@connection.put("/products/#{product_id}/rules/#{rule_id}", options)
|
|
409
|
+
end
|
|
410
|
+
|
|
411
|
+
def get_products_skus(options={})
|
|
412
|
+
@connection.get("/products/skus", options)
|
|
413
|
+
end
|
|
414
|
+
|
|
415
|
+
def get_product_skus(product_id, options={})
|
|
416
|
+
@connection.get("/products/#{product_id}/skus", options)
|
|
417
|
+
end
|
|
418
|
+
|
|
419
|
+
def create_products_skus(options={})
|
|
420
|
+
@connection.post("/products/skus", options)
|
|
421
|
+
end
|
|
422
|
+
|
|
423
|
+
def get_products_sku(product_id, sku_id)
|
|
424
|
+
@connection.get("/products/#{product_id}/skus/#{sku_id}", {})
|
|
425
|
+
end
|
|
426
|
+
|
|
427
|
+
def update_products_sku(product_id, sku_id, options={})
|
|
428
|
+
@connection.put("/products/#{product_id}/skus/#{sku_id}", options)
|
|
429
|
+
end
|
|
430
|
+
|
|
431
|
+
def get_products_videos(options={})
|
|
432
|
+
@connection.get("/products/videos", options)
|
|
433
|
+
end
|
|
434
|
+
|
|
435
|
+
def get_product_videos(product_id, options={})
|
|
436
|
+
@connection.get("/products/#{product_id}/videos", options)
|
|
437
|
+
end
|
|
438
|
+
|
|
439
|
+
def get_products_video(product_id, video_id)
|
|
440
|
+
@connection.get("/products/#{product_id}/videos/#{video_id}", {})
|
|
441
|
+
end
|
|
442
|
+
|
|
443
|
+
private
|
|
444
|
+
|
|
445
|
+
def get_count(result)
|
|
446
|
+
result["count"]
|
|
447
|
+
end
|
|
448
|
+
|
|
449
|
+
def get_resource(result)
|
|
450
|
+
result
|
|
451
|
+
end
|
|
452
|
+
|
|
453
|
+
def get_collection(result)
|
|
454
|
+
result
|
|
455
|
+
end
|
|
456
|
+
|
|
457
|
+
end
|
|
458
|
+
end
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
module BigcommerceTest
|
|
2
|
+
class Connection
|
|
3
|
+
|
|
4
|
+
def initialize(configuration)
|
|
5
|
+
@configuration = {}
|
|
6
|
+
configuration.each do |key, val|
|
|
7
|
+
send(key.to_s + "=", val)
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def configuration
|
|
12
|
+
@configuration
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def store_url=(store_url)
|
|
16
|
+
url = URI.parse(store_url)
|
|
17
|
+
@configuration[:store_url] = url.scheme + "://" + url.host
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def username=(username)
|
|
21
|
+
@configuration[:username] = username
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def api_key=(api_key)
|
|
25
|
+
@configuration[:api_key] = api_key
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def verify_peer=(verify)
|
|
29
|
+
@configuration[:verify_ssl] = verify
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def ssl_ca_file=(path)
|
|
33
|
+
@configuration.ssl_ca_file = path
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def ssl_client_key=(path,passphrase=nil)
|
|
37
|
+
if passphrase.nil?
|
|
38
|
+
@configuration.ssl_client_key = OpenSSL::PKey::RSA.new(File.read(path))
|
|
39
|
+
else
|
|
40
|
+
@configuration.ssl_client_key = OpenSSL::PKey::RSA.new(File.read(path), passphrase)
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def ssl_client_cert=(path)
|
|
45
|
+
@configuration.client_cert = OpenSSL::X509::Certificate.new(File.read(path))
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def get(path, options = {}, headers = {})
|
|
49
|
+
request(:get, path, options, headers)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def post(path, options = {}, headers = {})
|
|
53
|
+
request(:post, path, options, headers)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def put(path, options = {}, headers = {})
|
|
57
|
+
request(:put, path, options, headers)
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def delete(path, options = {}, headers = {})
|
|
61
|
+
request(:delete, path, options, headers)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def request(method, path, options,headers={})
|
|
65
|
+
restclient = RestClient::Resource.new "#{@configuration[:store_url]}/api/v2#{path}.json", @configuration[:username], @configuration[:api_key]
|
|
66
|
+
if @configuration[:ssl_client_key] && @configuration[:ssl_client_cert] && @configuration[:ssl_ca_file]
|
|
67
|
+
restclient = RestClient::Resource.new(
|
|
68
|
+
"#{@configuration[:store_url]}/api/v2#{path}.json",
|
|
69
|
+
:username => @configuration[:username],
|
|
70
|
+
:password => @configuration[:api_key],
|
|
71
|
+
:ssl_client_cert => @configuration[:ssl_client_cert],
|
|
72
|
+
:ssl_client_key => @configuration[:ssl_client_key],
|
|
73
|
+
:ssl_ca_file => @configuration[:ssl_ca_file],
|
|
74
|
+
:verify_ssl => @configuration[:verify_ssl]
|
|
75
|
+
)
|
|
76
|
+
end
|
|
77
|
+
begin
|
|
78
|
+
response = case method
|
|
79
|
+
when :get then
|
|
80
|
+
restclient.get :params => options, :accept => :json, :content_type => :json
|
|
81
|
+
when :post then
|
|
82
|
+
restclient.post(options.to_json, :content_type => :json, :accept => :json)
|
|
83
|
+
when :put then
|
|
84
|
+
restclient.put(options.to_json, :content_type => :json, :accept => :json)
|
|
85
|
+
when :delete then
|
|
86
|
+
restclient.delete
|
|
87
|
+
end
|
|
88
|
+
if((200..201) === response.code)
|
|
89
|
+
JSON.parse response
|
|
90
|
+
elsif response.code == 204
|
|
91
|
+
nil
|
|
92
|
+
end
|
|
93
|
+
rescue => e
|
|
94
|
+
raise "Failed to parse Bigcommerce response: #{e}"
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
end
|
|
99
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe "/api/v2/orders" do
|
|
4
|
+
include_context "integration"
|
|
5
|
+
|
|
6
|
+
it "gets the orders collection", :vcr do
|
|
7
|
+
orders = api.get_orders
|
|
8
|
+
orders.should be_a_kind_of(Enumerable)
|
|
9
|
+
orders.size.should be > 0
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
it "filters orders by date", :vcr do
|
|
13
|
+
orders = api.get_orders_by_date('2013-03-01')
|
|
14
|
+
orders.should be_a_kind_of(Enumerable)
|
|
15
|
+
orders.size.should be > 0
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
end
|
data/spec/spec_helper.rb
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
begin
|
|
2
|
+
require 'coveralls'
|
|
3
|
+
Coveralls.wear!
|
|
4
|
+
rescue LoadError => e
|
|
5
|
+
raise e unless RUBY_VERSION < '1.9'
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
require 'bigcommerce'
|
|
9
|
+
require 'date'
|
|
10
|
+
require 'vcr'
|
|
11
|
+
require 'webmock/rspec'
|
|
12
|
+
|
|
13
|
+
# Requires supporting ruby files with custom matchers and macros, etc,
|
|
14
|
+
# in spec/support/ and its subdirectories.
|
|
15
|
+
Dir[File.dirname(__FILE__) + "/support/**/*.rb"].each {|f| require f }
|
|
16
|
+
|
|
17
|
+
VCR.configure do |c|
|
|
18
|
+
c.cassette_library_dir = 'spec/fixtures'
|
|
19
|
+
c.hook_into :webmock
|
|
20
|
+
c.configure_rspec_metadata!
|
|
21
|
+
c.filter_sensitive_data('<API_USER>') { ENV['API_USER'] }
|
|
22
|
+
c.filter_sensitive_data('<API_PASS>') { ENV['API_PASS'] }
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
RSpec.configure do |c|
|
|
26
|
+
c.treat_symbols_as_metadata_keys_with_true_values = true
|
|
27
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
shared_context "integration" do
|
|
2
|
+
let :api do
|
|
3
|
+
ENV['API_URL'] = ENV['API_URL'] || 'https://store-vnh06c71.mybigcommerce.com'
|
|
4
|
+
ENV['API_USER'] = ENV['API_USER'] || 'apiuser'
|
|
5
|
+
ENV['API_PASS'] = ENV['API_PASS'] || '123456'
|
|
6
|
+
|
|
7
|
+
Bigcommerce::Api.new({
|
|
8
|
+
:store_url => ENV['API_URL'],
|
|
9
|
+
:username => ENV['API_USER'],
|
|
10
|
+
:api_key => ENV['API_PASS']
|
|
11
|
+
})
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
describe "API request delegation" do
|
|
2
|
+
include_context "mock api"
|
|
3
|
+
|
|
4
|
+
it "requests a resource" do
|
|
5
|
+
api.connection.should_receive(:get).once.with("/time")
|
|
6
|
+
api.get_time
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
it "requests a resource by id" do
|
|
10
|
+
api.connection.should_receive(:get).once.with("/products/333", {})
|
|
11
|
+
api.get_product(333)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it "requests a compound resource by ids" do
|
|
15
|
+
api.connection.should_receive(:get).once.with("/orders/999/products/333", {})
|
|
16
|
+
api.get_orders_product(999, 333)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
it "requests a resource with pagination" do
|
|
20
|
+
api.connection.should_receive(:get).once.with("/orders", {:page => 2})
|
|
21
|
+
api.get_orders(:page => 2)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it "requests a resource with limit" do
|
|
25
|
+
api.connection.should_receive(:get).once.with("/categories", {:limit => 10})
|
|
26
|
+
api.get_categories(:limit => 10)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
it "request a resource with pagination and limit" do
|
|
30
|
+
api.connection.should_receive(:get).once.with("/customers", {:limit => 10, :page => 2})
|
|
31
|
+
api.get_customers(:limit => 10, :page => 2)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
shared_examples_for "request method accepting optional params and headers" do
|
|
4
|
+
it "sends request with no params" do
|
|
5
|
+
connection.should_receive(:request).once.with(http_method, path, {}, {})
|
|
6
|
+
connection.send(http_method, path)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
it "sends request with params" do
|
|
10
|
+
connection.should_receive(:request).once.with(http_method, path, {:page => 3}, {})
|
|
11
|
+
connection.send(http_method, path, {:page => 3})
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it "sends request with headers" do
|
|
15
|
+
connection.should_receive(:request).once.with(http_method, "/orders", {}, {'Some-Header' => 'abc'})
|
|
16
|
+
connection.send(http_method, path, {}, {'Some-Header' => 'abc'})
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
it "sends request with params and headers" do
|
|
20
|
+
connection.should_receive(:request).once.with(http_method, "/orders", {:page => 6}, {'Some-Header' => 'abc'})
|
|
21
|
+
connection.send(http_method, path, {:page => 6}, {'Some-Header' => 'abc'})
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Bigcommerce::Api do
|
|
4
|
+
|
|
5
|
+
let(:api) do
|
|
6
|
+
Bigcommerce::Api.new({
|
|
7
|
+
:store_url => "https://store-12345.mybigcommerce.com",
|
|
8
|
+
:username => "test", :api_key => "12345"
|
|
9
|
+
})
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
let(:rfc2822_datetime) { "Tue, 13 Mar 2012 12:45:26 +0000" }
|
|
13
|
+
let(:rfc2822_date) { "Mon, 12 Mar 2012 00:00:00 +0000" }
|
|
14
|
+
|
|
15
|
+
describe "RFC 2822 DateTime format" do
|
|
16
|
+
|
|
17
|
+
it "converts raw date times to RFC 2822 format" do
|
|
18
|
+
api.to_rfc2822(DateTime.parse('2012-03-13 12:45:26 +0000')).should eql rfc2822_datetime
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it "converts textual date times to RFC 2822 format" do
|
|
22
|
+
api.to_rfc2822(DateTime.parse('12th March 2012')).should eql rfc2822_date
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it "converts ISO 8601 dates to RFC 2822 format" do
|
|
26
|
+
api.to_rfc2822(DateTime.parse('2012-03-12')).should eql rfc2822_date
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Bigcommerce do
|
|
4
|
+
describe 'VERSION' do
|
|
5
|
+
it "should have a version number set" do
|
|
6
|
+
expect(Bigcommerce::VERSION).to_not be_nil
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
it "should use a semantic version format" do
|
|
10
|
+
expect(Bigcommerce::VERSION).to match(/\d+\.\d+\.\d+(rc\d?)?/)
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: bigcommerce-test
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.8.42
|
|
5
|
+
prerelease:
|
|
6
|
+
platform: ruby
|
|
7
|
+
authors:
|
|
8
|
+
- Mark Rickerby
|
|
9
|
+
- Rob Howard
|
|
10
|
+
- Saranyan Vigraham
|
|
11
|
+
- Sasha Gerrand
|
|
12
|
+
autorequire:
|
|
13
|
+
bindir: bin
|
|
14
|
+
cert_chain: []
|
|
15
|
+
date: 2013-09-02 00:00:00.000000000 Z
|
|
16
|
+
dependencies:
|
|
17
|
+
- !ruby/object:Gem::Dependency
|
|
18
|
+
name: activesupport
|
|
19
|
+
requirement: !ruby/object:Gem::Requirement
|
|
20
|
+
none: false
|
|
21
|
+
requirements:
|
|
22
|
+
- - ! '>='
|
|
23
|
+
- !ruby/object:Gem::Version
|
|
24
|
+
version: '0'
|
|
25
|
+
type: :runtime
|
|
26
|
+
prerelease: false
|
|
27
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
28
|
+
none: false
|
|
29
|
+
requirements:
|
|
30
|
+
- - ! '>='
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: '0'
|
|
33
|
+
- !ruby/object:Gem::Dependency
|
|
34
|
+
name: json
|
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
|
36
|
+
none: false
|
|
37
|
+
requirements:
|
|
38
|
+
- - ! '>='
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: '0'
|
|
41
|
+
type: :runtime
|
|
42
|
+
prerelease: false
|
|
43
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
44
|
+
none: false
|
|
45
|
+
requirements:
|
|
46
|
+
- - ! '>='
|
|
47
|
+
- !ruby/object:Gem::Version
|
|
48
|
+
version: '0'
|
|
49
|
+
- !ruby/object:Gem::Dependency
|
|
50
|
+
name: rest-client
|
|
51
|
+
requirement: !ruby/object:Gem::Requirement
|
|
52
|
+
none: false
|
|
53
|
+
requirements:
|
|
54
|
+
- - ! '>='
|
|
55
|
+
- !ruby/object:Gem::Version
|
|
56
|
+
version: '0'
|
|
57
|
+
type: :runtime
|
|
58
|
+
prerelease: false
|
|
59
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
60
|
+
none: false
|
|
61
|
+
requirements:
|
|
62
|
+
- - ! '>='
|
|
63
|
+
- !ruby/object:Gem::Version
|
|
64
|
+
version: '0'
|
|
65
|
+
- !ruby/object:Gem::Dependency
|
|
66
|
+
name: coveralls
|
|
67
|
+
requirement: !ruby/object:Gem::Requirement
|
|
68
|
+
none: false
|
|
69
|
+
requirements:
|
|
70
|
+
- - ! '>='
|
|
71
|
+
- !ruby/object:Gem::Version
|
|
72
|
+
version: '0'
|
|
73
|
+
type: :development
|
|
74
|
+
prerelease: false
|
|
75
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
76
|
+
none: false
|
|
77
|
+
requirements:
|
|
78
|
+
- - ! '>='
|
|
79
|
+
- !ruby/object:Gem::Version
|
|
80
|
+
version: '0'
|
|
81
|
+
- !ruby/object:Gem::Dependency
|
|
82
|
+
name: ci_reporter
|
|
83
|
+
requirement: !ruby/object:Gem::Requirement
|
|
84
|
+
none: false
|
|
85
|
+
requirements:
|
|
86
|
+
- - ! '>='
|
|
87
|
+
- !ruby/object:Gem::Version
|
|
88
|
+
version: '0'
|
|
89
|
+
type: :development
|
|
90
|
+
prerelease: false
|
|
91
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
92
|
+
none: false
|
|
93
|
+
requirements:
|
|
94
|
+
- - ! '>='
|
|
95
|
+
- !ruby/object:Gem::Version
|
|
96
|
+
version: '0'
|
|
97
|
+
- !ruby/object:Gem::Dependency
|
|
98
|
+
name: mocha
|
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
|
100
|
+
none: false
|
|
101
|
+
requirements:
|
|
102
|
+
- - ! '>='
|
|
103
|
+
- !ruby/object:Gem::Version
|
|
104
|
+
version: '0'
|
|
105
|
+
type: :development
|
|
106
|
+
prerelease: false
|
|
107
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
108
|
+
none: false
|
|
109
|
+
requirements:
|
|
110
|
+
- - ! '>='
|
|
111
|
+
- !ruby/object:Gem::Version
|
|
112
|
+
version: '0'
|
|
113
|
+
- !ruby/object:Gem::Dependency
|
|
114
|
+
name: rake
|
|
115
|
+
requirement: !ruby/object:Gem::Requirement
|
|
116
|
+
none: false
|
|
117
|
+
requirements:
|
|
118
|
+
- - ! '>='
|
|
119
|
+
- !ruby/object:Gem::Version
|
|
120
|
+
version: '0'
|
|
121
|
+
type: :development
|
|
122
|
+
prerelease: false
|
|
123
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
124
|
+
none: false
|
|
125
|
+
requirements:
|
|
126
|
+
- - ! '>='
|
|
127
|
+
- !ruby/object:Gem::Version
|
|
128
|
+
version: '0'
|
|
129
|
+
- !ruby/object:Gem::Dependency
|
|
130
|
+
name: rspec
|
|
131
|
+
requirement: !ruby/object:Gem::Requirement
|
|
132
|
+
none: false
|
|
133
|
+
requirements:
|
|
134
|
+
- - ~>
|
|
135
|
+
- !ruby/object:Gem::Version
|
|
136
|
+
version: '2.11'
|
|
137
|
+
type: :development
|
|
138
|
+
prerelease: false
|
|
139
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
140
|
+
none: false
|
|
141
|
+
requirements:
|
|
142
|
+
- - ~>
|
|
143
|
+
- !ruby/object:Gem::Version
|
|
144
|
+
version: '2.11'
|
|
145
|
+
- !ruby/object:Gem::Dependency
|
|
146
|
+
name: vcr
|
|
147
|
+
requirement: !ruby/object:Gem::Requirement
|
|
148
|
+
none: false
|
|
149
|
+
requirements:
|
|
150
|
+
- - ! '>='
|
|
151
|
+
- !ruby/object:Gem::Version
|
|
152
|
+
version: '0'
|
|
153
|
+
type: :development
|
|
154
|
+
prerelease: false
|
|
155
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
156
|
+
none: false
|
|
157
|
+
requirements:
|
|
158
|
+
- - ! '>='
|
|
159
|
+
- !ruby/object:Gem::Version
|
|
160
|
+
version: '0'
|
|
161
|
+
- !ruby/object:Gem::Dependency
|
|
162
|
+
name: webmock
|
|
163
|
+
requirement: !ruby/object:Gem::Requirement
|
|
164
|
+
none: false
|
|
165
|
+
requirements:
|
|
166
|
+
- - '='
|
|
167
|
+
- !ruby/object:Gem::Version
|
|
168
|
+
version: '1.9'
|
|
169
|
+
type: :development
|
|
170
|
+
prerelease: false
|
|
171
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
172
|
+
none: false
|
|
173
|
+
requirements:
|
|
174
|
+
- - '='
|
|
175
|
+
- !ruby/object:Gem::Version
|
|
176
|
+
version: '1.9'
|
|
177
|
+
description: Test Version of the Bigcommerce API lib - Please use the official version
|
|
178
|
+
for your purposes
|
|
179
|
+
email:
|
|
180
|
+
- mark.rickerby@bigcommerce.com
|
|
181
|
+
- rob.howard@bigcommerce.com
|
|
182
|
+
- saranyan.vigraham@bigcommerce.com
|
|
183
|
+
- sasha.gerrand@bigcommerce.com
|
|
184
|
+
executables: []
|
|
185
|
+
extensions: []
|
|
186
|
+
extra_rdoc_files: []
|
|
187
|
+
files:
|
|
188
|
+
- LICENSE
|
|
189
|
+
- Rakefile
|
|
190
|
+
- README.md
|
|
191
|
+
- bigcommerce.gemspec
|
|
192
|
+
- ./lib/big_commerce.rb
|
|
193
|
+
- ./lib/bigcommerce_test/api.rb
|
|
194
|
+
- ./lib/bigcommerce_test/connection.rb
|
|
195
|
+
- ./lib/bigcommerce_test/version.rb
|
|
196
|
+
- ./lib/bigcommerce_test.rb
|
|
197
|
+
- ./spec/big_commerce_spec.rb
|
|
198
|
+
- ./spec/integration/orders_spec.rb
|
|
199
|
+
- ./spec/spec_helper.rb
|
|
200
|
+
- ./spec/support/integration_context.rb
|
|
201
|
+
- ./spec/support/mock_api_context.rb
|
|
202
|
+
- ./spec/unit/api_request_spec.rb
|
|
203
|
+
- ./spec/unit/connection_spec.rb
|
|
204
|
+
- ./spec/unit/date_time_spec.rb
|
|
205
|
+
- ./spec/unit/version_spec.rb
|
|
206
|
+
- spec/big_commerce_spec.rb
|
|
207
|
+
- spec/integration/orders_spec.rb
|
|
208
|
+
- spec/unit/api_request_spec.rb
|
|
209
|
+
- spec/unit/connection_spec.rb
|
|
210
|
+
- spec/unit/date_time_spec.rb
|
|
211
|
+
- spec/unit/version_spec.rb
|
|
212
|
+
homepage: http://github.com/saranyan/bigcommerce-api-ruby
|
|
213
|
+
licenses: []
|
|
214
|
+
post_install_message:
|
|
215
|
+
rdoc_options: []
|
|
216
|
+
require_paths:
|
|
217
|
+
- lib
|
|
218
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
219
|
+
none: false
|
|
220
|
+
requirements:
|
|
221
|
+
- - ! '>='
|
|
222
|
+
- !ruby/object:Gem::Version
|
|
223
|
+
version: '0'
|
|
224
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
225
|
+
none: false
|
|
226
|
+
requirements:
|
|
227
|
+
- - ! '>='
|
|
228
|
+
- !ruby/object:Gem::Version
|
|
229
|
+
version: '0'
|
|
230
|
+
requirements: []
|
|
231
|
+
rubyforge_project:
|
|
232
|
+
rubygems_version: 1.8.24
|
|
233
|
+
signing_key:
|
|
234
|
+
specification_version: 3
|
|
235
|
+
summary: Enables Ruby applications to communicate with the Bigcommerce API
|
|
236
|
+
test_files:
|
|
237
|
+
- spec/big_commerce_spec.rb
|
|
238
|
+
- spec/integration/orders_spec.rb
|
|
239
|
+
- spec/unit/api_request_spec.rb
|
|
240
|
+
- spec/unit/connection_spec.rb
|
|
241
|
+
- spec/unit/date_time_spec.rb
|
|
242
|
+
- spec/unit/version_spec.rb
|