ruby-bandwidth-iris 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (77) hide show
  1. checksums.yaml +7 -0
  2. data/.editorconfig +13 -0
  3. data/.gitignore +12 -0
  4. data/.rspec +3 -0
  5. data/.travis.yml +7 -0
  6. data/Gemfile +10 -0
  7. data/LICENSE.txt +20 -0
  8. data/README.md +571 -0
  9. data/Rakefile +5 -0
  10. data/examples/account.rb +15 -0
  11. data/examples/available_npa_nxx.rb +17 -0
  12. data/examples/available_number.rb +17 -0
  13. data/examples/city.rb +16 -0
  14. data/examples/config.yml.example +4 -0
  15. data/examples/covered-rate-center.rb +19 -0
  16. data/examples/loa.pdf +0 -0
  17. data/examples/order.rb +51 -0
  18. data/examples/port-in.rb +95 -0
  19. data/examples/sip_peer.rb +60 -0
  20. data/examples/site.rb +29 -0
  21. data/examples/tn.rb +20 -0
  22. data/lib/bandwidth-iris/account.rb +10 -0
  23. data/lib/bandwidth-iris/api_item.rb +36 -0
  24. data/lib/bandwidth-iris/available_npa_nxx.rb +15 -0
  25. data/lib/bandwidth-iris/available_number.rb +15 -0
  26. data/lib/bandwidth-iris/city.rb +15 -0
  27. data/lib/bandwidth-iris/client.rb +232 -0
  28. data/lib/bandwidth-iris/client_wrapper.rb +28 -0
  29. data/lib/bandwidth-iris/covered_rate_center.rb +17 -0
  30. data/lib/bandwidth-iris/disc_number.rb +19 -0
  31. data/lib/bandwidth-iris/disconnect.rb +36 -0
  32. data/lib/bandwidth-iris/dlda.rb +39 -0
  33. data/lib/bandwidth-iris/errors.rb +31 -0
  34. data/lib/bandwidth-iris/import_to_account.rb +24 -0
  35. data/lib/bandwidth-iris/in_service_number.rb +24 -0
  36. data/lib/bandwidth-iris/lidb.rb +24 -0
  37. data/lib/bandwidth-iris/lnp_checker.rb +18 -0
  38. data/lib/bandwidth-iris/lsr_order.rb +58 -0
  39. data/lib/bandwidth-iris/order.rb +76 -0
  40. data/lib/bandwidth-iris/port_in.rb +80 -0
  41. data/lib/bandwidth-iris/port_out.rb +24 -0
  42. data/lib/bandwidth-iris/rate_center.rb +19 -0
  43. data/lib/bandwidth-iris/sip_peer.rb +47 -0
  44. data/lib/bandwidth-iris/site.rb +83 -0
  45. data/lib/bandwidth-iris/subscription.rb +42 -0
  46. data/lib/bandwidth-iris/tn.rb +41 -0
  47. data/lib/bandwidth-iris/tn_reservation.rb +26 -0
  48. data/lib/bandwidth-iris/user.rb +20 -0
  49. data/lib/bandwidth-iris/version.rb +4 -0
  50. data/lib/ruby-bandwidth-iris.rb +29 -0
  51. data/ruby-bandwidth-iris.gemspec +26 -0
  52. data/spec/bandwidth-iris/account_spec.rb +19 -0
  53. data/spec/bandwidth-iris/available_npa_nxx_spec.rb +22 -0
  54. data/spec/bandwidth-iris/available_number_spec.rb +19 -0
  55. data/spec/bandwidth-iris/city_spec.rb +22 -0
  56. data/spec/bandwidth-iris/client_spec.rb +125 -0
  57. data/spec/bandwidth-iris/covered_rate_center_spec.rb +22 -0
  58. data/spec/bandwidth-iris/disconnect_spec.rb +52 -0
  59. data/spec/bandwidth-iris/dlda_spec.rb +47 -0
  60. data/spec/bandwidth-iris/import_to_account_spec.rb +36 -0
  61. data/spec/bandwidth-iris/in_service_number_spec.rb +33 -0
  62. data/spec/bandwidth-iris/lidb_spec.rb +44 -0
  63. data/spec/bandwidth-iris/lnp_checker_spec.rb +24 -0
  64. data/spec/bandwidth-iris/lsr_order_spec.rb +96 -0
  65. data/spec/bandwidth-iris/order_spec.rb +124 -0
  66. data/spec/bandwidth-iris/port_in_spec.rb +135 -0
  67. data/spec/bandwidth-iris/port_out_spec.rb +36 -0
  68. data/spec/bandwidth-iris/rate_center_spec.rb +29 -0
  69. data/spec/bandwidth-iris/sip_peer_spec.rb +86 -0
  70. data/spec/bandwidth-iris/site_spec.rb +95 -0
  71. data/spec/bandwidth-iris/subscription_spec.rb +58 -0
  72. data/spec/bandwidth-iris/tn_reservation_spec.rb +39 -0
  73. data/spec/bandwidth-iris/tn_spec.rb +68 -0
  74. data/spec/bandwidth-iris/user_spec.rb +21 -0
  75. data/spec/helper.rb +75 -0
  76. data/spec/xml.yml +46 -0
  77. metadata +256 -0
@@ -0,0 +1,19 @@
1
+ module BandwidthIris
2
+ DISC_NUMBER_PATH = 'users'
3
+
4
+ class DiscNumber
5
+ extend ClientWrapper
6
+ include ApiItem
7
+
8
+ def self.list(client)
9
+ client.make_request(:get, client.concat_account_path(DISC_NUMBER_PATH))[0][:telephone_numbers]
10
+ end
11
+ wrap_client_arg :list
12
+
13
+
14
+ def self.totals(client)
15
+ client.make_request(:get, "#{client.concat_account_path(DISC_NUMBER_PATH)}/totals")[0]
16
+ end
17
+ wrap_client_arg :totals
18
+ end
19
+ end
@@ -0,0 +1,36 @@
1
+ module BandwidthIris
2
+ DISCONNECT_PATH = 'disconnects'
3
+
4
+ class Disconnect
5
+ extend ClientWrapper
6
+ include ApiItem
7
+
8
+ def self.create(client, order_name, numbers)
9
+ data = {
10
+ :disconnect_telephone_number_order =>{
11
+ :name => order_name,
12
+ '_nameXmlElement' => 'name',
13
+ :disconnect_telephone_number_order_type => { :telephone_number => numbers }
14
+ }
15
+ }
16
+ client.make_request(:post, client.concat_account_path(DISCONNECT_PATH), data)[0]
17
+ end
18
+ wrap_client_arg :create
19
+
20
+ def get_notes()
21
+ list = @client.make_request(:get, "#{@client.concat_account_path(DISCONNECT_PATH)}/#{id}/notes")[0][:note]
22
+ return [] if !list
23
+ if list.is_a?(Array)
24
+ list
25
+ else
26
+ [list]
27
+ end
28
+ end
29
+
30
+ def add_notes(note)
31
+ r = @client.make_request(:post, "#{@client.concat_account_path(DISCONNECT_PATH)}/#{id}/notes", {:note => note})
32
+ note_id = Client.get_id_from_location_header(r[1][:location])
33
+ (get_notes().select {|n| n[:id].to_s == note_id }).first
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,39 @@
1
+ module BandwidthIris
2
+ DLDA_PATH = 'dldas'
3
+
4
+ class Dlda
5
+ extend ClientWrapper
6
+ include ApiItem
7
+
8
+ def self.list(client, query = nil)
9
+ list = client.make_request(:get, client.concat_account_path(DLDA_PATH), query)[0][:list_order_id_user_id_date][:order_id_user_id_date]
10
+ return [] if !list
11
+ list = if list.is_a?(Array) then list else [list] end
12
+ list.map do |i|
13
+ i[:id] = i[:order_id]
14
+ Dlda.new(i, client)
15
+ end
16
+ end
17
+ wrap_client_arg :list
18
+
19
+ def self.get(client, id)
20
+ data = client.make_request(:get, "#{client.concat_account_path(DLDA_PATH)}/#{id}")[0][:dlda_order]
21
+ data[:id] = data[:order_id]
22
+ Dlda.new(data, client)
23
+ end
24
+ wrap_client_arg :get
25
+
26
+ def self.create(client, item)
27
+ location = client.make_request(:post, client.concat_account_path(DLDA_PATH), {:dlda_order => item})[1][:location]
28
+ id = Client.get_id_from_location_header(location)
29
+ self.get(client, id)
30
+ end
31
+ wrap_client_arg :create
32
+
33
+
34
+ def get_history()
35
+ @client.make_request(:get,"#{@client.concat_account_path(DLDA_PATH)}/#{id}/history")[0][:order_history]
36
+ end
37
+
38
+ end
39
+ end
@@ -0,0 +1,31 @@
1
+ module BandwidthIris
2
+ module Errors
3
+ # Generic error class
4
+ class GenericError < StandardError
5
+ # @return [String] Error code
6
+ attr_reader :code
7
+
8
+ # @return [String] Http status code
9
+ attr_reader :http_status
10
+
11
+ # @api private
12
+ def initialize code, message, http_status
13
+ super message
14
+ @code = code
15
+ @http_status = http_status
16
+ end
17
+ end
18
+
19
+ # Agregate error class
20
+ class AgregateError < StandardError
21
+ # @return [Array] errors
22
+ attr_reader :errors
23
+
24
+ # @api private
25
+ def initialize errorss
26
+ super "Multiple errors"
27
+ @errors = errors
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,24 @@
1
+ module BandwidthIris
2
+ IMPORT_TO_ACCOUNT_PATH = 'importToAccounts'
3
+
4
+ class ImportToAccount
5
+ extend ClientWrapper
6
+ include ApiItem
7
+
8
+ def get_notes()
9
+ list = @client.make_request(:get, "#{@client.concat_account_path(IMPORT_TO_ACCOUNT_PATH)}/#{id}/notes")[0][:note]
10
+ return [] if !list
11
+ if list.is_a?(Array)
12
+ list
13
+ else
14
+ [list]
15
+ end
16
+ end
17
+
18
+ def add_notes(note)
19
+ r = @client.make_request(:post, "#{@client.concat_account_path(IMPORT_TO_ACCOUNT_PATH)}/#{id}/notes", {:note => note})
20
+ note_id = Client.get_id_from_location_header(r[1][:location])
21
+ (get_notes().select {|n| n[:id].to_s == note_id }).first
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,24 @@
1
+ module BandwidthIris
2
+ INSERVICE_NUMBER_PATH = 'inserviceNumbers'
3
+
4
+ class InServiceNumber
5
+ extend ClientWrapper
6
+
7
+ def self.list(client, query = nil)
8
+ list = client.make_request(:get, client.concat_account_path(INSERVICE_NUMBER_PATH), query)[0][:telephone_numbers][:telephone_number]
9
+ return [] if !list
10
+ if list.is_a?(Array) then list else [list] end
11
+ end
12
+ wrap_client_arg :list
13
+
14
+ def self.get(client, number)
15
+ client.make_request(:get, "#{client.concat_account_path(INSERVICE_NUMBER_PATH)}/#{URI.escape(number)}")[0]
16
+ end
17
+ wrap_client_arg :get
18
+
19
+ def self.totals(client)
20
+ client.make_request(:get, "#{client.concat_account_path(INSERVICE_NUMBER_PATH)}/totals")[0]
21
+ end
22
+ wrap_client_arg :totals
23
+ end
24
+ end
@@ -0,0 +1,24 @@
1
+ module BandwidthIris
2
+ LIDB_PATH = 'lidbs'
3
+
4
+ class Lidb
5
+ extend ClientWrapper
6
+
7
+ def self.list(client, query = nil)
8
+ client.make_request(:get, client.concat_account_path(LIDB_PATH), query)[0]
9
+ end
10
+ wrap_client_arg :list
11
+
12
+ def self.get(client, id)
13
+ client.make_request(:get, "#{client.concat_account_path(LIDB_PATH)}/#{id}")[0]
14
+ end
15
+ wrap_client_arg :get
16
+
17
+ def self.create(client, item)
18
+ location = client.make_request(:post, client.concat_account_path(LIDB_PATH), {:lidb_order => item})[1][:location]
19
+ id = Client.get_id_from_location_header(location)
20
+ self.get(client, id)
21
+ end
22
+ wrap_client_arg :create
23
+ end
24
+ end
@@ -0,0 +1,18 @@
1
+ module BandwidthIris
2
+ LNP_CHECKER_PATH = 'lnpchecker'
3
+
4
+ class LnpChecker
5
+ extend ClientWrapper
6
+
7
+ def self.check(client, numbers, full_check = false)
8
+ data = {
9
+ :number_portability_request => {
10
+ :tn_list => {:tn => numbers}
11
+ }
12
+ }
13
+ client.make_request(:post, "#{client.concat_account_path(LNP_CHECKER_PATH)}?fullCheck=#{full_check}", data)[0]
14
+ end
15
+ wrap_client_arg :check
16
+
17
+ end
18
+ end
@@ -0,0 +1,58 @@
1
+ module BandwidthIris
2
+ LSR_ORDER_PATH = 'lsrorders'
3
+
4
+ class LsrOrder
5
+ extend ClientWrapper
6
+ include ApiItem
7
+
8
+ def self.create(client, item)
9
+ item['_sPIDXmlElement'] = 'sPID'
10
+ location = client.make_request(:post, client.concat_account_path(LSR_ORDER_PATH), {:lsr_order => item})[1][:location]
11
+ id = Client.get_id_from_location_header(location)
12
+ self.get(client, id)
13
+ end
14
+ wrap_client_arg :create
15
+
16
+ def self.list(client, query = nil)
17
+ list = client.make_request(:get, client.concat_account_path(LSR_ORDER_PATH), query)[0][:lsr_order_summary]
18
+ return [] if !list
19
+ list = if list.is_a?(Array) then list else [list] end
20
+ list.map do |i|
21
+ i[:id] = i[:order_id]
22
+ LsrOrder.new(i, client)
23
+ end
24
+ end
25
+ wrap_client_arg :list
26
+
27
+ def self.get(client, id)
28
+ data = client.make_request(:get, "#{client.concat_account_path(LSR_ORDER_PATH)}/#{id}")[0]
29
+ data[:id] = data[:order_id]
30
+ LsrOrder.new(data, client)
31
+ end
32
+ wrap_client_arg :get
33
+
34
+ def update(data)
35
+ @client.make_request(:put,"#{@client.concat_account_path(LSR_ORDER_PATH)}/#{id}", {:lsr_order => data})
36
+ end
37
+
38
+ def get_notes()
39
+ list = @client.make_request(:get, "#{@client.concat_account_path(LSR_ORDER_PATH)}/#{id}/notes")[0][:note]
40
+ if list.is_a?(Array)
41
+ list
42
+ else
43
+ [list]
44
+ end
45
+ end
46
+
47
+ def add_notes(note)
48
+ r = @client.make_request(:post, "#{@client.concat_account_path(LSR_ORDER_PATH)}/#{id}/notes", {:note => note})
49
+ note_id = Client.get_id_from_location_header(r[1][:location])
50
+ (get_notes().select {|n| n[:id].to_s == note_id }).first
51
+ end
52
+
53
+
54
+ def get_history()
55
+ @client.make_request(:get,"#{@client.concat_account_path(LSR_ORDER_PATH)}/#{id}/history")[0][:order_history]
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,76 @@
1
+ module BandwidthIris
2
+ ORDER_PATH = 'orders'
3
+
4
+ class Order
5
+ extend ClientWrapper
6
+ include ApiItem
7
+
8
+ def self.create(client, item)
9
+ data = client.make_request(:post, client.concat_account_path(ORDER_PATH), {:order => item})[0][:order]
10
+ Order.new(data, client)
11
+ end
12
+ wrap_client_arg :create
13
+
14
+ def self.get(client, id)
15
+ data = client.make_request(:get, "#{client.concat_account_path(ORDER_PATH)}/#{id}")[0][:order]
16
+ Order.new(data, client)
17
+ end
18
+ wrap_client_arg :get
19
+
20
+ def self.list(client, query = nil)
21
+ list = client.make_request(:get, client.concat_account_path(ORDER_PATH), query)[0][:orders][:order]
22
+ return [] if !list
23
+ list = if list.is_a?(Array) then list else [list] end
24
+ list.map {|i| Order.new(i, client)}
25
+ end
26
+ wrap_client_arg :list
27
+
28
+ def update(data)
29
+ @client.make_request(:put, "#{@client.concat_account_path(ORDER_PATH)}/#{id}", {:order => data})[0]
30
+ end
31
+
32
+ def get_notes()
33
+ list = @client.make_request(:get, "#{@client.concat_account_path(ORDER_PATH)}/#{id}/notes")[0][:note]
34
+ return [] if !list
35
+ if list.is_a?(Array)
36
+ list
37
+ else
38
+ [list]
39
+ end
40
+ end
41
+
42
+ def add_notes(note)
43
+ r = @client.make_request(:post, "#{@client.concat_account_path(ORDER_PATH)}/#{id}/notes", {:note => note})
44
+ note_id = Client.get_id_from_location_header(r[1][:location])
45
+ (get_notes().select {|n| n[:id].to_s == note_id }).first
46
+ end
47
+
48
+ def get_area_codes()
49
+ list = @client.make_request(:get, "#{@client.concat_account_path(ORDER_PATH)}/#{id}/areaCodes")[0][:telephone_details_report]
50
+ return [] if !list
51
+ if list.is_a?(Array) then list else [list] end
52
+ end
53
+
54
+ def get_npa_npx()
55
+ list = @client.make_request(:get, "#{@client.concat_account_path(ORDER_PATH)}/#{id}/npaNxx")[0][:telephone_details_report]
56
+ return [] if !list
57
+ if list.is_a?(Array) then list else [list] end
58
+ end
59
+
60
+ def get_totals()
61
+ list = @client.make_request(:get, "#{@client.concat_account_path(ORDER_PATH)}/#{id}/totals")[0][:telephone_details_report]
62
+ return [] if !list
63
+ if list.is_a?(Array) then list else [list] end
64
+ end
65
+
66
+ def get_tns()
67
+ @client.make_request(:get, "#{@client.concat_account_path(ORDER_PATH)}/#{id}/tns")[0]
68
+ end
69
+
70
+ def get_history()
71
+ list = @client.make_request(:get, "#{@client.concat_account_path(ORDER_PATH)}/#{id}/history")[0][:order_history]
72
+ return [] if !list
73
+ if list.is_a?(Array) then list else [list] end
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,80 @@
1
+ module BandwidthIris
2
+ PORT_IN_PATH = 'portins'
3
+ LOAS_PATH = 'loas'
4
+
5
+ class PortIn
6
+ extend ClientWrapper
7
+ include ApiItem
8
+
9
+ def self.create(client, item)
10
+ item = client.make_request(:post, client.concat_account_path(PORT_IN_PATH), {:lnp_order => item})[0]
11
+ item[:id] = item[:order_id]
12
+ PortIn.new(item, client)
13
+ end
14
+ wrap_client_arg :create
15
+
16
+
17
+ def update(data)
18
+ @client.make_request(:put,"#{@client.concat_account_path(PORT_IN_PATH)}/#{id}", {:lnp_order_supp => data})
19
+ end
20
+
21
+ def delete()
22
+ @client.make_request(:delete,"#{@client.concat_account_path(PORT_IN_PATH)}/#{id}")
23
+ end
24
+
25
+ def get_notes()
26
+ list = @client.make_request(:get, "#{@client.concat_account_path(PORT_IN_PATH)}/#{id}/notes")[0][:note]
27
+ return [] if !list
28
+ if list.is_a?(Array)
29
+ list
30
+ else
31
+ [list]
32
+ end
33
+ end
34
+
35
+ def add_notes(note)
36
+ r = @client.make_request(:post, "#{@client.concat_account_path(PORT_IN_PATH)}/#{id}/notes", {:note => note})
37
+ note_id = Client.get_id_from_location_header(r[1][:location])
38
+ (get_notes().select {|n| n[:id].to_s == note_id }).first
39
+ end
40
+
41
+ def create_file(io, media_type = nil)
42
+ connection = @client.create_connection()
43
+ # FIXME use streams directly when Faraday will support streaming
44
+ buf = io.read()
45
+ response = connection.post("/#{@client.api_version}#{@client.concat_account_path(PORT_IN_PATH)}/#{id}/#{LOAS_PATH}") do |req|
46
+ req.headers['Content-Length'] = buf.size.to_s
47
+ req.headers['Content-Type'] = media_type || 'application/octet-stream'
48
+ req.body = buf
49
+ end
50
+ r = @client.check_response(response)
51
+ r[:filename]
52
+ end
53
+
54
+ def update_file(file_name, file, media_type)
55
+ connection = @client.create_connection()
56
+ # FIXME use streams directly when Faraday will support streaming
57
+ buf = io.read()
58
+ response = connection.put("/#{@client.api_version}#{@client.concat_account_path(PORT_IN_PATH)}/#{id}/#{LOAS_PATH}/#{URI.encode(file_name)}") do |req|
59
+ req.headers['Content-Length'] = buf.size.to_s
60
+ req.headers['Content-Type'] = media_type || 'application/octet-stream'
61
+ req.body = buf
62
+ end
63
+ @client.check_response(response)
64
+ end
65
+
66
+ def get_file_metadata(file_name)
67
+ @client.make_request(:get, "#{@client.concat_account_path(PORT_IN_PATH)}/#{id}/#{LOAS_PATH}/#{URI.encode(file_name)}/metadata")[0]
68
+ end
69
+
70
+ def get_file(file_name)
71
+ connection = @client.create_connection()
72
+ response = connection.get("/#{@client.api_version}#{@client.concat_account_path(PORT_IN_PATH)}/#{id}/#{LOAS_PATH}/#{URI.encode(file_name)}")
73
+ [response.body, response.headers['Content-Type'] || 'application/octet-stream']
74
+ end
75
+
76
+ def get_files(metadata = false)
77
+ @client.make_request(:get, "#{@client.concat_account_path(PORT_IN_PATH)}/#{id}/#{LOAS_PATH}", {:metadata => metadata})[0][:file_data]
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,24 @@
1
+ module BandwidthIris
2
+ PORT_OUT_PATH = 'portouts'
3
+
4
+ class PortOut
5
+ extend ClientWrapper
6
+ include ApiItem
7
+
8
+ def get_notes()
9
+ list = @client.make_request(:get, "#{@client.concat_account_path(PORT_OUT_PATH)}/#{id}/notes")[0][:note]
10
+ return [] if !list
11
+ if list.is_a?(Array)
12
+ list
13
+ else
14
+ [list]
15
+ end
16
+ end
17
+
18
+ def add_notes(note)
19
+ r = @client.make_request(:post, "#{@client.concat_account_path(PORT_OUT_PATH)}/#{id}/notes", {:note => note})
20
+ note_id = Client.get_id_from_location_header(r[1][:location])
21
+ (get_notes().select {|n| n[:id].to_s == note_id }).first
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,19 @@
1
+ module BandwidthIris
2
+ RATE_CENTER_PATH = 'rateCenters'
3
+
4
+ class RateCenter
5
+ extend ClientWrapper
6
+
7
+ def self.list(client)
8
+ list = client.make_request(:get, RATE_CENTER_PATH)[0][:rate_centers][:rate_center]
9
+ return [] if !list
10
+ if list.is_a?(Array)
11
+ list
12
+ else
13
+ [list]
14
+ end
15
+ end
16
+ wrap_client_arg :list
17
+
18
+ end
19
+ end
@@ -0,0 +1,47 @@
1
+ module BandwidthIris
2
+ SIPPEER_PATH = 'sippeers'
3
+
4
+ class SipPeer
5
+ extend ClientWrapper
6
+ include ApiItem
7
+
8
+ def self.list(client, site_id)
9
+ Site.new({:id => site_id}, client).get_sip_peers()
10
+ end
11
+ wrap_client_arg :list
12
+
13
+ def self.get(client, site_id, id)
14
+ Site.new({:id => site_id}, client).get_sip_peer(id)
15
+ end
16
+ wrap_client_arg :get
17
+
18
+ def self.create(client, site_id, item)
19
+ Site.new({:id => site_id}, client).create_sip_peer(item)
20
+ end
21
+ wrap_client_arg :create
22
+
23
+ def delete()
24
+ @client.make_request(:delete,"#{@client.concat_account_path(SITE_PATH)}/#{site_id}/#{SIPPEER_PATH}/#{id}")
25
+ end
26
+
27
+
28
+ def get_tns(number = nil)
29
+ r = @client.make_request(:get,"#{@client.concat_account_path(SITE_PATH)}/#{site_id}/#{SIPPEER_PATH}/#{id}/tns#{if number then '/' + URI.escape(number) else '' end}")[0]
30
+ if number
31
+ r[:sip_peer_telephone_number]
32
+ else
33
+ list = r[:sip_peer_telephone_numbers][:sip_peer_telephone_number]
34
+ return [] if !list
35
+ if list.is_a?(Array) then list else [list] end
36
+ end
37
+ end
38
+
39
+ def update_tns(number, data)
40
+ @client.make_request(:put,"#{@client.concat_account_path(SITE_PATH)}/#{site_id}/#{SIPPEER_PATH}/#{id}/tns/#{URI.escape(number)}", {:sip_peer_telephone_number => data})[0]
41
+ end
42
+
43
+ def move_tns(numbers)
44
+ @client.make_request(:post,"#{@client.concat_account_path(SITE_PATH)}/#{site_id}/#{SIPPEER_PATH}/#{id}/movetns", {:sip_peer_telephone_numbers => {:full_number => numbers}})[0]
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,83 @@
1
+ module BandwidthIris
2
+ SITE_PATH = 'sites'
3
+
4
+ class Site
5
+ extend ClientWrapper
6
+ include ApiItem
7
+
8
+ def self.list(client, query = nil)
9
+ list = client.make_request(:get, client.concat_account_path(SITE_PATH), query)[0][:sites][:site]
10
+ list = if list.is_a?(Array) then list else [list] end
11
+ list.map do |i|
12
+ Site.new(i, client)
13
+ end
14
+ end
15
+ wrap_client_arg :list
16
+
17
+ def self.get(client, id)
18
+ data = client.make_request(:get, "#{client.concat_account_path(SITE_PATH)}/#{id}")[0]
19
+ Site.new(data[:site], client)
20
+ end
21
+ wrap_client_arg :get
22
+
23
+ def self.create(client, item)
24
+ location = client.make_request(:post, client.concat_account_path(SITE_PATH), {:site => item})[1][:location]
25
+ id = Client.get_id_from_location_header(location)
26
+ self.get(client, id)
27
+ end
28
+ wrap_client_arg :create
29
+
30
+
31
+ def update(data)
32
+ @client.make_request(:put,"#{@client.concat_account_path(SITE_PATH)}/#{id}", {:site => data})
33
+ end
34
+
35
+ def delete()
36
+ @client.make_request(:delete,"#{@client.concat_account_path(SITE_PATH)}/#{id}")
37
+ end
38
+
39
+ def get_sip_peer(peer_id)
40
+ item = @client.make_request(:get, "#{@client.concat_account_path(SITE_PATH)}/#{id}/sippeers/#{peer_id}")[0][:sip_peer]
41
+ item[:id] = item[:peer_id]
42
+ item
43
+ end
44
+
45
+ def get_sip_peers()
46
+ list = @client.make_request(:get, "#{@client.concat_account_path(SITE_PATH)}/#{id}/sippeers")[0][:sip_peers][:sip_peer]
47
+ return [] if !list
48
+ list = if list.is_a?(Array) then list else [list] end
49
+ list.each {|i| i[:id] = i[:peer_id]}
50
+ list
51
+ end
52
+
53
+ def create_sip_peer(item)
54
+ location = @client.make_request(:post, "#{@client.concat_account_path(SITE_PATH)}/#{id}/sippeers", {:sip_peer => item})[1][:location]
55
+ id = Client.get_id_from_location_header(location)
56
+ get_sip_peer(id)
57
+ end
58
+
59
+ def get_portins()
60
+ list = @client.make_request(:get, "#{@client.concat_account_path(SITE_PATH)}/#{id}/portins")[0]
61
+ # TODO need additional documentaion
62
+ list
63
+ end
64
+
65
+ def get_totaltns()
66
+ list = @client.make_request(:get, "#{@client.concat_account_path(SITE_PATH)}/#{id}/totaltns")[0]
67
+ # TODO need additional documentaion
68
+ list
69
+ end
70
+
71
+ def get_orders()
72
+ list = @client.make_request(:get, "#{@client.concat_account_path(SITE_PATH)}/#{id}/orders")[0]
73
+ # TODO need additional documentaion
74
+ list
75
+ end
76
+
77
+ def get_inservice_numbers()
78
+ list = @client.make_request(:get, "#{@client.concat_account_path(SITE_PATH)}/#{id}/inserviceNumbers")[0]
79
+ # TODO need additional documentaion
80
+ list
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,42 @@
1
+ module BandwidthIris
2
+ SUBSCRIPTION_PATH = 'subscriptions'
3
+
4
+ class Subscription
5
+ extend ClientWrapper
6
+ include ApiItem
7
+
8
+ def self.list(client, query = nil)
9
+ list = client.make_request(:get, client.concat_account_path(SUBSCRIPTION_PATH), query)[0][:subscriptions][:subscription]
10
+ return [] if !list
11
+ list = if list.is_a?(Array) then list else [list] end
12
+ list.map do |i|
13
+ i[:id] = i[:subscription_id]
14
+ Subscription.new(i, client)
15
+ end
16
+ end
17
+ wrap_client_arg :list
18
+
19
+ def self.get(client, id)
20
+ data = client.make_request(:get, "#{client.concat_account_path(SUBSCRIPTION_PATH)}/#{id}")[0][:subscriptions][:subscription]
21
+ data[:id] = data[:subscription_id]
22
+ Subscription.new(data, client)
23
+ end
24
+ wrap_client_arg :get
25
+
26
+ def self.create(client, item)
27
+ location = client.make_request(:post, client.concat_account_path(SUBSCRIPTION_PATH), {:subscription => item})[1][:location]
28
+ id = Client.get_id_from_location_header(location)
29
+ self.get(client, id)
30
+ end
31
+ wrap_client_arg :create
32
+
33
+
34
+ def update(data)
35
+ @client.make_request(:put,"#{@client.concat_account_path(SUBSCRIPTION_PATH)}/#{id}", {:subscription => data})
36
+ end
37
+
38
+ def delete()
39
+ @client.make_request(:delete,"#{@client.concat_account_path(SUBSCRIPTION_PATH)}/#{id}")
40
+ end
41
+ end
42
+ end