xoxzo-cloudruby 0.1.3 → 0.2.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 +4 -4
- data/Makefile +2 -0
- data/README.md +65 -4
- data/lib/xoxzo/cloudruby.rb +95 -0
- data/lib/xoxzo/cloudruby/version.rb +1 -1
- data/xoxzo-usage.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 20b8dbe6b4b4c792c3eb918b2283e60401b275f8
|
4
|
+
data.tar.gz: 08fdea29480d7914e54148bb89ddf75e70ca966c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 20fc3388a54f6d939ed36e81063f8e12a3ca614165faf2328e701d6743e615a8e35248cacfa6f482e4c70db70e1e5283ae9b0233859b481568d9e099d57bfed1
|
7
|
+
data.tar.gz: a2b3a224464805ceabc3ed8ffb96527e696a9d88db70b568b00853f6ead4fadd0adcbb7c7eb44dc5103de331fae3a24d8a53fba45f0b934a9b6da5725f92ad9c
|
data/Makefile
ADDED
data/README.md
CHANGED
@@ -8,7 +8,7 @@ TODO: Delete this and the text above, and describe your gem
|
|
8
8
|
|
9
9
|
Add this line to your application's Gemfile:
|
10
10
|
|
11
|
-
```
|
11
|
+
```
|
12
12
|
gem 'xoxzo-cloudruby'
|
13
13
|
```
|
14
14
|
|
@@ -22,7 +22,69 @@ Or install it yourself as:
|
|
22
22
|
|
23
23
|
## Usage
|
24
24
|
|
25
|
-
|
25
|
+
Sample Code 1
|
26
|
+
|
27
|
+
Send SMS
|
28
|
+
|
29
|
+
require 'pp'
|
30
|
+
require 'xoxzo/cloudruby'
|
31
|
+
include Xoxzo::Cloudruby
|
32
|
+
|
33
|
+
sid = ENV['XOXZO_API_SID']
|
34
|
+
token = ENV['XOXZO_API_AUTH_TOKEN']
|
35
|
+
xc = XoxzoClient.new(sid,token)
|
36
|
+
res = xc.send_sms(message: "Hello! This is Xoxzo!", recipient: "+818012345678", sender: "8108012345678")
|
37
|
+
if res.errors != nil
|
38
|
+
pp res
|
39
|
+
exit -1
|
40
|
+
end
|
41
|
+
|
42
|
+
Sample Code 2
|
43
|
+
|
44
|
+
Simple Playback
|
45
|
+
|
46
|
+
sid = ENV['XOXZO_API_SID']
|
47
|
+
token = ENV['XOXZO_API_AUTH_TOKEN']
|
48
|
+
xc = XoxzoClient.new(sid,token)
|
49
|
+
res = xc.call_simple_playback(caller:"810812345678",recipient: "+818012345678",recording_url: "http://example.com/example.mp3")
|
50
|
+
if res.errors != nil
|
51
|
+
pp res
|
52
|
+
exit -1
|
53
|
+
end
|
54
|
+
|
55
|
+
callid = res.messages[0]['callid']
|
56
|
+
pp xc.get_simple_playback_status(callid: callid)
|
57
|
+
|
58
|
+
msgid = res.messages[0]['msgid']
|
59
|
+
res = xc.get_sms_delivery_status(msgid: msgid)
|
60
|
+
pp res
|
61
|
+
|
62
|
+
Sample Code 3
|
63
|
+
|
64
|
+
Get list of available DINs.
|
65
|
+
|
66
|
+
sid = ENV['XOXZO_API_SID']
|
67
|
+
token = ENV['XOXZO_API_AUTH_TOKEN']
|
68
|
+
xc = XoxzoClient.new(sid,token)
|
69
|
+
res = xc.get_din_list()
|
70
|
+
din_uid = res.message[0]['din_uid'] # get the din unique ID for the frist one for expample
|
71
|
+
|
72
|
+
Subscribe a DIN.
|
73
|
+
|
74
|
+
res = xc.subscribe_din(din_uid: din_uid)
|
75
|
+
|
76
|
+
Set the action url.
|
77
|
+
|
78
|
+
dummy_action_url = 'http://example.com/dummy_action'
|
79
|
+
res = xc.set_action_url(din_uid: din_uid, action_url: dummy_action_url)
|
80
|
+
|
81
|
+
Get the list of subscriptions.
|
82
|
+
|
83
|
+
res = xc.get_subscription_list()
|
84
|
+
|
85
|
+
Unsubscribe the DIN.
|
86
|
+
|
87
|
+
res = xc.unsubscribe_din(din_uid: din_uid)
|
26
88
|
|
27
89
|
## Development
|
28
90
|
|
@@ -32,5 +94,4 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
|
|
32
94
|
|
33
95
|
## Contributing
|
34
96
|
|
35
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/
|
36
|
-
|
97
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/xoxzo/xoxzo-cloudruby.
|
data/lib/xoxzo/cloudruby.rb
CHANGED
@@ -6,23 +6,38 @@ require 'json'
|
|
6
6
|
module Xoxzo
|
7
7
|
module Cloudruby
|
8
8
|
|
9
|
+
# Return object class for Xoxzo Cloud API
|
9
10
|
class XoxzoRespose
|
10
11
|
def initialize(errors: nil, message: Hash.new, messages: [])
|
12
|
+
# error status, nil if no errors
|
11
13
|
@errors = errors
|
14
|
+
# return informaint in hash
|
12
15
|
@message = message
|
16
|
+
# retrun information in array
|
13
17
|
@messages = messages
|
14
18
|
end
|
15
19
|
attr_accessor :errors,:message,:messages
|
16
20
|
end
|
17
21
|
|
22
|
+
# API obejet class Xoxzo service
|
18
23
|
class XoxzoClient
|
24
|
+
# initialize xoxzo api client
|
25
|
+
# sid :: your api sid of Xoxzo account
|
26
|
+
# token :: your api token of Xoxzo account
|
27
|
+
# retrun :: XoxzoRespose
|
19
28
|
def initialize(sid,token)
|
20
29
|
@auth = {:username => sid, :password => token}
|
21
30
|
api_host = "https://api.xoxzo.com"
|
22
31
|
@xoxzo_api_sms_url = api_host + "/sms/messages/"
|
23
32
|
@xoxzo_api_voice_simple_url = api_host + "/voice/simple/playback/"
|
33
|
+
@xoxzo_api_dins_url = api_host + "/voice/dins/"
|
24
34
|
end
|
25
35
|
|
36
|
+
# send sms method
|
37
|
+
# messages :: sms text message
|
38
|
+
# recipient :: sms recipient phone numner eg. "+818012345678", remove first 0 in front of area number
|
39
|
+
# sender :: sem sender phone number. This value may not be displayed as is for some operators.
|
40
|
+
# retrun :: XoxzoRespose
|
26
41
|
def send_sms(message:, recipient:, sender:)
|
27
42
|
body = {"message" => message , "recipient" => recipient , "sender" => sender}
|
28
43
|
res = HTTParty.post(@xoxzo_api_sms_url, :basic_auth => @auth,
|
@@ -36,6 +51,9 @@ module Xoxzo
|
|
36
51
|
return xr
|
37
52
|
end
|
38
53
|
|
54
|
+
# get sms delivery status method
|
55
|
+
# msgid :: message id of in the return value of the send_sms method.
|
56
|
+
# retrun :: XoxzoRespose
|
39
57
|
def get_sms_delivery_status(msgid:)
|
40
58
|
url = @xoxzo_api_sms_url + msgid
|
41
59
|
res = HTTParty.get(url, :basic_auth => @auth)
|
@@ -47,6 +65,9 @@ module Xoxzo
|
|
47
65
|
return xr
|
48
66
|
end
|
49
67
|
|
68
|
+
# get setn sms list method
|
69
|
+
# send_data :: query string. eg. "=2016-05-18"
|
70
|
+
# retrun :: XoxzoRespose
|
50
71
|
def get_sent_sms_list(sent_date: nil)
|
51
72
|
if sent_date == nil
|
52
73
|
url = @xoxzo_api_sms_url
|
@@ -62,6 +83,11 @@ module Xoxzo
|
|
62
83
|
return xr
|
63
84
|
end
|
64
85
|
|
86
|
+
# call simple palyback method
|
87
|
+
# caller :: caller phone number displayed on the recipient hand set
|
88
|
+
# recipient :: sms recipient phone numner eg. "+818012345678", remove first 0 in front of area number
|
89
|
+
# recording_url :: URL of the mp3 file to playback. eg. "http://example.com/example.mp3"
|
90
|
+
# retrun :: XoxzoRespose
|
65
91
|
def call_simple_playback(caller:, recipient:, recording_url:)
|
66
92
|
body = {"caller" => caller , "recipient" => recipient , "recording_url" => recording_url}
|
67
93
|
res = HTTParty.post(@xoxzo_api_voice_simple_url, :basic_auth => @auth,
|
@@ -75,6 +101,9 @@ module Xoxzo
|
|
75
101
|
return xr
|
76
102
|
end
|
77
103
|
|
104
|
+
# get simple plaback status method
|
105
|
+
# callid :: call id in the return value of the call_simple_playback method
|
106
|
+
# retrun :: XoxzoRespose
|
78
107
|
def get_simple_playback_status(callid:)
|
79
108
|
url = @xoxzo_api_voice_simple_url + callid
|
80
109
|
res = HTTParty.get(url, :basic_auth => @auth)
|
@@ -86,6 +115,72 @@ module Xoxzo
|
|
86
115
|
return xr
|
87
116
|
end
|
88
117
|
|
118
|
+
def get_din_list(search_string: nil)
|
119
|
+
if search_string == nil
|
120
|
+
url = @xoxzo_api_dins_url
|
121
|
+
else
|
122
|
+
url = @xoxzo_api_dins_url + '?' + search_string
|
123
|
+
end
|
124
|
+
res = HTTParty.get(url, :basic_auth => @auth)
|
125
|
+
if res.code == 200
|
126
|
+
xr = XoxzoRespose.new(message: json_safe_parse(res.body))
|
127
|
+
else
|
128
|
+
xr = XoxzoRespose.new(errors: res.code,message: json_safe_parse(res.body))
|
129
|
+
end
|
130
|
+
return xr
|
131
|
+
end
|
132
|
+
|
133
|
+
def subscribe_din(din_uid:)
|
134
|
+
url = @xoxzo_api_dins_url + 'subscriptions/'
|
135
|
+
body = {"din_uid" => din_uid }
|
136
|
+
res = HTTParty.post(url, :basic_auth => @auth,
|
137
|
+
:body => body.to_json,
|
138
|
+
:headers => { 'Content-Type' => 'application/json', 'Accept' => 'application/json'})
|
139
|
+
if res.code == 201
|
140
|
+
xr = XoxzoRespose.new(messages: json_safe_parse(res.body))
|
141
|
+
else
|
142
|
+
xr = XoxzoRespose.new(errors: res.code,message: json_safe_parse(res.body))
|
143
|
+
end
|
144
|
+
return xr
|
145
|
+
end
|
146
|
+
|
147
|
+
def unsubscribe_din(din_uid:)
|
148
|
+
url = @xoxzo_api_dins_url + 'subscriptions/' + din_uid + '/'
|
149
|
+
res = HTTParty.delete(url, :basic_auth => @auth)
|
150
|
+
if res.code == 200
|
151
|
+
xr = XoxzoRespose.new(messages: json_safe_parse(res.body))
|
152
|
+
else
|
153
|
+
xr = XoxzoRespose.new(errors: res.code,message: json_safe_parse(res.body))
|
154
|
+
end
|
155
|
+
return xr
|
156
|
+
end
|
157
|
+
|
158
|
+
def get_subscription_list()
|
159
|
+
url = @xoxzo_api_dins_url + 'subscriptions/'
|
160
|
+
res = HTTParty.get(url, :basic_auth => @auth)
|
161
|
+
if res.code == 200
|
162
|
+
xr = XoxzoRespose.new(messages: json_safe_parse(res.body))
|
163
|
+
else
|
164
|
+
xr = XoxzoRespose.new(errors: res.code,message: json_safe_parse(res.body))
|
165
|
+
end
|
166
|
+
return xr
|
167
|
+
end
|
168
|
+
|
169
|
+
def set_action_url(din_uid:, action_url:)
|
170
|
+
url = @xoxzo_api_dins_url + 'subscriptions/' + din_uid + '/'
|
171
|
+
body = {'action_url': action_url}
|
172
|
+
res = HTTParty.post(url, :basic_auth => @auth,
|
173
|
+
:body => body.to_json,
|
174
|
+
:headers => { 'Content-Type' => 'application/json', 'Accept' => 'application/json'})
|
175
|
+
if res.code == 200
|
176
|
+
xr = XoxzoRespose.new(messages: json_safe_parse(res.body))
|
177
|
+
else
|
178
|
+
xr = XoxzoRespose.new(errors: res.code,message: json_safe_parse(res.body))
|
179
|
+
end
|
180
|
+
return xr
|
181
|
+
end
|
182
|
+
|
183
|
+
private
|
89
184
|
def json_safe_parse(s)
|
90
185
|
return JSON.parse(s)
|
91
186
|
rescue JSON::ParserError => e
|
data/xoxzo-usage.rb
CHANGED
@@ -5,7 +5,7 @@ require 'pp'
|
|
5
5
|
sid = ENV['XOXZO_API_SID']
|
6
6
|
token = ENV['XOXZO_API_AUTH_TOKEN']
|
7
7
|
xc = XoxzoClient.new(sid,token)
|
8
|
-
res = xc.send_sms(message: "Hello! This is Xoxzo!", recipient: "+
|
8
|
+
res = xc.send_sms(message: "Hello! This is Xoxzo!", recipient: "+818012345678", sender: "8108012345678")
|
9
9
|
if res.errors != nil
|
10
10
|
pp res
|
11
11
|
return
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xoxzo-cloudruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Akira Nonaka
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-07-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|
@@ -79,6 +79,7 @@ files:
|
|
79
79
|
- ".travis.yml"
|
80
80
|
- Gemfile
|
81
81
|
- LICENSE
|
82
|
+
- Makefile
|
82
83
|
- README.md
|
83
84
|
- Rakefile
|
84
85
|
- bin/console
|