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: 
         
     |