runthered_ruby 1.0.0 → 1.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.
- checksums.yaml +4 -4
- data/lib/push_api/rtr_push_api.rb +97 -0
- data/lib/runthered_ruby.rb +1 -0
- metadata +2 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1aae1d0961bc9734e056edd10441eb2b77b1e94f
|
|
4
|
+
data.tar.gz: 3643a3bf5c1710f5a499805d9aff760bc47d4a74
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b1eb73172503843a70e1b2f71f04a9442cef2f0cbef53b84634b4eab9e8f7afac8e6000a8ac248c408f5a4badec38191883549aee1e4b0685996bea897e7057c
|
|
7
|
+
data.tar.gz: 609b0d29198d53316653b1ea37f10d1a81e0155b46f3149ea83160191171e18fa3da1a3d1e1840bf7db8baf51709a5d1d0c38691f403b5d30808da689687a19f
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
require 'net/http'
|
|
2
|
+
require 'json'
|
|
3
|
+
require 'uri'
|
|
4
|
+
|
|
5
|
+
module RtrPushApi
|
|
6
|
+
|
|
7
|
+
# Represents The Push Api status and message id
|
|
8
|
+
class PushApiResponse
|
|
9
|
+
def initialize(status, msg_id, push_id)
|
|
10
|
+
@status = status
|
|
11
|
+
@msg_id = msg_id
|
|
12
|
+
@id = push_id
|
|
13
|
+
end
|
|
14
|
+
attr_reader :status, :msg_id, :id
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# Represents The Delivery receipt status and reason code
|
|
18
|
+
class DlrQueryResponse
|
|
19
|
+
def initialize(status, reason_code, push_id)
|
|
20
|
+
@status = status
|
|
21
|
+
@reason_code = reason_code
|
|
22
|
+
@id = push_id
|
|
23
|
+
end
|
|
24
|
+
attr_reader :status, :reason_code, :id
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
class PushApiException < StandardError
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
class PushApi
|
|
31
|
+
def initialize(username, password, service_key, url='https://connect.runthered.com:10443/public_api/service')
|
|
32
|
+
@url = url
|
|
33
|
+
@username = username
|
|
34
|
+
@password = password
|
|
35
|
+
@service_key = service_key
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def do_json_request(data)
|
|
39
|
+
uri = URI.parse(@url)
|
|
40
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
|
41
|
+
http.use_ssl = true if uri.scheme == 'https'
|
|
42
|
+
request = Net::HTTP::Post.new(uri.request_uri)
|
|
43
|
+
request.body = data.to_json
|
|
44
|
+
request.basic_auth @username, @password
|
|
45
|
+
response = http.request(request)
|
|
46
|
+
if response.code != '200'
|
|
47
|
+
raise PushApiException, response.body
|
|
48
|
+
else
|
|
49
|
+
data = JSON.parse response.body
|
|
50
|
+
if !data.has_key?("result")
|
|
51
|
+
error = data['error']
|
|
52
|
+
message = error['message']
|
|
53
|
+
code = error['code']
|
|
54
|
+
raise PushApiException, message
|
|
55
|
+
end
|
|
56
|
+
return data
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
return response
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
# Send a message to Run The Red
|
|
63
|
+
# @param message [String] the message to send
|
|
64
|
+
# @param to [String] the mobile number to send to
|
|
65
|
+
# @param from_number [String] the shortcode the message will come from
|
|
66
|
+
# @param push_id [Integer] the push_id sent by the client to comply with the JSON-RPC 2.0 spec
|
|
67
|
+
# @return [PushApiResponse] a response object with the status, msg_id and id as attributes
|
|
68
|
+
def push_message(message, to, from_number=nil, push_id=1)
|
|
69
|
+
json_data = {"jsonrpc" => "2.0", "method" => "sendsms", "params" => {"service_key" => @service_key, "to" => to, "body" => message}, "id" => push_id}
|
|
70
|
+
unless from_number.nil?
|
|
71
|
+
json_data["params"]["frm"] = from_number
|
|
72
|
+
end
|
|
73
|
+
data = do_json_request(json_data)
|
|
74
|
+
push_id = data['id']
|
|
75
|
+
result = data['result']
|
|
76
|
+
status = result['status']
|
|
77
|
+
msg_id = result['msg_id']
|
|
78
|
+
return PushApiResponse.new(status, msg_id, push_id)
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
# Query a delivery receipt using the message id supplied by Run The Red
|
|
82
|
+
# @param msg_id [String] the message id of the message to check the delivery status of
|
|
83
|
+
# @param push_id [Integer] the push_id sent by the client to comply with the JSON-RPC 2.0 spec
|
|
84
|
+
# @return [DlrQueryResponse] an object with the status, reason_code and id as attributes
|
|
85
|
+
def query_dlr(msg_id, push_id=1)
|
|
86
|
+
json_data = {"jsonrpc" => "2.0", "method" => "querydlr", "params" => {"service_key" => @service_key, "msg_id" => msg_id}, "id" => push_id}
|
|
87
|
+
data = do_json_request(json_data)
|
|
88
|
+
push_id = data['id']
|
|
89
|
+
result = data['result']
|
|
90
|
+
status = result['status']
|
|
91
|
+
reason_code = result['reason']
|
|
92
|
+
msg_id = result['msg_id']
|
|
93
|
+
return DlrQueryResponse.new(status, reason_code, push_id)
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
|
data/lib/runthered_ruby.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: runthered_ruby
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.0.
|
|
4
|
+
version: 1.0.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Finn Colman
|
|
@@ -59,6 +59,7 @@ extensions: []
|
|
|
59
59
|
extra_rdoc_files: []
|
|
60
60
|
files:
|
|
61
61
|
- lib/http_gateway/rtr_http_gateway.rb
|
|
62
|
+
- lib/push_api/rtr_push_api.rb
|
|
62
63
|
- lib/runthered_ruby.rb
|
|
63
64
|
homepage: http://rubygems.org/gems/rtr_http_gateway
|
|
64
65
|
licenses:
|