voxbone-ruby 0.0.2 → 0.0.3
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 +4 -4
- data/Gemfile.lock +1 -1
- data/lib/voxbone.rb +1 -0
- data/lib/voxbone/inventory.rb +1 -1
- data/lib/voxbone/ordering.rb +78 -0
- data/lib/voxbone/version.rb +1 -1
- data/lib/voxbone/voxbone.rb +22 -4
- data/spec/voxbone/inventory_spec.rb +9 -2
- data/spec/voxbone/ordering_spec.rb +52 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 14a29040198f11bc7b96bb55c38ed1f6f6d9b818
|
4
|
+
data.tar.gz: 5869c09e96d639b9d54419d2888b83f7d55f8cc2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 769e012705cc260fa8fdcfc75c97ed501ed09d4a70e01027726bf4bf1c40d73ea169721ddc5386a022c3b537df79021cb68916bdc3e9c322f2fdde33dae0270b
|
7
|
+
data.tar.gz: cedb10e70649e2850c5023d17f3f29563ee53f6274a16cf4a29847a87eaf89b85dbc7fb7a11529065e745c62b89e7d5a466490fcd58161424716e0d6c5e8c15e
|
data/Gemfile.lock
CHANGED
data/lib/voxbone.rb
CHANGED
data/lib/voxbone/inventory.rb
CHANGED
@@ -0,0 +1,78 @@
|
|
1
|
+
module Voxbone
|
2
|
+
module Ordering
|
3
|
+
# Create Cart
|
4
|
+
#
|
5
|
+
# `create_cart` is a method that allows you to create a cart. Note: The
|
6
|
+
# creation of a cart depends on your own business logic, but you'll always
|
7
|
+
# need to create at least one cart to place an order (`checkout_cart`). You
|
8
|
+
# can place multiple orders per cart or you can create separate carts for
|
9
|
+
# each order. Note that different product types (DID, Capacity or prepaid
|
10
|
+
# credits) can be added into a single cart.
|
11
|
+
#
|
12
|
+
# options - Type: Hash. Parameters used to create the cart.
|
13
|
+
# customer_reference - A parameter that can be used for your own
|
14
|
+
# reference.
|
15
|
+
# description - The description or name you want to give
|
16
|
+
# the cart.
|
17
|
+
def create_cart(**options)
|
18
|
+
send_put '/ordering/cart', **options
|
19
|
+
end
|
20
|
+
|
21
|
+
# Add to Cart
|
22
|
+
#
|
23
|
+
# `add_to_cart` allows you to add items (order_products) to a specific cart
|
24
|
+
# before checking out the cart. Different product types (DID, CAPACITY or
|
25
|
+
# CREDIT_PACKAGE) can be added into one single cart.
|
26
|
+
#
|
27
|
+
# Parameters:
|
28
|
+
#
|
29
|
+
# options - Type: Hash. Parameters used to add an item to a cart.
|
30
|
+
# - :cart_identifier - Type: String. Identifies the cart and is returned
|
31
|
+
# by the createCart method or can be retrieved with the list_cart
|
32
|
+
# method. (Required)
|
33
|
+
# - :did_cart_item - Type: Hash. Corresponds to DIDs (VoxDID or Vox800).
|
34
|
+
# Note that you can specify multiple DID groups by repeating the query
|
35
|
+
# parameter.
|
36
|
+
# - :did_group_ids - Type: Integer (multiple). To add one or multiple
|
37
|
+
# DIDs to your cart, you need to specify a valid ID for the DID group
|
38
|
+
# of the DIDs.
|
39
|
+
# - :quantity - Type: Integer. Amount of DIDs from that DID group.
|
40
|
+
# - :capacity_cart_item - Type: Hash. Corresponds to capacity (VoxTRUNK
|
41
|
+
# channels).
|
42
|
+
# - :zone - To add channels to your cart, you need to specify a valid
|
43
|
+
# zone (A, B, C or WORLDWIDE). Only one capacity_cart_item can be
|
44
|
+
# added per request and capacity must be ordered in multiple of 10.
|
45
|
+
# - :quantity - Amount of channels required.
|
46
|
+
# - :credit_package_cart_item - Type: Hash. Corresponds to prepaid
|
47
|
+
# credits.
|
48
|
+
# - :credit_package_id - Type: String. To add prepaid credits to your
|
49
|
+
# cart, you need to specify a valid ID for the credit_package
|
50
|
+
# - :quantity - Type: Integer. The amount of prepaid credits required.
|
51
|
+
def add_to_cart(**options)
|
52
|
+
cart_id = options.delete(:cart_id)
|
53
|
+
send_post "/ordering/cart/#{cart_id}/product", **options
|
54
|
+
end
|
55
|
+
|
56
|
+
# Checkout Cart
|
57
|
+
#
|
58
|
+
# `checkout_cart` allows you to checkout a cart and place an order for all
|
59
|
+
# the products contained in the cart. You can then retrieve your orders
|
60
|
+
# using the list_order method.
|
61
|
+
#
|
62
|
+
# Parameters:
|
63
|
+
# options - Type: Hash. Parameters used to checkout a cart.
|
64
|
+
# - :cart_identifier - The identifier of your cart which is formed of a
|
65
|
+
# fixed string such as “apiv3:60677:” and an ID which is incremented
|
66
|
+
# each time a new cart is created.
|
67
|
+
def checkout_cart(**options)
|
68
|
+
# For some reason the API docs indicate that "cartIdentifier" should be
|
69
|
+
# given as a dynamic segment AND a query string.
|
70
|
+
cart_id = options.delete(:cart_id)
|
71
|
+
send_get(
|
72
|
+
"/ordering/cart/#{cart_id}/checkout",
|
73
|
+
**options, cart_identifier: cart_id)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
extend Ordering
|
78
|
+
end
|
data/lib/voxbone/version.rb
CHANGED
data/lib/voxbone/voxbone.rb
CHANGED
@@ -10,15 +10,29 @@ module Voxbone
|
|
10
10
|
}.freeze
|
11
11
|
|
12
12
|
class << self
|
13
|
-
def
|
13
|
+
def send_get(path, **options)
|
14
|
+
query = camelize_keys(options) if options
|
15
|
+
get(
|
16
|
+
path, query: query, headers: HEADERS, basic_auth: auth)
|
17
|
+
end
|
18
|
+
|
19
|
+
def send_put(path, **options)
|
14
20
|
auth = { username: username, password: password }
|
15
21
|
query = camelize_keys(options) if options
|
16
|
-
|
22
|
+
put(
|
23
|
+
path, query: query, headers: HEADERS, basic_auth: auth)
|
24
|
+
end
|
25
|
+
|
26
|
+
def send_post(path, **options)
|
27
|
+
auth = { username: username, password: password }
|
28
|
+
query = camelize_keys(options)
|
29
|
+
post(
|
17
30
|
path, query: query, headers: HEADERS, basic_auth: auth)
|
18
31
|
end
|
19
32
|
|
20
|
-
def camelize_keys(
|
21
|
-
|
33
|
+
def camelize_keys(obj)
|
34
|
+
return obj unless obj.is_a?(Hash)
|
35
|
+
Hash[obj.map { |key, value| [camelize(key), camelize_keys(value)] }]
|
22
36
|
end
|
23
37
|
|
24
38
|
def camelize(string)
|
@@ -26,5 +40,9 @@ module Voxbone
|
|
26
40
|
transformed_parts = parts[1..-1].map(&:capitalize).unshift(parts[0])
|
27
41
|
transformed_parts.join
|
28
42
|
end
|
43
|
+
|
44
|
+
def auth
|
45
|
+
{ username: username, password: password }
|
46
|
+
end
|
29
47
|
end
|
30
48
|
end
|
@@ -5,8 +5,15 @@ describe Voxbone::Inventory do
|
|
5
5
|
it 'correctly makes the request' do
|
6
6
|
expect(Voxbone).to receive(:get).with(
|
7
7
|
'/inventory/didgroup',
|
8
|
-
|
9
|
-
|
8
|
+
query: {
|
9
|
+
'countryCodeA3' => 'USA',
|
10
|
+
'pageNumber' => 0,
|
11
|
+
'pageSize' => 5,
|
12
|
+
'areaCode' => '225'
|
13
|
+
},
|
14
|
+
headers: Voxbone::HEADERS,
|
15
|
+
basic_auth: Voxbone.auth
|
16
|
+
)
|
10
17
|
Voxbone.list_did_group(
|
11
18
|
country_code_a3: 'USA', page_number: 0, page_size: 5, area_code: '225')
|
12
19
|
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Voxbone::Ordering do
|
4
|
+
describe '#create_cart' do
|
5
|
+
it 'correctly makes the request' do
|
6
|
+
expect(Voxbone).to receive(:put).with(
|
7
|
+
'/ordering/cart',
|
8
|
+
query: { 'customerReference' => 'me', 'description' => 'my_cart' },
|
9
|
+
headers: Voxbone::HEADERS,
|
10
|
+
basic_auth: Voxbone.auth
|
11
|
+
)
|
12
|
+
Voxbone.create_cart(
|
13
|
+
customer_reference: 'me', description: 'my_cart'
|
14
|
+
)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe '#add_to_cart' do
|
19
|
+
it 'correctly makes the request' do
|
20
|
+
expect(Voxbone).to receive(:post).with(
|
21
|
+
'/ordering/cart/1234/product',
|
22
|
+
query: {
|
23
|
+
'didCartItem' => {
|
24
|
+
'didGroupIds' => 1,
|
25
|
+
'quantity' => 1
|
26
|
+
}
|
27
|
+
},
|
28
|
+
headers: Voxbone::HEADERS,
|
29
|
+
basic_auth: Voxbone.auth
|
30
|
+
)
|
31
|
+
Voxbone.add_to_cart(
|
32
|
+
cart_id: '1234',
|
33
|
+
did_cart_item: {
|
34
|
+
did_group_ids: 1,
|
35
|
+
quantity: 1
|
36
|
+
}
|
37
|
+
)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
describe '#checkout_cart' do
|
42
|
+
it 'correctly makes the request' do
|
43
|
+
expect(Voxbone).to receive(:get).with(
|
44
|
+
'/ordering/cart/1234/checkout',
|
45
|
+
query: { 'cartIdentifier' => '1234' },
|
46
|
+
headers: Voxbone::HEADERS,
|
47
|
+
basic_auth: Voxbone.auth
|
48
|
+
)
|
49
|
+
Voxbone.checkout_cart(cart_id: '1234')
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: voxbone-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Julien Negrotto
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-02-
|
11
|
+
date: 2016-02-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|
@@ -66,10 +66,12 @@ files:
|
|
66
66
|
- lib/voxbone.rb
|
67
67
|
- lib/voxbone/config.rb
|
68
68
|
- lib/voxbone/inventory.rb
|
69
|
+
- lib/voxbone/ordering.rb
|
69
70
|
- lib/voxbone/version.rb
|
70
71
|
- lib/voxbone/voxbone.rb
|
71
72
|
- spec/spec_helper.rb
|
72
73
|
- spec/voxbone/inventory_spec.rb
|
74
|
+
- spec/voxbone/ordering_spec.rb
|
73
75
|
- voxbone-ruby.gemspec
|
74
76
|
homepage: ''
|
75
77
|
licenses: []
|
@@ -97,4 +99,5 @@ summary: A gem for interacting with Voxbone's REST API.
|
|
97
99
|
test_files:
|
98
100
|
- spec/spec_helper.rb
|
99
101
|
- spec/voxbone/inventory_spec.rb
|
102
|
+
- spec/voxbone/ordering_spec.rb
|
100
103
|
has_rdoc:
|