veeqo 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +10 -0
- data/.hound.yml +3 -0
- data/.rspec +1 -0
- data/.rubocop.yml +629 -0
- data/.sample.pryrc +4 -0
- data/.travis.yml +5 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +21 -0
- data/README.md +574 -0
- data/Rakefile +6 -0
- data/bin/console +10 -0
- data/bin/rspec +17 -0
- data/bin/setup +8 -0
- data/lib/veeqo.rb +16 -0
- data/lib/veeqo/actions/base.rb +13 -0
- data/lib/veeqo/actions/delete.rb +11 -0
- data/lib/veeqo/actions/find.rb +11 -0
- data/lib/veeqo/actions/list.rb +11 -0
- data/lib/veeqo/allocation.rb +32 -0
- data/lib/veeqo/base.rb +26 -0
- data/lib/veeqo/company.rb +17 -0
- data/lib/veeqo/configuration.rb +17 -0
- data/lib/veeqo/customer.rb +24 -0
- data/lib/veeqo/delivery_method.rb +19 -0
- data/lib/veeqo/errors.rb +30 -0
- data/lib/veeqo/errors/forbidden.rb +9 -0
- data/lib/veeqo/errors/request_error.rb +15 -0
- data/lib/veeqo/errors/server_error.rb +9 -0
- data/lib/veeqo/errors/unauthorized.rb +9 -0
- data/lib/veeqo/order.rb +25 -0
- data/lib/veeqo/product.rb +25 -0
- data/lib/veeqo/purchase_order.rb +11 -0
- data/lib/veeqo/request.rb +89 -0
- data/lib/veeqo/response.rb +27 -0
- data/lib/veeqo/shipment.rb +30 -0
- data/lib/veeqo/store.rb +19 -0
- data/lib/veeqo/supplier.rb +19 -0
- data/lib/veeqo/version.rb +3 -0
- data/lib/veeqo/warehouse.rb +19 -0
- data/spec/fixtures/allocation_created.json +554 -0
- data/spec/fixtures/company.json +3 -0
- data/spec/fixtures/customer.json +4 -0
- data/spec/fixtures/customer_created.json +15 -0
- data/spec/fixtures/customers.json +38 -0
- data/spec/fixtures/delivery_method.json +3 -0
- data/spec/fixtures/delivery_method_created.json +4 -0
- data/spec/fixtures/delivery_methods.json +5 -0
- data/spec/fixtures/empty.json +0 -0
- data/spec/fixtures/order.json +3 -0
- data/spec/fixtures/order_created.json +554 -0
- data/spec/fixtures/orders.json +5 -0
- data/spec/fixtures/ping.json +3 -0
- data/spec/fixtures/product.json +4 -0
- data/spec/fixtures/product_created.json +137 -0
- data/spec/fixtures/products.json +5 -0
- data/spec/fixtures/purchase_orders.json +177 -0
- data/spec/fixtures/shipment_created.json +19 -0
- data/spec/fixtures/store.json +3 -0
- data/spec/fixtures/store_created.json +4 -0
- data/spec/fixtures/stores.json +5 -0
- data/spec/fixtures/supplier.json +3 -0
- data/spec/fixtures/supplier_created.json +4 -0
- data/spec/fixtures/suppliers.json +5 -0
- data/spec/fixtures/warehouse.json +3 -0
- data/spec/fixtures/warehouse_created.json +4 -0
- data/spec/fixtures/warehouses.json +5 -0
- data/spec/spec_helper.rb +15 -0
- data/spec/support/fake_veeqo_api.rb +408 -0
- data/spec/veeqo/actions/list_spec.rb +38 -0
- data/spec/veeqo/allocation_spec.rb +49 -0
- data/spec/veeqo/base_spec.rb +23 -0
- data/spec/veeqo/company_spec.rb +23 -0
- data/spec/veeqo/configuration_spec.rb +24 -0
- data/spec/veeqo/customer_spec.rb +77 -0
- data/spec/veeqo/delivery_method_spec.rb +65 -0
- data/spec/veeqo/order_spec.rb +93 -0
- data/spec/veeqo/product_spec.rb +82 -0
- data/spec/veeqo/purchase_order_spec.rb +14 -0
- data/spec/veeqo/request_spec.rb +40 -0
- data/spec/veeqo/shipment_spec.rb +38 -0
- data/spec/veeqo/store_spec.rb +61 -0
- data/spec/veeqo/supplier_spec.rb +61 -0
- data/spec/veeqo/warehouse_spec.rb +61 -0
- data/veeqo.gemspec +26 -0
- metadata +198 -0
data/.sample.pryrc
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2017 Abu Nashir
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,574 @@
|
|
1
|
+
# Veeqo
|
2
|
+
|
3
|
+
[](https://travis-ci.org/abunashir/veeqo)
|
5
|
+
[](https://codeclimate.com/github/abunashir/veeqo)
|
7
|
+
|
8
|
+
The Ruby Interface to the Veeqo API
|
9
|
+
|
10
|
+
## Installation
|
11
|
+
|
12
|
+
Add this line to your application's Gemfile:
|
13
|
+
|
14
|
+
```ruby
|
15
|
+
gem "veeqo"
|
16
|
+
```
|
17
|
+
|
18
|
+
And then execute:
|
19
|
+
|
20
|
+
```sh
|
21
|
+
bundle install
|
22
|
+
```
|
23
|
+
|
24
|
+
## Configure
|
25
|
+
|
26
|
+
Follow [these simple steps] to get up and running with the Veeqo API. Once you
|
27
|
+
have your API key then you can configure it by adding an initializer with the
|
28
|
+
following code
|
29
|
+
|
30
|
+
```ruby
|
31
|
+
Veeqo.configure do |config|
|
32
|
+
config.api_key = "SECRET_API_KEY"
|
33
|
+
end
|
34
|
+
```
|
35
|
+
|
36
|
+
Or
|
37
|
+
|
38
|
+
```ruby
|
39
|
+
Veeqo.configuration.api_key = "SECRET_API_KEY"
|
40
|
+
```
|
41
|
+
|
42
|
+
## Usage
|
43
|
+
|
44
|
+
### Order
|
45
|
+
|
46
|
+
Resources related to the orders in the API.
|
47
|
+
|
48
|
+
#### List orders
|
49
|
+
|
50
|
+
```ruby
|
51
|
+
Veeqo::Order.list(
|
52
|
+
page: 1,
|
53
|
+
page_size: 25,
|
54
|
+
since_id: since_id,
|
55
|
+
status: "awaiting_fulfillment",
|
56
|
+
created_at_min: "2017-01-01 11:10:01",
|
57
|
+
updated_at_min: "2017-01-01 11:10:01",
|
58
|
+
)
|
59
|
+
```
|
60
|
+
|
61
|
+
#### Create a new order
|
62
|
+
|
63
|
+
```ruby
|
64
|
+
# Create a new order for customer
|
65
|
+
#
|
66
|
+
# Please pay close attention to the argumetns construction.
|
67
|
+
# Some attrbitues require some nested attributes, that's why
|
68
|
+
# we've extracted those to make it easier to understand, but
|
69
|
+
# you don't have to do it unelss you prefer a clean code :)
|
70
|
+
|
71
|
+
Veeqo::Order.create(
|
72
|
+
channel_id: store_id,
|
73
|
+
customer_id: customer_id,
|
74
|
+
delivery_method_id: deliver_method_id,
|
75
|
+
deliver_to_id: deliver_to_id,
|
76
|
+
total_discounts: 0,
|
77
|
+
total_tax: 0,
|
78
|
+
due_date: "",
|
79
|
+
send_notification_email: false,
|
80
|
+
deliver_to_attributes: deliver_to_attributes,
|
81
|
+
line_items_attributes: [line_item_one_attributes]
|
82
|
+
payment_attributes: payment_attributes,
|
83
|
+
)
|
84
|
+
|
85
|
+
# Delivery Attributes
|
86
|
+
#
|
87
|
+
# This includes the details attributes to specify the
|
88
|
+
# delivery details for that specific order.
|
89
|
+
|
90
|
+
deliver_to_attributes = {
|
91
|
+
address1: "294 queenstown road",
|
92
|
+
address2: "",
|
93
|
+
city: "london",
|
94
|
+
company: "",
|
95
|
+
country: "GB",
|
96
|
+
customer_id: customer_id,
|
97
|
+
first_name: "Sky",
|
98
|
+
last_name: "Schonhuber",
|
99
|
+
phone: "07734450718",
|
100
|
+
state: "london",
|
101
|
+
zip: "sw8 4lt",
|
102
|
+
}
|
103
|
+
|
104
|
+
# Line Item Attributes
|
105
|
+
#
|
106
|
+
# This includes the details about a specific
|
107
|
+
# Line items for the new order
|
108
|
+
|
109
|
+
line_item_one_attributes = {
|
110
|
+
price_per_unit: 13.99,
|
111
|
+
quantity: "1",
|
112
|
+
sellable_id: 1226615,
|
113
|
+
tax_rate: 0
|
114
|
+
}
|
115
|
+
|
116
|
+
# Payment Attributes
|
117
|
+
#
|
118
|
+
# Include the payment details with the order
|
119
|
+
|
120
|
+
payment_attributes = {
|
121
|
+
payment_type: "bank_transfer",
|
122
|
+
reference_number: "123456789",
|
123
|
+
}
|
124
|
+
```
|
125
|
+
|
126
|
+
#### View an order details
|
127
|
+
|
128
|
+
```ruby
|
129
|
+
Veeqo::Order.find(order_id)
|
130
|
+
```
|
131
|
+
|
132
|
+
#### Update order details
|
133
|
+
|
134
|
+
```ruby
|
135
|
+
Veeqo::Order.update(order_id, new_attributes)
|
136
|
+
```
|
137
|
+
|
138
|
+
#### Delete an order
|
139
|
+
|
140
|
+
```ruby
|
141
|
+
Veeqo::Order.delete(order_id)
|
142
|
+
```
|
143
|
+
|
144
|
+
### Allocation
|
145
|
+
|
146
|
+
Resources related to the allocations in the API. This allocates a set of stock
|
147
|
+
item to a specific order. To allocate stock to an order, the item must be added
|
148
|
+
as a line item within that order and not be allocated already.
|
149
|
+
|
150
|
+
#### Create a new allocation
|
151
|
+
|
152
|
+
```ruby
|
153
|
+
Veeqo::Allocation.create(
|
154
|
+
order_id: 123_456,
|
155
|
+
warehouse_id: 456_789,
|
156
|
+
line_items: [{
|
157
|
+
quantity: 1,
|
158
|
+
sellable_id: 123_456,
|
159
|
+
}],
|
160
|
+
)
|
161
|
+
```
|
162
|
+
|
163
|
+
#### Update a allocation details
|
164
|
+
|
165
|
+
```ruby
|
166
|
+
Veeqo::Allocation.update(
|
167
|
+
allocation_id,
|
168
|
+
order_id: 123_456,
|
169
|
+
warehouse_id: 456_789,
|
170
|
+
line_items: [{
|
171
|
+
quantity: 2,
|
172
|
+
sellable_id: 123_456,
|
173
|
+
}],
|
174
|
+
)
|
175
|
+
```
|
176
|
+
|
177
|
+
#### Delete an existing allocation
|
178
|
+
|
179
|
+
```ruby
|
180
|
+
Veeqo::Allocation.delete(order_id, allocation_id)
|
181
|
+
```
|
182
|
+
|
183
|
+
### Product
|
184
|
+
|
185
|
+
Resources related to the products in the API.
|
186
|
+
|
187
|
+
#### List all products
|
188
|
+
|
189
|
+
```ruby
|
190
|
+
Veeqo::Product.list(
|
191
|
+
since_id: 123_45, page: 1, page_size: 12
|
192
|
+
)
|
193
|
+
```
|
194
|
+
|
195
|
+
#### Create a new product
|
196
|
+
|
197
|
+
```ruby
|
198
|
+
# Create a new product
|
199
|
+
#
|
200
|
+
# Pay close attension to the argument constructions. It
|
201
|
+
# simlify the process, and the `variants` and `images`
|
202
|
+
# supports mutiple item, and we can pass those as an
|
203
|
+
# array, please check the example bellow for inspiration
|
204
|
+
|
205
|
+
Veeqo::Product.create(
|
206
|
+
title: "T Shirt",
|
207
|
+
description: "The best t-shirt!",
|
208
|
+
estimated_delivery: 3,
|
209
|
+
notes: "This is a limited addtion!",
|
210
|
+
variants: [variant_one_attributes],
|
211
|
+
images: [image_one_attributes],
|
212
|
+
)
|
213
|
+
|
214
|
+
# Variant attributes
|
215
|
+
variant_one_attributes = {
|
216
|
+
cost_price: "10",
|
217
|
+
min_reorder_level: "0",
|
218
|
+
price: "15",
|
219
|
+
quantity_to_reorder: "0",
|
220
|
+
sku_code: "t-shirt-large",
|
221
|
+
tax_rate: "0",
|
222
|
+
title: "Large",
|
223
|
+
}
|
224
|
+
|
225
|
+
# Image attributes
|
226
|
+
image_one_attributes = {
|
227
|
+
display_position: "1"
|
228
|
+
src: "http://veeqo.com/t-shirt.jpg",
|
229
|
+
}
|
230
|
+
```
|
231
|
+
|
232
|
+
#### View a product details
|
233
|
+
|
234
|
+
```ruby
|
235
|
+
Veeqo::Product.find(product_id)
|
236
|
+
```
|
237
|
+
|
238
|
+
#### Update product details
|
239
|
+
|
240
|
+
```ruby
|
241
|
+
Veeqo::Product.update(product_id, new_attributes)
|
242
|
+
```
|
243
|
+
|
244
|
+
#### Delete a product
|
245
|
+
|
246
|
+
```ruby
|
247
|
+
Veeqo::Product.delete(product_id)
|
248
|
+
```
|
249
|
+
|
250
|
+
### Purchase Orders
|
251
|
+
|
252
|
+
Resources related to the purchase orders in the API.
|
253
|
+
|
254
|
+
#### List purchase orders
|
255
|
+
|
256
|
+
```ruby
|
257
|
+
Veeqo::PurchaseOrder.list(
|
258
|
+
page: 1, page_size: 12, show_complete: false
|
259
|
+
)
|
260
|
+
```
|
261
|
+
|
262
|
+
### Suppliers
|
263
|
+
|
264
|
+
Resources related to the suppliers in the API.
|
265
|
+
|
266
|
+
#### List all suppliers
|
267
|
+
|
268
|
+
```ruby
|
269
|
+
Veeqo::Supplier.list(page: 1, page_size: 12)
|
270
|
+
```
|
271
|
+
|
272
|
+
#### Create a new supplier
|
273
|
+
|
274
|
+
```ruby
|
275
|
+
Veeqo::Supplier.create(name: "ACME")
|
276
|
+
```
|
277
|
+
|
278
|
+
#### View a supplier details
|
279
|
+
|
280
|
+
```ruby
|
281
|
+
Veeqo::Supplier.find(supplier_id)
|
282
|
+
```
|
283
|
+
|
284
|
+
#### Update a supplier details
|
285
|
+
|
286
|
+
```ruby
|
287
|
+
Veeqo::Supplier.update(supplier_id, new_attributes_hash)
|
288
|
+
```
|
289
|
+
|
290
|
+
#### Delete a supplier
|
291
|
+
|
292
|
+
```ruby
|
293
|
+
Veeqo::Supplier.delete(supplier_id)
|
294
|
+
```
|
295
|
+
|
296
|
+
### Company
|
297
|
+
|
298
|
+
Information about current company
|
299
|
+
|
300
|
+
#### View company details
|
301
|
+
|
302
|
+
```ruby
|
303
|
+
Veeqo::Company.find
|
304
|
+
```
|
305
|
+
|
306
|
+
#### Update company details
|
307
|
+
|
308
|
+
```ruby
|
309
|
+
Veeqo::Company.update(new_attributes_hash)
|
310
|
+
```
|
311
|
+
|
312
|
+
### Warehouse
|
313
|
+
|
314
|
+
Resources related to the warehouses in the API.
|
315
|
+
|
316
|
+
#### List all warehouses
|
317
|
+
|
318
|
+
```ruby
|
319
|
+
Veeqo::Warehouse.list(page: 1, page_size: 12)
|
320
|
+
```
|
321
|
+
|
322
|
+
#### Create a new warehouse
|
323
|
+
|
324
|
+
```ruby
|
325
|
+
Veeqo::Warehouse.create(name: "My Warehouse")
|
326
|
+
```
|
327
|
+
|
328
|
+
#### View a warehouse details
|
329
|
+
|
330
|
+
```ruby
|
331
|
+
Veeqo::Warehouse.find(warehouse_id)
|
332
|
+
```
|
333
|
+
|
334
|
+
#### Update a warehouse details
|
335
|
+
|
336
|
+
```ruby
|
337
|
+
Veeqo::Warehouse.update(warehouse_id, new_attributes_hash)
|
338
|
+
```
|
339
|
+
|
340
|
+
#### Delete a warehouse
|
341
|
+
|
342
|
+
```ruby
|
343
|
+
Veeqo::Warehouse.delete(warehouse_id)
|
344
|
+
```
|
345
|
+
|
346
|
+
### Customer
|
347
|
+
|
348
|
+
Resources related to the customers in the API.
|
349
|
+
|
350
|
+
#### List all customers
|
351
|
+
|
352
|
+
```ruby
|
353
|
+
Veeqo::Customer.list(page: 1, page_size: 12)
|
354
|
+
```
|
355
|
+
|
356
|
+
#### Create a customer
|
357
|
+
|
358
|
+
```ruby
|
359
|
+
Veeqo::Customer.create(
|
360
|
+
email: "customer@example.com",
|
361
|
+
phone: "01792 720740",
|
362
|
+
mobile: "07329023903",
|
363
|
+
billing_address_attributes: {
|
364
|
+
first_name: "John",
|
365
|
+
last_name: "Doe",
|
366
|
+
company: "FooBar Ltd",
|
367
|
+
address1: "221 High Street Lane",
|
368
|
+
city: "Swansea",
|
369
|
+
country: "GB",
|
370
|
+
zip: "SA1 1NW",
|
371
|
+
}
|
372
|
+
)
|
373
|
+
```
|
374
|
+
|
375
|
+
#### View a customer details
|
376
|
+
|
377
|
+
```ruby
|
378
|
+
Veeqo::Customer.find(customer_id)
|
379
|
+
```
|
380
|
+
|
381
|
+
#### Update a customer details
|
382
|
+
|
383
|
+
```ruby
|
384
|
+
Veeqo::Customer.update(
|
385
|
+
customer_id, new_attributes_hash
|
386
|
+
)
|
387
|
+
```
|
388
|
+
|
389
|
+
#### Delete a customer
|
390
|
+
|
391
|
+
```ruby
|
392
|
+
Veeqo::Customer.delete(customer_id)
|
393
|
+
```
|
394
|
+
|
395
|
+
### Store
|
396
|
+
|
397
|
+
Resources related to the stores in the API.
|
398
|
+
|
399
|
+
#### List all stores
|
400
|
+
|
401
|
+
```ruby
|
402
|
+
Veeqo::Store.list(page: 1, page_size: 12)
|
403
|
+
```
|
404
|
+
|
405
|
+
#### Create a new store
|
406
|
+
|
407
|
+
```ruby
|
408
|
+
Veeqo::Store.create(name: "Phone", type_code: "direct")
|
409
|
+
```
|
410
|
+
|
411
|
+
#### View a store details
|
412
|
+
|
413
|
+
```ruby
|
414
|
+
Veeqo::Store.find(store_id)
|
415
|
+
```
|
416
|
+
|
417
|
+
#### Update a store details
|
418
|
+
|
419
|
+
```ruby
|
420
|
+
Veeqo::Store.update(store_id, new_attributes_hash)
|
421
|
+
```
|
422
|
+
|
423
|
+
#### Delete a store
|
424
|
+
|
425
|
+
```ruby
|
426
|
+
Veeqo::Store.delete(store_id)
|
427
|
+
```
|
428
|
+
|
429
|
+
### Delivery Method
|
430
|
+
|
431
|
+
Resources related to the delivery methods in the API
|
432
|
+
|
433
|
+
#### List all delivery methods
|
434
|
+
|
435
|
+
```ruby
|
436
|
+
Veeqo::DeliveryMethod.list(page: 1, page_size: 12)
|
437
|
+
```
|
438
|
+
|
439
|
+
#### Create a delivery method
|
440
|
+
|
441
|
+
```ruby
|
442
|
+
Veeqo::DeliveryMethod.create(name: "Next Day Delivery")
|
443
|
+
```
|
444
|
+
|
445
|
+
#### View a delivery method details
|
446
|
+
|
447
|
+
```ruby
|
448
|
+
Veeqo::DeliveryMethod.find(delivery_method_id)
|
449
|
+
```
|
450
|
+
|
451
|
+
#### Update a delivery method
|
452
|
+
|
453
|
+
```ruby
|
454
|
+
Veeqo::DeliveryMethod.update(delivery_method_id, new_attributes_hash)
|
455
|
+
```
|
456
|
+
|
457
|
+
#### Delete a delivery method
|
458
|
+
|
459
|
+
```ruby
|
460
|
+
Veeqo::DeliveryMethod.delete(delivery_method_id)
|
461
|
+
```
|
462
|
+
|
463
|
+
### Shipment
|
464
|
+
|
465
|
+
Information about creating shipments in the API. Please follow the [shipment doc]
|
466
|
+
regarding the `carrier_id` or other details.
|
467
|
+
|
468
|
+
#### Create a shipment
|
469
|
+
|
470
|
+
```ruby
|
471
|
+
# Create a new shipment
|
472
|
+
#
|
473
|
+
# Please pay close attention to the construciton of
|
474
|
+
# the arugments, This simplified some attrbitues, so
|
475
|
+
# the developer does not need to worry about the too
|
476
|
+
# much details on how it needs to structured.
|
477
|
+
|
478
|
+
Veeqo::Shipment.create(
|
479
|
+
order_id: 1,
|
480
|
+
allocation_id: 1,
|
481
|
+
shipment: {
|
482
|
+
carrier_id: 3,
|
483
|
+
notify_customer: false,
|
484
|
+
update_remote_order: false,
|
485
|
+
tracking_number: "12345679ABC",
|
486
|
+
},
|
487
|
+
)
|
488
|
+
```
|
489
|
+
|
490
|
+
#### Delete a shipment
|
491
|
+
|
492
|
+
```ruby
|
493
|
+
Veeqo::Shipment.delete(shipment_id)
|
494
|
+
```
|
495
|
+
|
496
|
+
## Development
|
497
|
+
|
498
|
+
We are following Sandi Metz's Rules for this gem, you can read the
|
499
|
+
[description of the rules here] (http://robots.thoughtbot.com/post/50655960596/sandi-metz-rules-for-developers).
|
500
|
+
All new code should follow these rules. If you make changes in a pre-existing
|
501
|
+
file that violates these rules you should fix the violations as part of your
|
502
|
+
contribution.
|
503
|
+
|
504
|
+
### Setup
|
505
|
+
|
506
|
+
Clone the repository.
|
507
|
+
|
508
|
+
```sh
|
509
|
+
git clone https://github.com/abunashir/veeqo
|
510
|
+
```
|
511
|
+
|
512
|
+
Setup your environment.
|
513
|
+
|
514
|
+
```sh
|
515
|
+
bin/setup
|
516
|
+
```
|
517
|
+
|
518
|
+
Run the test suite
|
519
|
+
|
520
|
+
```sh
|
521
|
+
bin/rspec
|
522
|
+
```
|
523
|
+
|
524
|
+
### Play Box
|
525
|
+
|
526
|
+
The API Play Box provides an interactive console so we can easily test out the
|
527
|
+
actual API interaction. But before moving forward let's configure the key and
|
528
|
+
API host (In case you wanna test on a mock server).
|
529
|
+
|
530
|
+
Setup the client configuration.
|
531
|
+
|
532
|
+
```sh
|
533
|
+
cp .sample.pryrc .pryrc
|
534
|
+
vim .pryrc
|
535
|
+
```
|
536
|
+
|
537
|
+
Start the console.
|
538
|
+
|
539
|
+
```sh
|
540
|
+
bin/console
|
541
|
+
```
|
542
|
+
|
543
|
+
Start playing with it.
|
544
|
+
|
545
|
+
```ruby
|
546
|
+
Veeqo::Order.list
|
547
|
+
```
|
548
|
+
|
549
|
+
## Contributing
|
550
|
+
|
551
|
+
First, thank you for contributing! We love pull requests from everyone. By
|
552
|
+
participating in this project, you hereby grant the right to grant or transfer
|
553
|
+
an unlimited number of non exclusive licenses or sub-licenses to third parties,
|
554
|
+
under the copyright covering the contribution to use the contribution by all
|
555
|
+
means.
|
556
|
+
|
557
|
+
Here are a few technical guidelines to follow:
|
558
|
+
|
559
|
+
1. Open an [issue][issues] to discuss a new feature.
|
560
|
+
1. Write tests to support your new feature.
|
561
|
+
1. Make sure the entire test suite passes locally and on CI.
|
562
|
+
1. Open a Pull Request.
|
563
|
+
1. [Squash your commits][squash] after receiving feedback.
|
564
|
+
1. Party!
|
565
|
+
|
566
|
+
[issues]: https://github.com/abunashir/veeqo/issues
|
567
|
+
[squash]: https://github.com/thoughtbot/guides/tree/master/protocol/git#write-a-feature
|
568
|
+
|
569
|
+
## License
|
570
|
+
|
571
|
+
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
572
|
+
|
573
|
+
[these simple steps]: http://docs.veeqo.apiary.io/#introduction/getting-started
|
574
|
+
[shipment doc]: http://docs.veeqo.apiary.io/#reference/shipments
|