runthered_ruby 1.0.0

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: 2ac272f58d08fa4bad33809573f6da3745c3d7d6
4
+ data.tar.gz: 69177fc41eb5c2d50faf1117f14865a876ba23de
5
+ SHA512:
6
+ metadata.gz: 63d8394cdb585e77f8361c093ffb98cedc998626bacc96e7e9201d18cb886b59eb57150860ad90842dce619f50e48988efd2ec50f4a5af4a7e469d2575708492
7
+ data.tar.gz: f673a734bd3af4afd174663764c6db2b0cfa5a1deac9bd67b8acf79ea3a54b506e98fac36534c0b1022907d7ef57849a29862c9b7a73c336d09507754115bb03
@@ -0,0 +1,94 @@
1
+ require 'net/http'
2
+ require 'json'
3
+ require 'uri'
4
+
5
+ module RtrHttpGateway
6
+ class HttpGatewayException < StandardError
7
+ end
8
+
9
+ # Represents The Delivery receipt status and reason code
10
+ class DlrQueryResponse
11
+ def initialize(status, reason_code, msg_id)
12
+ @status = status
13
+ @reason_code = reason_code
14
+ @msg_id = msg_id
15
+ end
16
+ attr_reader :status, :reason_code, :msg_id
17
+ end
18
+
19
+ class HttpGatewayApi
20
+ def initialize(username, password, service_key, url='https://connect.runthered.com:14004/public_api/sms/gateway/', dlr_url='https://connect.runthered.com:14004/public_api/sms/dlr/')
21
+ @url = url
22
+ @dlr_url = dlr_url
23
+ @username = username
24
+ @password= password
25
+ @service_key = service_key
26
+ end
27
+
28
+ def do_post_request(url_string, values)
29
+ uri = URI.parse(url_string)
30
+ http = Net::HTTP.new(uri.host, uri.port)
31
+ http.use_ssl = true if uri.scheme == 'https'
32
+ request = Net::HTTP::Post.new(uri.request_uri)
33
+ request.set_form_data(values)
34
+ request.basic_auth @username, @password
35
+ response = http.request(request)
36
+ return response
37
+ end
38
+
39
+ def do_get_request(url_string)
40
+ uri = URI.parse(url_string)
41
+ http = Net::HTTP.new(uri.host, uri.port)
42
+ http.use_ssl = true if uri.scheme == 'https'
43
+ request = Net::HTTP::Get.new(uri.request_uri)
44
+ request.basic_auth @username, @password
45
+ response = http.request(request)
46
+ return response
47
+ end
48
+
49
+ # Send a message to Run The Red
50
+ # @param message [String] the message to send
51
+ # @param to [String] the mobile number to send to
52
+ # @param from_number [String] the shortcode the message will come from
53
+ # @param billing_code [String] the billing code for the message, if required
54
+ # @param partner_reference [String] a client supplied reference string, if required
55
+ # @raise [HttpGatewayException] if a non 200 response is returned by Run The Red
56
+ # @return [String] the message id of the message created in Run The Red's system
57
+ def push_message(message, to, from_number=nil, billing_code=nil, partner_reference=nil)
58
+ values = {'message'=>message, 'to'=>to}
59
+ unless from_number.nil?
60
+ values["from"] = from_number
61
+ end
62
+ unless billing_code.nil?
63
+ values["billingCode"] = billing_code
64
+ end
65
+ unless partner_reference.nil?
66
+ values["partnerReference"] = partner_reference
67
+ end
68
+ response = do_post_request(@url + @service_key, values)
69
+ if response.code != '200'
70
+ raise HttpGatewayException, response.code
71
+ end
72
+ return response.body
73
+ end
74
+
75
+ # Query a delivery receipt using the message id supplied by Run The Red
76
+ # @param msg_id [String] the message id of the message to check the delivery status of
77
+ # @raise [HttpGatewayException] if a non 200 response is returned by Ru The Red
78
+ # @return [DlrQueryResponse] an object with the status, reason_code and msg_id as attributes
79
+ def query_dlr(msg_id)
80
+ values = {'id' => msg_id}
81
+ params = URI.encode_www_form(values)
82
+ response = do_get_request(@dlr_url + @service_key + '?' + params)
83
+ if response.code != '200'
84
+ raise HttpGatewayException, response.code
85
+ end
86
+ data = JSON.parse response.body
87
+ msg_id = data['id']
88
+ status = data['status']
89
+ reason_code = data['reason']
90
+ return DlrQueryResponse.new(status, reason_code, msg_id)
91
+ end
92
+ end
93
+ end
94
+
@@ -0,0 +1 @@
1
+ require 'http_gateway/rtr_http_gateway'
metadata ADDED
@@ -0,0 +1,88 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: runthered_ruby
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Finn Colman
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-09-14 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: minitest
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
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: webmock
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: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ description: Wrapper library for calling Run The Red's HTTP gateway from ruby.
56
+ email: finn.colman@runthered.com
57
+ executables: []
58
+ extensions: []
59
+ extra_rdoc_files: []
60
+ files:
61
+ - lib/http_gateway/rtr_http_gateway.rb
62
+ - lib/runthered_ruby.rb
63
+ homepage: http://rubygems.org/gems/rtr_http_gateway
64
+ licenses:
65
+ - MIT
66
+ metadata: {}
67
+ post_install_message:
68
+ rdoc_options: []
69
+ require_paths:
70
+ - lib
71
+ required_ruby_version: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ required_rubygems_version: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - '>='
79
+ - !ruby/object:Gem::Version
80
+ version: '0'
81
+ requirements: []
82
+ rubyforge_project:
83
+ rubygems_version: 2.4.8
84
+ signing_key:
85
+ specification_version: 4
86
+ summary: Run The Red HTTP Gateway library
87
+ test_files: []
88
+ has_rdoc: