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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c5d5237a871e54e136af720e5a604309b8d3c45c
4
- data.tar.gz: 4704755f03fc6022a4550ad3bbb62c373b9913a6
3
+ metadata.gz: a3c77a059de695a7af878b28e80f5060c6d7fff7
4
+ data.tar.gz: d73febfd602e36ecfd3501453e76aafa12c41c8e
5
5
  SHA512:
6
- metadata.gz: cec36c0eb8674270090483e5a19e8ad38dd27e0b19632ea8ff360257db8e808996e278f965013e98c0390de93e31291d1883758ff3736c977cd03d591e9c4881
7
- data.tar.gz: a71cc3cf1b98692ca98f5fa2b120a5b77dc4aece6e5d23bb1af87a64f02ef52261b030c0b659588f2d5fe82c36734712cc0c4bc04b915e6d341b68443f6f4639
6
+ metadata.gz: af3a8ad55c236b749d858baa6fb5f4f75164c7f62164711904820b09b658cca9b0705b266757c4b9a9204c9d3fa1310f32a4bcc3f2a6f9976875a9257c2a8492
7
+ data.tar.gz: 41e33725cfacceebe8f69cdc1a841f09a38fd26a8ee2146571b49ed7a733c9d2b024878cbdd33179eb7795a39b1cce0d2f57caa0626d0796fbfb2dcfe5490cfd
data/README.md CHANGED
@@ -1,2 +1,210 @@
1
- # slybroadcast
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
+ ```
@@ -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
@@ -1,3 +1,3 @@
1
1
  module Slybroadcast
2
- VERSION = '1.0.1'.freeze
2
+ VERSION = '1.0.2'.freeze
3
3
  end
@@ -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
@@ -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.1
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-05 00:00:00.000000000 Z
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