slybroadcast 1.0.1 → 1.0.2
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/README.md +209 -1
- data/lib/slybroadcast/client.rb +4 -1
- data/lib/slybroadcast/parsers/audio_file_list_response.rb +40 -0
- data/lib/slybroadcast/version.rb +1 -1
- data/test/client.rb +41 -0
- data/test/parsers.rb +116 -0
- metadata +5 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: a3c77a059de695a7af878b28e80f5060c6d7fff7
|
|
4
|
+
data.tar.gz: d73febfd602e36ecfd3501453e76aafa12c41c8e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: af3a8ad55c236b749d858baa6fb5f4f75164c7f62164711904820b09b658cca9b0705b266757c4b9a9204c9d3fa1310f32a4bcc3f2a6f9976875a9257c2a8492
|
|
7
|
+
data.tar.gz: 41e33725cfacceebe8f69cdc1a841f09a38fd26a8ee2146571b49ed7a733c9d2b024878cbdd33179eb7795a39b1cce0d2f57caa0626d0796fbfb2dcfe5490cfd
|
data/README.md
CHANGED
|
@@ -1,2 +1,210 @@
|
|
|
1
|
-
|
|
1
|
+
slybroadcast
|
|
2
|
+
=========
|
|
3
|
+
|
|
2
4
|
A minimal Slybroadcast Ruby client implementation
|
|
5
|
+
|
|
6
|
+
Usage
|
|
7
|
+
-----------
|
|
8
|
+
|
|
9
|
+
``` ruby
|
|
10
|
+
|
|
11
|
+
require './lib/slybroadcast'
|
|
12
|
+
Slybroadcast::Client.credentials = { c_uid: 'example@email.com', c_password: 'xxx' }
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
### Verify Username and Password
|
|
17
|
+
|
|
18
|
+
To verify your slybroadcast Username and Password.
|
|
19
|
+
|
|
20
|
+
``` ruby
|
|
21
|
+
|
|
22
|
+
Slybroadcast::Client.credentials = { c_uid: 'example@email.com', c_password: 'xxx' }
|
|
23
|
+
result = Slybroadcast::Client.verify
|
|
24
|
+
|
|
25
|
+
result.success?
|
|
26
|
+
true
|
|
27
|
+
|
|
28
|
+
result.failed?
|
|
29
|
+
false
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### Send a Campaign
|
|
34
|
+
|
|
35
|
+
Campaign submission with audio file previously uploaded.
|
|
36
|
+
|
|
37
|
+
``` ruby
|
|
38
|
+
|
|
39
|
+
result = Slybroadcast::Client.campaign_call_status(
|
|
40
|
+
c_phone: "+16173999981, +16173999982, +16173999983",
|
|
41
|
+
c_record_audio: "Meetup1",
|
|
42
|
+
c_callerID: "+16173999980",
|
|
43
|
+
c_date: "now",
|
|
44
|
+
mobile_only: "1"
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
result.success?
|
|
48
|
+
true
|
|
49
|
+
|
|
50
|
+
result.session_id
|
|
51
|
+
1234567788
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
result.failed?
|
|
56
|
+
false
|
|
57
|
+
|
|
58
|
+
result.error
|
|
59
|
+
"Bad Audio, can't download"
|
|
60
|
+
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Campaign submission using a client's audio file.
|
|
64
|
+
|
|
65
|
+
``` ruby
|
|
66
|
+
|
|
67
|
+
result = Slybroadcast::Client.campaign_call_status(
|
|
68
|
+
c_phone: "+16173999981, +16173999982, +16173999983",
|
|
69
|
+
c_url: "https://user_audio_url",
|
|
70
|
+
c_callerID: "+16173999980",
|
|
71
|
+
c_date: "now",
|
|
72
|
+
mobile_only: "1",
|
|
73
|
+
c_audio: "mp3"
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
result.success?
|
|
77
|
+
true
|
|
78
|
+
|
|
79
|
+
result.session_id
|
|
80
|
+
1234567788
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
result.failed?
|
|
85
|
+
false
|
|
86
|
+
|
|
87
|
+
result.error
|
|
88
|
+
"Bad Audio, can't download"
|
|
89
|
+
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### Pause Campaign
|
|
93
|
+
|
|
94
|
+
To temporarily pause a campaign or session, but not cancel it.
|
|
95
|
+
|
|
96
|
+
``` ruby
|
|
97
|
+
|
|
98
|
+
result = Slybroadcast::Client.campaign_pause(session_id: "6045428032")
|
|
99
|
+
|
|
100
|
+
result.success?
|
|
101
|
+
true
|
|
102
|
+
|
|
103
|
+
result.session_id
|
|
104
|
+
1234567788
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
result.failed?
|
|
109
|
+
false
|
|
110
|
+
|
|
111
|
+
result.error
|
|
112
|
+
"already finished"
|
|
113
|
+
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### Resume Campaign
|
|
117
|
+
|
|
118
|
+
To resume a campaign.
|
|
119
|
+
|
|
120
|
+
``` ruby
|
|
121
|
+
|
|
122
|
+
result = Slybroadcast::Client.campaign_resume(session_id: "6045428032")
|
|
123
|
+
|
|
124
|
+
result.success?
|
|
125
|
+
true
|
|
126
|
+
|
|
127
|
+
result.session_id
|
|
128
|
+
1234567788
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
result.failed?
|
|
133
|
+
false
|
|
134
|
+
|
|
135
|
+
result.error
|
|
136
|
+
"already finished"
|
|
137
|
+
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### Cancel Campaign
|
|
141
|
+
|
|
142
|
+
To cancel a campaign.
|
|
143
|
+
|
|
144
|
+
``` ruby
|
|
145
|
+
|
|
146
|
+
result = Slybroadcast::Client.campaign_cancel(session_id: "6045428032")
|
|
147
|
+
|
|
148
|
+
result.success?
|
|
149
|
+
true
|
|
150
|
+
|
|
151
|
+
result.session_id
|
|
152
|
+
1234567788
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
result.failed?
|
|
157
|
+
false
|
|
158
|
+
|
|
159
|
+
result.error
|
|
160
|
+
"already finished"
|
|
161
|
+
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### Request Account Message Balance
|
|
165
|
+
|
|
166
|
+
To request the number of remaining messages in your account.
|
|
167
|
+
|
|
168
|
+
``` ruby
|
|
169
|
+
|
|
170
|
+
result = Slybroadcast::Client.account_message_balance
|
|
171
|
+
|
|
172
|
+
result.success?
|
|
173
|
+
true
|
|
174
|
+
|
|
175
|
+
result.remaining_messages
|
|
176
|
+
"12345"
|
|
177
|
+
|
|
178
|
+
result.pending_messages
|
|
179
|
+
"123"
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
result.failed?
|
|
184
|
+
false
|
|
185
|
+
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
### Retrieve a List of all Audio Files
|
|
189
|
+
|
|
190
|
+
To view a full list of your audio files.
|
|
191
|
+
|
|
192
|
+
``` ruby
|
|
193
|
+
|
|
194
|
+
result = Slybroadcast::Client.list_audio_files
|
|
195
|
+
|
|
196
|
+
result.success?
|
|
197
|
+
true
|
|
198
|
+
|
|
199
|
+
result.list
|
|
200
|
+
[
|
|
201
|
+
{:system_file_name=>"170425242023265.wav", :audio_file_name=>"123456", :created=>"2017-04-25 22:42:25"},
|
|
202
|
+
{:system_file_name=>"294b755.wav", :audio_file_name=>"recording20160425-31049-1mq2hk7", :created=>"2017-05-03 20:39:11"},
|
|
203
|
+
{:system_file_name=>"15213094.wav", :audio_file_name=>"Test01", :created=>"2017-05-03 20:38:16"}
|
|
204
|
+
]
|
|
205
|
+
|
|
206
|
+
|
|
207
|
+
result.failed?
|
|
208
|
+
false
|
|
209
|
+
|
|
210
|
+
```
|
data/lib/slybroadcast/client.rb
CHANGED
|
@@ -5,6 +5,8 @@ require_relative 'exceptions'
|
|
|
5
5
|
require_relative 'parsers/campaign_status_response'
|
|
6
6
|
require_relative 'parsers/campaign_actions_response'
|
|
7
7
|
require_relative 'parsers/remaining_messages_response'
|
|
8
|
+
require_relative 'parsers/download_audio_file_response'
|
|
9
|
+
require_relative 'parsers/audio_file_list_response'
|
|
8
10
|
|
|
9
11
|
# usage:
|
|
10
12
|
# Slybroadcast::Client.credentials = {
|
|
@@ -120,7 +122,8 @@ module Slybroadcast
|
|
|
120
122
|
endpoint_url,
|
|
121
123
|
params
|
|
122
124
|
)
|
|
123
|
-
res.body
|
|
125
|
+
result = Parsers::AudioFileListResponse.new(res.body)
|
|
126
|
+
result.success? ? result : handle_error(result.error)
|
|
124
127
|
end
|
|
125
128
|
|
|
126
129
|
private
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
module Parsers
|
|
2
|
+
class AudioFileListResponse
|
|
3
|
+
attr_accessor :success
|
|
4
|
+
attr_accessor :error
|
|
5
|
+
attr_accessor :list
|
|
6
|
+
|
|
7
|
+
FIELDS = [:system_file_name, :audio_file_name, :created].freeze
|
|
8
|
+
|
|
9
|
+
def initialize(body)
|
|
10
|
+
@list = []
|
|
11
|
+
response_parse(body)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def failed?
|
|
15
|
+
not success?
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def success?
|
|
19
|
+
success
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
private
|
|
23
|
+
|
|
24
|
+
def response_parse(body)
|
|
25
|
+
response = body.split("\n")
|
|
26
|
+
@success = response[0].strip != 'ERROR'
|
|
27
|
+
@error = response[1].strip unless success
|
|
28
|
+
|
|
29
|
+
@list = response.map do |line|
|
|
30
|
+
myh = Hash.new
|
|
31
|
+
fields = line.delete('\\"').split("|")
|
|
32
|
+
fields.map.with_index do |v, i|
|
|
33
|
+
myh[FIELDS[i]||:no_defined] = v
|
|
34
|
+
end
|
|
35
|
+
myh
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
end
|
|
40
|
+
end
|
data/lib/slybroadcast/version.rb
CHANGED
data/test/client.rb
CHANGED
|
@@ -178,9 +178,50 @@ describe Slybroadcast::Client do
|
|
|
178
178
|
end
|
|
179
179
|
|
|
180
180
|
describe 'download_audio_file' do
|
|
181
|
+
|
|
182
|
+
it 'should raise StandardError' do
|
|
183
|
+
|
|
184
|
+
mocked_reponse = MiniTest::Mock.new
|
|
185
|
+
mocked_reponse.expect(:body, "ERROR")
|
|
186
|
+
|
|
187
|
+
Net::HTTP.stub :post_form, mocked_reponse do
|
|
188
|
+
assert_raises StandardError do
|
|
189
|
+
Slybroadcast::Client.download_audio_file
|
|
190
|
+
end
|
|
191
|
+
end
|
|
192
|
+
|
|
193
|
+
end
|
|
194
|
+
|
|
181
195
|
end
|
|
182
196
|
|
|
183
197
|
describe 'list_audio_files' do
|
|
198
|
+
|
|
199
|
+
it 'should return a list' do
|
|
200
|
+
|
|
201
|
+
mocked_reponse = MiniTest::Mock.new
|
|
202
|
+
mocked_reponse.expect(:body, "\"r15294b17042522420232165.wav\"|\"123456\"|\"2017-04-25 22:42:25\"\n\"b15294b187575.wav\"|\"recording20160425-31049-1mq2hk7\"|\"2017-05-03 20:39:11\"")
|
|
203
|
+
|
|
204
|
+
Net::HTTP.stub :post_form, mocked_reponse do
|
|
205
|
+
result = Slybroadcast::Client.list_audio_files
|
|
206
|
+
assert_equal result.success?, true
|
|
207
|
+
assert_equal result.list.count, 2
|
|
208
|
+
end
|
|
209
|
+
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
it 'should raise Exceptions::InvalidCredentials' do
|
|
213
|
+
|
|
214
|
+
mocked_reponse = MiniTest::Mock.new
|
|
215
|
+
mocked_reponse.expect(:body, "ERROR\nc_uid: required")
|
|
216
|
+
|
|
217
|
+
Net::HTTP.stub :post_form, mocked_reponse do
|
|
218
|
+
assert_raises Slybroadcast::Exceptions::InvalidCredentials do
|
|
219
|
+
Slybroadcast::Client.list_audio_files
|
|
220
|
+
end
|
|
221
|
+
end
|
|
222
|
+
|
|
223
|
+
end
|
|
224
|
+
|
|
184
225
|
end
|
|
185
226
|
|
|
186
227
|
end
|
data/test/parsers.rb
ADDED
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
require_relative "helper"
|
|
2
|
+
|
|
3
|
+
describe Parsers do
|
|
4
|
+
|
|
5
|
+
describe 'CampaignActionsResponse' do
|
|
6
|
+
|
|
7
|
+
it 'should return session ID' do
|
|
8
|
+
|
|
9
|
+
response = "OK\nSession ID=123456"
|
|
10
|
+
result = Parsers::CampaignActionsResponse.new(response)
|
|
11
|
+
assert result.success?
|
|
12
|
+
assert_equal result.session_id, "123456"
|
|
13
|
+
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it 'should return error description' do
|
|
17
|
+
|
|
18
|
+
response = "ERROR\nc_uid: required"
|
|
19
|
+
result = Parsers::CampaignActionsResponse.new(response)
|
|
20
|
+
assert result.failed?
|
|
21
|
+
assert_equal result.error, "c_uid: required"
|
|
22
|
+
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
describe 'CampaignStatusResponse' do
|
|
28
|
+
|
|
29
|
+
it 'should return session ID' do
|
|
30
|
+
|
|
31
|
+
response = "OK\nSession ID=123456\nNumber of Phone=123"
|
|
32
|
+
result = Parsers::CampaignStatusResponse.new(response)
|
|
33
|
+
assert result.success?
|
|
34
|
+
assert_equal result.session_id, "123456"
|
|
35
|
+
assert_equal result.number_of_phone, "123"
|
|
36
|
+
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it 'should return error description' do
|
|
40
|
+
|
|
41
|
+
response = "ERROR\nc_uid: required"
|
|
42
|
+
result = Parsers::CampaignStatusResponse.new(response)
|
|
43
|
+
assert result.failed?
|
|
44
|
+
assert_equal result.error, "c_uid: required"
|
|
45
|
+
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
describe 'RemainingMessagesResponse' do
|
|
51
|
+
|
|
52
|
+
it 'should return session ID' do
|
|
53
|
+
|
|
54
|
+
response = "remaining messages=123456\npending messages=123"
|
|
55
|
+
result = Parsers::RemainingMessagesResponse.new(response)
|
|
56
|
+
assert result.success?
|
|
57
|
+
assert_equal result.remaining_messages, "123456"
|
|
58
|
+
assert_equal result.pending_messages, "123"
|
|
59
|
+
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
it 'should return error description' do
|
|
63
|
+
|
|
64
|
+
response = "ERROR\nc_uid: required"
|
|
65
|
+
result = Parsers::RemainingMessagesResponse.new(response)
|
|
66
|
+
assert result.failed?
|
|
67
|
+
assert_equal result.error, "c_uid: required"
|
|
68
|
+
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
describe 'DownloadAudioFileResponse' do
|
|
74
|
+
|
|
75
|
+
it 'should return true' do
|
|
76
|
+
|
|
77
|
+
response = "OK"
|
|
78
|
+
result = Parsers::DownloadAudioFileResponse.new(response)
|
|
79
|
+
assert result.success?
|
|
80
|
+
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
it 'should return error description' do
|
|
84
|
+
|
|
85
|
+
response = "ERROR\nc_uid: required"
|
|
86
|
+
result = Parsers::DownloadAudioFileResponse.new(response)
|
|
87
|
+
assert result.failed?
|
|
88
|
+
assert_equal result.error, "c_uid: required"
|
|
89
|
+
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
describe 'AudioFileListResponse' do
|
|
95
|
+
|
|
96
|
+
it 'should return true' do
|
|
97
|
+
|
|
98
|
+
response = "\"r15294b17042522420232165.wav\"|\"123456\"|\"2017-04-25 22:42:25\"\n\"b15294b187575.wav\"|\"recording20160425-31049-1mq2hk7\"|\"2017-05-03 20:39:11\""
|
|
99
|
+
result = Parsers::AudioFileListResponse.new(response)
|
|
100
|
+
assert result.success?
|
|
101
|
+
assert_equal 2, result.list.count
|
|
102
|
+
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
it 'should return error description' do
|
|
106
|
+
|
|
107
|
+
response = "ERROR\nc_uid: required"
|
|
108
|
+
result = Parsers::AudioFileListResponse.new(response)
|
|
109
|
+
assert result.failed?
|
|
110
|
+
assert_equal result.error, "c_uid: required"
|
|
111
|
+
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: slybroadcast
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.0.
|
|
4
|
+
version: 1.0.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Martin Aceto
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2017-05-
|
|
11
|
+
date: 2017-05-06 00:00:00.000000000 Z
|
|
12
12
|
dependencies: []
|
|
13
13
|
description: A minimal Slybroadcast Ruby client implementation
|
|
14
14
|
email:
|
|
@@ -24,6 +24,7 @@ files:
|
|
|
24
24
|
- lib/slybroadcast.rb
|
|
25
25
|
- lib/slybroadcast/client.rb
|
|
26
26
|
- lib/slybroadcast/exceptions.rb
|
|
27
|
+
- lib/slybroadcast/parsers/audio_file_list_response.rb
|
|
27
28
|
- lib/slybroadcast/parsers/campaign_actions_response.rb
|
|
28
29
|
- lib/slybroadcast/parsers/campaign_status_response.rb
|
|
29
30
|
- lib/slybroadcast/parsers/download_audio_file_response.rb
|
|
@@ -32,6 +33,7 @@ files:
|
|
|
32
33
|
- slybroadcast.gemspec
|
|
33
34
|
- test/client.rb
|
|
34
35
|
- test/helper.rb
|
|
36
|
+
- test/parsers.rb
|
|
35
37
|
homepage: https://github.com/maceto/slybroadcast.git
|
|
36
38
|
licenses:
|
|
37
39
|
- MIT
|
|
@@ -59,3 +61,4 @@ summary: Slybroadcast Ruby client
|
|
|
59
61
|
test_files:
|
|
60
62
|
- test/client.rb
|
|
61
63
|
- test/helper.rb
|
|
64
|
+
- test/parsers.rb
|