voxbone-ruby 0.0.2

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: fe08e01083e7a6fe667dc820b5d8f35059d74ce5
4
+ data.tar.gz: f8f4e1d57a3610ccd10207f2b5d03b5e43bb5574
5
+ SHA512:
6
+ metadata.gz: 7cce10925e258517cc299633a41436ddf6b57feee641ecc40c00682fd213a8af1526ce9df12c4fce7af4b46585d44508ec9eee7d2a505753e6c130657e9a68a9
7
+ data.tar.gz: fda26751c9ea902abccbbd6f2d2c0765a7e2a583cb35afc6b70f8533ec64b12042140349297b4898b85e13ab0422de279769bde72d26c14f8c9535a60de09459
data/.gitignore ADDED
@@ -0,0 +1 @@
1
+ voxbone-ruby-*.gem
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,39 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ voxbone-ruby (0.0.1)
5
+ httparty
6
+
7
+ GEM
8
+ remote: https://rubygems.org/
9
+ specs:
10
+ diff-lcs (1.2.5)
11
+ httparty (0.13.7)
12
+ json (~> 1.8)
13
+ multi_xml (>= 0.5.2)
14
+ json (1.8.3)
15
+ multi_xml (0.5.5)
16
+ rspec (3.4.0)
17
+ rspec-core (~> 3.4.0)
18
+ rspec-expectations (~> 3.4.0)
19
+ rspec-mocks (~> 3.4.0)
20
+ rspec-core (3.4.2)
21
+ rspec-support (~> 3.4.0)
22
+ rspec-expectations (3.4.0)
23
+ diff-lcs (>= 1.2.0, < 2.0)
24
+ rspec-support (~> 3.4.0)
25
+ rspec-mocks (3.4.1)
26
+ diff-lcs (>= 1.2.0, < 2.0)
27
+ rspec-support (~> 3.4.0)
28
+ rspec-support (3.4.1)
29
+
30
+ PLATFORMS
31
+ ruby
32
+
33
+ DEPENDENCIES
34
+ bundler
35
+ rspec (~> 3.0)
36
+ voxbone-ruby!
37
+
38
+ BUNDLED WITH
39
+ 1.11.2
data/README.md ADDED
@@ -0,0 +1,9 @@
1
+ # voxbone-ruby
2
+
3
+ A Ruby client for Voxbone's REST API.
4
+
5
+ # Supported Methods
6
+
7
+ ## Inventory
8
+
9
+ - `Voxbone#list_did_group`
@@ -0,0 +1,29 @@
1
+ module Voxbone
2
+ module Config
3
+ attr_accessor :username, :password, :environment
4
+
5
+ ENVIRONMENTS = {
6
+ production: 'https://api.voxbone.com/ws-voxbone/services/rest/',
7
+ sandbox: 'https://sandbox.voxbone.com/ws-voxbone/services/rest/'
8
+ }.freeze
9
+
10
+ class ConfigError < StandardError; end
11
+
12
+ def configure
13
+ yield(self)
14
+ end
15
+
16
+ def environment=(environment_name)
17
+ environment_name = environment_name.to_sym
18
+ Voxbone.base_uri ENVIRONMENTS.fetch environment_name
19
+ @environment = environment_name
20
+ rescue KeyError
21
+ raise(
22
+ ConfigError,
23
+ "#{environment_name} is not a valid environment. Instead, use one of " \
24
+ "the following: #{ENVIRONMENTS.keys}")
25
+ end
26
+ end
27
+
28
+ extend Config
29
+ end
@@ -0,0 +1,59 @@
1
+ module Voxbone
2
+ module Inventory
3
+ # List DID Group
4
+ #
5
+ # `list_did_group` allows you to retrieve the list of DID groups. A DID
6
+ # group can be defined as the smallest set of DIDs which is usually DIDs
7
+ # that share the same city or area code attributes. It is a method which is
8
+ # useful to get pricing info on a DID and to get didGroupIds which is a
9
+ # required parameter when placing a DID order.
10
+ #
11
+ # options - Type: Hash. Parameters used to refine the selection.
12
+ # :country_code_a3 - Type: String. Indicates the country code of
13
+ # the DID group in its ISO 3166-1 alpha-3
14
+ # format (e.g. "GBR" for United Kingdom,
15
+ # "USA" for United States of America, "BEL"
16
+ # for Belgium, etc.). (required)
17
+ # :page_number - Type: Integer. The page number, starting at
18
+ # 0. (required)
19
+ # :page_size - Type: Integer. The page size (max number of
20
+ # entities that are displayed in the
21
+ # response). (required)
22
+ # :did_group_ids - Type: Integer (multiple). Can be used if
23
+ # you want information about specific DID
24
+ # groups.
25
+ # :state_id - Type: String. The numerical identifier for
26
+ # the didGroup's state. Please see the
27
+ # `list_state` operation to retrieve a valid
28
+ # state identifier.
29
+ # :city_name_pattern - Type: String. A string pattern for the
30
+ # beginning of city name: "New York%" will
31
+ # return all New York DID groups. On the
32
+ # contrary, "w York%" will return none.
33
+ # :rate_center - Type: String. The rate center can be
34
+ # defined as a zone (which can be equivalent
35
+ # to a city or the area of a city) e.g. the
36
+ # rate center of "NEW YORK CITY ZONE 1" would
37
+ # be "NWYRCYZN01". The rate center is a
38
+ # notion usually used in north America.
39
+ # :area_code - Type: String. The area code of the DID
40
+ # group (e.g. "646").
41
+ # :did_type - Type: String. The type of DID. The possible
42
+ # values are GEOGRAPHIC, TOLL_FREE, NATIONAL,
43
+ # MOBILE, SHARED_COST, SPECIAL, or INUM.
44
+ # :show_empty - Type: Boolean. Set to true if you want to
45
+ # show the didGroups with no stock currently
46
+ # available.
47
+ # :feature_ids - Type: Integer (multiple). Can be used if
48
+ # you want to list DID groups that support
49
+ # certain features such as VoxSMS or VoxFAX.
50
+ # (eg. 6 for VoxFAX, 25 for VoxSMS). Note
51
+ # that you can specify multiple features by
52
+ # repeating the query parameter.
53
+ def list_did_group(**options)
54
+ get('/inventory/didgroup', options)
55
+ end
56
+ end
57
+
58
+ extend Inventory
59
+ end
@@ -0,0 +1,3 @@
1
+ module Voxbone
2
+ VERSION = '0.0.2'.freeze
3
+ end
@@ -0,0 +1,30 @@
1
+ require 'httparty'
2
+ require 'forwardable'
3
+
4
+ module Voxbone
5
+ include HTTParty
6
+
7
+ HEADERS = {
8
+ 'Content-Type' => 'application/json',
9
+ 'Accept' => 'application/json'
10
+ }.freeze
11
+
12
+ class << self
13
+ def get(path, **options)
14
+ auth = { username: username, password: password }
15
+ query = camelize_keys(options) if options
16
+ super(
17
+ path, query: query, headers: HEADERS, basic_auth: auth)
18
+ end
19
+
20
+ def camelize_keys(hash)
21
+ Hash[hash.map { |key, value| [camelize(key), value] }]
22
+ end
23
+
24
+ def camelize(string)
25
+ parts = string.to_s.split('_')
26
+ transformed_parts = parts[1..-1].map(&:capitalize).unshift(parts[0])
27
+ transformed_parts.join
28
+ end
29
+ end
30
+ end
data/lib/voxbone.rb ADDED
@@ -0,0 +1,5 @@
1
+ require 'voxbone/voxbone'
2
+ require 'voxbone/version'
3
+ require 'voxbone/config'
4
+
5
+ require 'voxbone/inventory'
@@ -0,0 +1,8 @@
1
+ require 'rspec'
2
+ require 'voxbone'
3
+
4
+ Voxbone.configure do |config|
5
+ config.username = 'test_user'
6
+ config.password = 'test_password'
7
+ config.environment = 'sandbox'
8
+ end
@@ -0,0 +1,14 @@
1
+ require 'spec_helper'
2
+
3
+ describe Voxbone::Inventory do
4
+ describe '#list_did_group' do
5
+ it 'correctly makes the request' do
6
+ expect(Voxbone).to receive(:get).with(
7
+ '/inventory/didgroup',
8
+ country_code_a3: 'USA', page_number: 0, page_size: 5, area_code: '225')
9
+
10
+ Voxbone.list_did_group(
11
+ country_code_a3: 'USA', page_number: 0, page_size: 5, area_code: '225')
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,22 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require File.expand_path('../lib/voxbone/version', __FILE__)
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = 'voxbone-ruby'
6
+ s.authors = ['Julien Negrotto']
7
+ s.email = ['jtnegrotto@gmail.com']
8
+ s.summary = "A gem for interacting with Voxbone's REST API."
9
+ s.description = "A gem for interacting with Voxbone's REST API"
10
+ s.homepage = ''
11
+
12
+ s.platform = Gem::Platform::RUBY
13
+ s.files = `git ls-files`.split("\n")
14
+ s.test_files = `git ls-files -- spec`.split("\n")
15
+ s.require_paths = ['lib']
16
+ s.version = Voxbone::VERSION
17
+
18
+ s.add_runtime_dependency 'httparty'
19
+
20
+ s.add_development_dependency 'bundler'
21
+ s.add_development_dependency 'rspec', '~> 3.0'
22
+ end
metadata ADDED
@@ -0,0 +1,100 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: voxbone-ruby
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Julien Negrotto
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-02-17 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: httparty
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ description: A gem for interacting with Voxbone's REST API
56
+ email:
57
+ - jtnegrotto@gmail.com
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - ".gitignore"
63
+ - Gemfile
64
+ - Gemfile.lock
65
+ - README.md
66
+ - lib/voxbone.rb
67
+ - lib/voxbone/config.rb
68
+ - lib/voxbone/inventory.rb
69
+ - lib/voxbone/version.rb
70
+ - lib/voxbone/voxbone.rb
71
+ - spec/spec_helper.rb
72
+ - spec/voxbone/inventory_spec.rb
73
+ - voxbone-ruby.gemspec
74
+ homepage: ''
75
+ licenses: []
76
+ metadata: {}
77
+ post_install_message:
78
+ rdoc_options: []
79
+ require_paths:
80
+ - lib
81
+ required_ruby_version: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ required_rubygems_version: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ requirements: []
92
+ rubyforge_project:
93
+ rubygems_version: 2.4.5.1
94
+ signing_key:
95
+ specification_version: 4
96
+ summary: A gem for interacting with Voxbone's REST API.
97
+ test_files:
98
+ - spec/spec_helper.rb
99
+ - spec/voxbone/inventory_spec.rb
100
+ has_rdoc: