bandwidth 0.0.1

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/.document ADDED
@@ -0,0 +1,5 @@
1
+ lib/**/*.rb
2
+ bin/*
3
+ -
4
+ features/**/*.feature
5
+ LICENSE.txt
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color
data/Gemfile ADDED
@@ -0,0 +1,13 @@
1
+ source "http://rubygems.org"
2
+ gem "savon"
3
+ gem "hashie"
4
+
5
+ # Add dependencies to develop your gem here.
6
+ # Include everything needed to run rake, tests, features, etc.
7
+ group :development do
8
+ gem "rspec", "~> 2.3.0"
9
+ gem "yard", "~> 0.6.0"
10
+ gem "bundler", "~> 1.0.0"
11
+ gem "jeweler", "~> 1.5.2"
12
+ gem "rcov", ">= 0"
13
+ end
data/Gemfile.lock ADDED
@@ -0,0 +1,47 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ builder (3.0.0)
5
+ crack (0.1.8)
6
+ diff-lcs (1.1.2)
7
+ git (1.2.5)
8
+ gyoku (0.3.1)
9
+ builder (>= 2.1.2)
10
+ hashie (1.0.0)
11
+ httpi (0.9.0)
12
+ ntlm-http (>= 0.1.1)
13
+ rack
14
+ jeweler (1.5.2)
15
+ bundler (~> 1.0.0)
16
+ git (>= 1.2.5)
17
+ rake
18
+ ntlm-http (0.1.1)
19
+ rack (1.2.1)
20
+ rake (0.8.7)
21
+ rcov (0.9.9)
22
+ rspec (2.3.0)
23
+ rspec-core (~> 2.3.0)
24
+ rspec-expectations (~> 2.3.0)
25
+ rspec-mocks (~> 2.3.0)
26
+ rspec-core (2.3.1)
27
+ rspec-expectations (2.3.0)
28
+ diff-lcs (~> 1.1.2)
29
+ rspec-mocks (2.3.0)
30
+ savon (0.8.6)
31
+ builder (>= 2.1.2)
32
+ crack (~> 0.1.8)
33
+ gyoku (>= 0.3.0)
34
+ httpi (>= 0.7.8)
35
+ yard (0.6.4)
36
+
37
+ PLATFORMS
38
+ ruby
39
+
40
+ DEPENDENCIES
41
+ bundler (~> 1.0.0)
42
+ hashie
43
+ jeweler (~> 1.5.2)
44
+ rcov
45
+ rspec (~> 2.3.0)
46
+ savon
47
+ yard (~> 0.6.0)
data/LICENSE.txt ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2011 Jason Goecke
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,96 @@
1
+ Bandwidth
2
+ =========
3
+
4
+ Ruby gem for consuming the [Bandwidth REST API](https://my.bandwidth.com/portal/apidoc/welcome.htm).
5
+
6
+ Installation
7
+ ------------
8
+
9
+ gem install bandwidth
10
+
11
+ Example
12
+ -------
13
+
14
+ [API Docs](http://jsgoecke.github.com/bandwdith)
15
+
16
+ require 'rubygems'
17
+ require 'bandwidth'
18
+ bandwidth = Bandwidth.new(:developer_key => 'your developer key')
19
+ bandwidth.area_code_number_search :area_code => '720', :max_quantity => 1
20
+
21
+ Returns (using awesome_print gem):
22
+
23
+ {
24
+ "body" => {
25
+ "numberSearchResponse" => {
26
+ "xmlns:xsd" => "http://www.w3.org/2001/XMLSchema",
27
+ "quantity" => "1",
28
+ "requestID" => "463f5cd2-e75d-4cc2-9ab1-1235a3dd283c",
29
+ "dateTimeSent" => "2011-03-18 19:48:04Z",
30
+ "warnings" => nil,
31
+ "errors" => nil,
32
+ "xmlns:xsi" => "http://www.w3.org/2001/XMLSchema-instance",
33
+ "telephoneNumbers" => {
34
+ "telephoneNumber" => {
35
+ "e164" => "+17205551212",
36
+ "npaNxx" => "720555",
37
+ "tenDigit" => "7205551212",
38
+ "formattedNumber" => "1-720-555-1212",
39
+ "numberID" => "6f37a640-0d9d-45cc-b97b-d6ad77f220b2",
40
+ "status" => "Available",
41
+ "rateCenter" => {
42
+ "name" => "DENVERSLVN",
43
+ "lata" => "656",
44
+ "state" => "CO"
45
+ }
46
+ }
47
+ },
48
+ "message" => "Successfully executed specified number search.",
49
+ "status" => "success",
50
+ "xmlns" => "http://www.bandwidth.com/api/"
51
+ }
52
+ },
53
+ "code" => 200,
54
+ "headers" => {
55
+ "X-Powered-By" => "Bandwidth.com",
56
+ "X-API-SupportEmail" => "apifeedback@bandwidth.com",
57
+ "Content-Type" => "text/xml; charset=utf-8",
58
+ "Date" => "Fri, 18 Mar 2011 19:48:04 GMT",
59
+ "Content-Length" => "825",
60
+ "Server" => "Microsoft-IIS/7.0",
61
+ "Cache-Control" => "private",
62
+ "X-AspNet-Version" => "2.0.50727"
63
+ }
64
+ }
65
+
66
+ Available Methods
67
+ -----------------
68
+
69
+ Full details of available methods [here](https://my.bandwidth.com/portal/apidoc/2-x-supported-operations.htm).
70
+
71
+ [2.x] Supported Operations, Numbers - getTelephoneNumber
72
+ [2.x] Supported Operations, Numbers - getNumberOrder
73
+ [2.x] Supported Operations, Numbers - getNumberOrders (developer, account)
74
+ [2.x] Supported Operations, Numbers - areaCodeNumberSearch
75
+ [2.x] Supported Operations, Numbers - npaNxxNumberSearch
76
+ [2.x] Supported Operations, Numbers - rateCenterNumberSearch
77
+ [2.x] Supported Operations, Numbers - rateCenterNumberOrder
78
+ [2.x] Supported Operations, Numbers - tollfreeNumberSearch
79
+ [2.x] Supported Operations, Numbers - tollfreeNumberOrder
80
+ [2.x] Supported Operations, Numbers - basicNumberOrder
81
+ [2.x] Supported Operations, Numbers - changeNumber
82
+ [2.x] Supported Operations, Numbers - sipTrunkOrder
83
+ [2.x] Supported Operations, Cdr - getCdrArchive
84
+ (restricted use)
85
+ [2.x] Restricted Operations, Numbers - consumedNumbers
86
+ [2.x] Restricted Operations, Numbers - reserveNumbers
87
+ [2.x] Restricted Operations, Numbers - pbod
88
+ [2.x] Restricted Operations, Numbers - rateCenterBlockOrder
89
+ [2.x] Restricted Operations, Numbers - getRateCenterBlockOrder
90
+ [2.x] Restricted Operations, Numbers - getRateCenterBlockOrders
91
+
92
+ Copyright
93
+ ---------
94
+
95
+ Copyright (c) 2011 Jason Goecke. See LICENSE.txt for
96
+ further details.
data/Rakefile ADDED
@@ -0,0 +1,38 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+ begin
4
+ Bundler.setup(:default, :development)
5
+ rescue Bundler::BundlerError => e
6
+ $stderr.puts e.message
7
+ $stderr.puts "Run `bundle install` to install missing gems"
8
+ exit e.status_code
9
+ end
10
+ require 'rake'
11
+
12
+ require 'jeweler'
13
+ Jeweler::Tasks.new do |gem|
14
+ gem.name = "bandwidth"
15
+ gem.homepage = "http://github.com/jsgoecke/bandwidth"
16
+ gem.license = "MIT"
17
+ gem.summary = 'Ruby gem for consuming the Bandwidth REST API.'
18
+ gem.description = 'More detail here: https://my.bandwidth.com/portal/apidoc/welcome.htm'
19
+ gem.email = "jason@goecke.net"
20
+ gem.authors = ["Jason Goecke"]
21
+ end
22
+ Jeweler::RubygemsDotOrgTasks.new
23
+
24
+ require 'rspec/core'
25
+ require 'rspec/core/rake_task'
26
+ RSpec::Core::RakeTask.new(:spec) do |spec|
27
+ spec.pattern = FileList['spec/**/*_spec.rb']
28
+ end
29
+
30
+ RSpec::Core::RakeTask.new(:rcov) do |spec|
31
+ spec.pattern = 'spec/**/*_spec.rb'
32
+ spec.rcov = true
33
+ end
34
+
35
+ task :default => :spec
36
+
37
+ require 'yard'
38
+ YARD::Rake::YardocTask.new
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.0.1
@@ -0,0 +1,7 @@
1
+ require 'rubygems'
2
+ require 'lib/bandwidth'
3
+ require 'awesome_print'
4
+
5
+ bandwidth = Bandwidth.new(:developer_key => 'your developer key', :use_lab_uris => true)
6
+
7
+ ap bandwidth.area_code_number_search :area_code => '720', :max_quantity => 1
data/lib/bandwidth.rb ADDED
@@ -0,0 +1,2 @@
1
+ $: << File.expand_path(File.dirname(__FILE__))
2
+ %w(savon hashie bandwidth/bandwidth).each { |lib| require lib }
@@ -0,0 +1,127 @@
1
+ class Bandwidth
2
+ # Available REST API methods
3
+ API_METHODS = [ :get_telephone_number,
4
+ :get_number_order,
5
+ :get_number_orders,
6
+ :area_code_number_search,
7
+ :npa_nxx_number_search,
8
+ :rate_center_number_search,
9
+ :rate_center_number_order,
10
+ :tollfree_number_search,
11
+ :basic_number_order,
12
+ :change_number,
13
+ :sip_trunk_order,
14
+ :consumed_numbers,
15
+ :reserve_numbers,
16
+ :pbod,
17
+ :rate_center_block_order,
18
+ :get_rate_center_block_order,
19
+ :get_rate_center_block_orders,
20
+ :get_cdr_archive ]
21
+
22
+ ##
23
+ # Instantiate a Bandwdith object
24
+ #
25
+ # @param [required, Hash] params
26
+ # @option params [required, String] :developer_key assigned to you by Bandwidth
27
+ # @option params [optional, Boolean] :processing_type whether to 'process' the request or only 'validate', default is 'process'
28
+ # @option params [optional, Symbol] :log_level which level to set the logging at, off by default
29
+ # @option params [optional, Boolean] :use_lab_uris if true, will use the Bandwidth Lab URIs rather than production
30
+ # @return [Object] the instantiated Bandwdith object
31
+ # @raise ArgumentError when the :developer_key is not present
32
+ # @example Instantiate a Bandwdith object
33
+ # require 'rubygems'
34
+ # require 'bandwidth'
35
+ # bandwdith = Bandwidth.new(:developer_key => 'test')
36
+ def initialize(params)
37
+ raise ArgumentError, ":developer_key required" if params[:developer_key].nil?
38
+
39
+ if params[:log_level]
40
+ HTTPI.log_level = params[:log_level]
41
+ else
42
+ HTTPI.log = false
43
+ end
44
+
45
+ @use_labs_uris = params[:use_lab_uris] || false
46
+ @developer_key = params[:developer_key]
47
+ @numbers_request = create_request(:numbers, params)
48
+ @cdrs_request = create_request(:cdrs, params)
49
+ end
50
+
51
+ ##
52
+ # Provides the dispatcher to the available REST methods on the Bandwidth API
53
+ #
54
+ # @param [required, Symbol] the method name to invoke on the REST API
55
+ # @param [optional, Hash] the parameters to pass to the method, should be symbols and may be all lowercase with underscores or camelCase
56
+ # @return [Hashie::Mash Object] containing the results of the REST call
57
+ # @raise NoMethodError if the method requested is not defined in the API_METHODS constant
58
+ # @example Retrieve numbers available in an area code
59
+ # bandwidth.area_code_number_search :area_code => '720', :max_quantity => 10
60
+ def method_missing(method_name, params={})
61
+ raise NoMethodError, "The method #{method_name.to_s} does not exist." if API_METHODS.include?(method_name) == false
62
+
63
+ if method_name == :get_cdr_archive
64
+ @cdrs_request.body = Gyoku.xml({ method_name => params.merge({ :developer_key => @developer_key }),
65
+ :attributes! => xml_namespaces(method_name) })
66
+
67
+ response = HTTPI.post @cdrs_request
68
+ else
69
+ @numbers_request.body = Gyoku.xml({ method_name => params.merge({ :developer_key => @developer_key }),
70
+ :attributes! => xml_namespaces(method_name) })
71
+
72
+ response = HTTPI.post @numbers_request
73
+ end
74
+
75
+ Hashie::Mash.new({ :code => response.code,
76
+ :body => Crack::XML.parse(response.raw_body),
77
+ :headers => response.headers })
78
+ end
79
+
80
+ private
81
+
82
+ ##
83
+ # Creates the request
84
+ #
85
+ # @param [required, Symbol] type indicates if it is to create a :numbers request or a :cdrs request
86
+ # @param [required, Hash] params to build the request with
87
+ # @return [Object] the resulting request object
88
+ def create_request(type, params)
89
+ request = HTTPI::Request.new
90
+
91
+ # Right now Bandwidth's Lab does not support SSL, but their production does
92
+ if @use_labs_uris != true
93
+ request.ssl = true
94
+ request.auth.ssl.verify_mode = :none
95
+ end
96
+
97
+ request.headers = { 'Content-Type' => 'text/xml',
98
+ 'X-BWC-IN-Control-Processing-Type' => params[:processing_type] || 'process' }
99
+
100
+ if type == :numbers
101
+ if @use_labs_uris == true
102
+ request.url = 'http://labs.bandwidth.com/api/public/v2/numbers.api'
103
+ else
104
+ request.url = 'https://api.bandwidth.com/public/v2/numbers.api'
105
+ end
106
+ elsif type == :cdrs
107
+ if @use_labs_uris == true
108
+ request.url = 'http://labs.bandwidth.com/api/public/v2/cdrs.api'
109
+ else
110
+ request.url = 'https://api.bandwidth.com/public/v2/cdrs.api'
111
+ end
112
+ end
113
+
114
+ request
115
+ end
116
+
117
+ ##
118
+ # Provides the required XML namespace details for the Bandwidth API
119
+ #
120
+ # @param [required, Symbol] method_name to add the XML namespace details to
121
+ # @return [Hash] the resulting XML namespace attributes
122
+ def xml_namespaces(method_name)
123
+ { method_name => { 'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance',
124
+ 'xmlns:xsd' => 'http://www.w3.org/2001/XMLSchema',
125
+ 'xmlns' => 'http://www.bandwidth.com/api/' } }
126
+ end
127
+ end
@@ -0,0 +1,63 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe "Bandwidth" do
4
+ before(:each) do
5
+ # You will need to set the developer_key to a valid one from Bandwidth in order to run a test
6
+ @bandwidth = Bandwidth.new({ :developer_key => 'your developer key',
7
+ :use_lab_uris => true,
8
+ :log_level => :debug })
9
+ end
10
+
11
+ describe "numbers" do
12
+ it "should instantiate a Bandwidth::Numbers class" do
13
+ @bandwidth.instance_of?(Bandwidth).should == true
14
+ end
15
+
16
+ it "should raise a no method error if an unknown method is called" do
17
+ begin
18
+ @bandwidth.foobar
19
+ rescue => error
20
+ error.class.should == NoMethodError
21
+ error.to_s.should == "The method foobar does not exist."
22
+ end
23
+ end
24
+
25
+ it "should get a response when searching for area codes" do
26
+ result = @bandwidth.area_code_number_search :area_code => '720', :max_quantity => 10
27
+ result[:body]['numberSearchResponse'].nil?.should == false
28
+ end
29
+
30
+ it "should get a response when searching for area codes when params passed as camelCase too" do
31
+ result = @bandwidth.area_code_number_search :areaCode => '720', :maxQuantity => 10
32
+ result[:body]['numberSearchResponse'].nil?.should == false
33
+ end
34
+
35
+ it "should return the result body as a Hashie::Mash class" do
36
+ result = @bandwidth.area_code_number_search :area_code => '720', :max_quantity => 10
37
+ result[:body].instance_of?(Hashie::Mash).should == true
38
+ end
39
+
40
+ it "should get a response when searching by area code and prefix (aka - NPA and NXX)" do
41
+ result = @bandwidth.npa_nxx_number_search(:npa_nxx => '720263')
42
+ result[:body][:numberSearchResponse].nil? == false
43
+ end
44
+
45
+ it "should get a response when searching for a toll free number" do
46
+ result = @bandwidth.tollfree_number_search :max_quantity => 10
47
+ result.body.numberSearchResponse.nil?.should == false
48
+ end
49
+
50
+ it "should get a response when retrieving for a number order" do
51
+ result = @bandwidth.get_number_order(:get_type => 'orderID', :get_value => 'C2594E54-015A-4D4E-81A8-F05B76610877')
52
+ result.body.getResponse.nil?.should == false
53
+ end
54
+ end
55
+
56
+ describe "cdrs" do
57
+ it "should get a resopnse when retrieving cdrs" do
58
+ pending('It appears Bandwidth has not provided access to this just yet.')
59
+ result = @bandwidth.get_cdr_archive(:get_type => 'Daily', :get_value => '20110221')
60
+ result.should == nil
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,12 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
3
+ require 'rspec'
4
+ require 'bandwidth'
5
+
6
+ # Requires supporting files with custom matchers and macros, etc,
7
+ # in ./support/ and its subdirectories.
8
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
9
+
10
+ RSpec.configure do |config|
11
+
12
+ end
metadata ADDED
@@ -0,0 +1,187 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: bandwidth
3
+ version: !ruby/object:Gem::Version
4
+ hash: 29
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 1
10
+ version: 0.0.1
11
+ platform: ruby
12
+ authors:
13
+ - Jason Goecke
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-03-18 00:00:00 -07:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ type: :runtime
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ hash: 3
29
+ segments:
30
+ - 0
31
+ version: "0"
32
+ name: savon
33
+ version_requirements: *id001
34
+ prerelease: false
35
+ - !ruby/object:Gem::Dependency
36
+ type: :runtime
37
+ requirement: &id002 !ruby/object:Gem::Requirement
38
+ none: false
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ hash: 3
43
+ segments:
44
+ - 0
45
+ version: "0"
46
+ name: hashie
47
+ version_requirements: *id002
48
+ prerelease: false
49
+ - !ruby/object:Gem::Dependency
50
+ type: :development
51
+ requirement: &id003 !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ~>
55
+ - !ruby/object:Gem::Version
56
+ hash: 3
57
+ segments:
58
+ - 2
59
+ - 3
60
+ - 0
61
+ version: 2.3.0
62
+ name: rspec
63
+ version_requirements: *id003
64
+ prerelease: false
65
+ - !ruby/object:Gem::Dependency
66
+ type: :development
67
+ requirement: &id004 !ruby/object:Gem::Requirement
68
+ none: false
69
+ requirements:
70
+ - - ~>
71
+ - !ruby/object:Gem::Version
72
+ hash: 7
73
+ segments:
74
+ - 0
75
+ - 6
76
+ - 0
77
+ version: 0.6.0
78
+ name: yard
79
+ version_requirements: *id004
80
+ prerelease: false
81
+ - !ruby/object:Gem::Dependency
82
+ type: :development
83
+ requirement: &id005 !ruby/object:Gem::Requirement
84
+ none: false
85
+ requirements:
86
+ - - ~>
87
+ - !ruby/object:Gem::Version
88
+ hash: 23
89
+ segments:
90
+ - 1
91
+ - 0
92
+ - 0
93
+ version: 1.0.0
94
+ name: bundler
95
+ version_requirements: *id005
96
+ prerelease: false
97
+ - !ruby/object:Gem::Dependency
98
+ type: :development
99
+ requirement: &id006 !ruby/object:Gem::Requirement
100
+ none: false
101
+ requirements:
102
+ - - ~>
103
+ - !ruby/object:Gem::Version
104
+ hash: 7
105
+ segments:
106
+ - 1
107
+ - 5
108
+ - 2
109
+ version: 1.5.2
110
+ name: jeweler
111
+ version_requirements: *id006
112
+ prerelease: false
113
+ - !ruby/object:Gem::Dependency
114
+ type: :development
115
+ requirement: &id007 !ruby/object:Gem::Requirement
116
+ none: false
117
+ requirements:
118
+ - - ">="
119
+ - !ruby/object:Gem::Version
120
+ hash: 3
121
+ segments:
122
+ - 0
123
+ version: "0"
124
+ name: rcov
125
+ version_requirements: *id007
126
+ prerelease: false
127
+ description: "More detail here: https://my.bandwidth.com/portal/apidoc/welcome.htm"
128
+ email: jason@goecke.net
129
+ executables: []
130
+
131
+ extensions: []
132
+
133
+ extra_rdoc_files:
134
+ - LICENSE.txt
135
+ - README.md
136
+ files:
137
+ - .document
138
+ - .rspec
139
+ - Gemfile
140
+ - Gemfile.lock
141
+ - LICENSE.txt
142
+ - README.md
143
+ - Rakefile
144
+ - VERSION
145
+ - examples/example.rb
146
+ - lib/bandwidth.rb
147
+ - lib/bandwidth/bandwidth.rb
148
+ - spec/bandwidth_spec.rb
149
+ - spec/spec_helper.rb
150
+ has_rdoc: true
151
+ homepage: http://github.com/jsgoecke/bandwidth
152
+ licenses:
153
+ - MIT
154
+ post_install_message:
155
+ rdoc_options: []
156
+
157
+ require_paths:
158
+ - lib
159
+ required_ruby_version: !ruby/object:Gem::Requirement
160
+ none: false
161
+ requirements:
162
+ - - ">="
163
+ - !ruby/object:Gem::Version
164
+ hash: 3
165
+ segments:
166
+ - 0
167
+ version: "0"
168
+ required_rubygems_version: !ruby/object:Gem::Requirement
169
+ none: false
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ hash: 3
174
+ segments:
175
+ - 0
176
+ version: "0"
177
+ requirements: []
178
+
179
+ rubyforge_project:
180
+ rubygems_version: 1.5.0
181
+ signing_key:
182
+ specification_version: 3
183
+ summary: Ruby gem for consuming the Bandwidth REST API.
184
+ test_files:
185
+ - examples/example.rb
186
+ - spec/bandwidth_spec.rb
187
+ - spec/spec_helper.rb