bulutfon_sdk 1.1.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 +7 -0
- data/.gitignore +18 -0
- data/Gemfile +4 -0
- data/LICENSE.md +21 -0
- data/README.md +279 -0
- data/Rakefile +6 -0
- data/bulutfon_sdk.gemspec +28 -0
- data/conf/cacert.pem +0 -0
- data/examples/examples.rb +216 -0
- data/examples/pdf-sample.pdf +0 -0
- data/examples/test.wav +0 -0
- data/lib/bulutfon_sdk/rest/announcement.rb +49 -0
- data/lib/bulutfon_sdk/rest/automatic_call.rb +26 -0
- data/lib/bulutfon_sdk/rest/base_request.rb +117 -0
- data/lib/bulutfon_sdk/rest/bulutfon.rb +61 -0
- data/lib/bulutfon_sdk/rest/call_record.rb +23 -0
- data/lib/bulutfon_sdk/rest/cdr.rb +22 -0
- data/lib/bulutfon_sdk/rest/did.rb +22 -0
- data/lib/bulutfon_sdk/rest/errors.rb +24 -0
- data/lib/bulutfon_sdk/rest/extension.rb +33 -0
- data/lib/bulutfon_sdk/rest/group.rb +22 -0
- data/lib/bulutfon_sdk/rest/incoming_fax.rb +27 -0
- data/lib/bulutfon_sdk/rest/message.rb +26 -0
- data/lib/bulutfon_sdk/rest/message_title.rb +18 -0
- data/lib/bulutfon_sdk/rest/outgoing_fax.rb +40 -0
- data/lib/bulutfon_sdk/util/client_config.rb +29 -0
- data/lib/bulutfon_sdk/util.rb +18 -0
- data/lib/bulutfon_sdk/version.rb +3 -0
- data/lib/bulutfon_sdk.rb +29 -0
- metadata +150 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 610b26a347f122153a6acdf77a417006c5bf37ef
|
4
|
+
data.tar.gz: 21139f64c0523051983af4060097a3db56aa15d2
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 94b485248c99027342e3ce0961f1b926630632783dddce50d27693f522458bdd0ef617d0dcf8d3a971e038bc87c081c369cfc8a3fb879b842870af93c063aa5d
|
7
|
+
data.tar.gz: ef1d317c011859c251228c1e1d7ba9e18c9686b7984ee4710bdaf5edeb6e042b568d71ade207df844f363b7f8f86c51ce2af3a2fc1d27704020b74c41d2d647e
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/LICENSE.md
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
Copyright (c) 2014-2015 Bulutfon
|
2
|
+
|
3
|
+
The MIT License (MIT)
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,279 @@
|
|
1
|
+
# Bulutfon Ruby SDK
|
2
|
+
|
3
|
+
* [API Dokümantasyonu](https://github.com/bulutfon/documents/tree/master/API)
|
4
|
+
* [Örnek Kodlar](https://github.com/bulutfon/ruby-sdk/tree/master/examples)
|
5
|
+
|
6
|
+
## Kullanım
|
7
|
+
|
8
|
+
### Kurulum
|
9
|
+
|
10
|
+
Gemfile dosyanıza şu satırı ekleyiniz
|
11
|
+
|
12
|
+
``` ruby
|
13
|
+
gem 'bulutfon_sdk'
|
14
|
+
```
|
15
|
+
|
16
|
+
Bu satırı ekledikten sonra,
|
17
|
+
|
18
|
+
``` bash
|
19
|
+
bundle install
|
20
|
+
```
|
21
|
+
komutunu koşarak gerekli paketleri yükledikten sonra BulutfonSDK'yı kullanmaya başlayabilirsiniz.
|
22
|
+
|
23
|
+
### Master Token ile
|
24
|
+
|
25
|
+
```ruby
|
26
|
+
require 'bulutfon_sdk'
|
27
|
+
|
28
|
+
token = 'your_token'
|
29
|
+
bulutfon = BulutfonSDK::REST::Bulutfon.new(token)
|
30
|
+
```
|
31
|
+
|
32
|
+
## İşlevler
|
33
|
+
|
34
|
+
### Kullanıcı bilgilerine erişme
|
35
|
+
|
36
|
+
SDK ile Kullanıcı bilgileriniz, panel bilgileriniz ve kalan kredinize erişebilirsiniz.
|
37
|
+
Bunun için
|
38
|
+
|
39
|
+
``` ruby
|
40
|
+
puts bulutfon.details
|
41
|
+
```
|
42
|
+
|
43
|
+
methodunu kullanabilirsiniz.
|
44
|
+
|
45
|
+
### Telefon numaraları ve telefon numara detaylarına erişme
|
46
|
+
|
47
|
+
Bunun için;
|
48
|
+
|
49
|
+
```ruby
|
50
|
+
# Santral listesine erişir
|
51
|
+
puts bulutfon.dids.all
|
52
|
+
# Id'si verilen santral detayını döndürür
|
53
|
+
puts bulutfon.dids.get(1)
|
54
|
+
```
|
55
|
+
|
56
|
+
methodlarını kullanabilirsiniz.
|
57
|
+
|
58
|
+
### Dahililere ve dahili detaylarına erişme, dahili oluşturma, güncelleme ve silme
|
59
|
+
|
60
|
+
Bunun için;
|
61
|
+
|
62
|
+
```ruby
|
63
|
+
# Dahili listesine erişir
|
64
|
+
puts bulutfon.extensions.all
|
65
|
+
# Id'si verilen dahili detayını döndürür
|
66
|
+
puts bulutfon.extensions.get(1)
|
67
|
+
# Verilen parametrelere göre yeni dahili oluşturur.
|
68
|
+
params = {
|
69
|
+
full_name: 'Deneme',
|
70
|
+
email: 'deneme@deneme.com',
|
71
|
+
did: '905xxxxxxxxx',
|
72
|
+
number: 9999,
|
73
|
+
redirection_type: 'NONE',
|
74
|
+
destination_type: 'EXTENSION',
|
75
|
+
destination_number: '905xxxxxxxxx',
|
76
|
+
'acl[]' => [ 'domestic', 'gsm', 'international']
|
77
|
+
}
|
78
|
+
puts bulutfon.extensions.create(params)
|
79
|
+
# Verilen parametrelere göre dahiliyi günceller
|
80
|
+
params = {
|
81
|
+
full_name: 'Deneme Deneme',
|
82
|
+
'acl[]' => [ 'domestic', 'gsm']
|
83
|
+
}
|
84
|
+
puts bulutfon.extensions.update(1, params)
|
85
|
+
# Dahiliyi siler
|
86
|
+
puts bulutfon.extensions.delete(1)
|
87
|
+
```
|
88
|
+
|
89
|
+
methodlarını kullanabilirsiniz.
|
90
|
+
|
91
|
+
### Gruplara ve grup detaylarına erişme
|
92
|
+
|
93
|
+
Bunun için;
|
94
|
+
|
95
|
+
```ruby
|
96
|
+
# Grup listesine erişir
|
97
|
+
puts bulutfon.groups.all
|
98
|
+
# Id'si verilen grup detayını döndürür
|
99
|
+
puts bulutfon.groups.get(1)
|
100
|
+
```
|
101
|
+
|
102
|
+
methodlarını kullanabilirsiniz.
|
103
|
+
|
104
|
+
### Arama kayıtlarına ve arama detaylarına erişme ve ses kayıtlarını indirme
|
105
|
+
|
106
|
+
Bunun için;
|
107
|
+
|
108
|
+
```ruby
|
109
|
+
# Cdr listesine erişir
|
110
|
+
puts bulutfon.cdrs.all
|
111
|
+
# Cdr listesine sayfalama yaparak erişir
|
112
|
+
puts bulutfon.cdrs.all({page: 1, limit: 3})
|
113
|
+
# Uuid'si verilen cdr detayını döndürür
|
114
|
+
puts bulutfon.cdrs.get('uuid')
|
115
|
+
# Uuid'si verilen arama kaydinin detaylarini getir
|
116
|
+
puts bulutfon.call_records.get('uuid')
|
117
|
+
# Uuid'si verilen ses kaydını indir
|
118
|
+
save_path = "#{File.expand_path(File.dirname(__FILE__))}/save_uuid.ogg"
|
119
|
+
puts bulutfon.call_records.save('uuid', save_path)
|
120
|
+
```
|
121
|
+
|
122
|
+
methodlarını kullanabilirsiniz.
|
123
|
+
|
124
|
+
### Gelen fakslara erişme ve faks dosyasını indirme
|
125
|
+
|
126
|
+
Bunun için;
|
127
|
+
|
128
|
+
```ruby
|
129
|
+
# Gelen faksları listeler
|
130
|
+
puts bulutfon.incoming_faxes.all
|
131
|
+
# Uuid'si verilen gelen faksın detayları
|
132
|
+
puts bulutfon.incoming_faxes.get('uuid')
|
133
|
+
# Uuid'si verilen gelen faksı indir
|
134
|
+
save_path = "#{File.expand_path(File.dirname(__FILE__))}/save_uuid.tiff"
|
135
|
+
puts bulutfon.incoming_faxes.save('uuid', save_path)
|
136
|
+
```
|
137
|
+
|
138
|
+
methodlarını kullanabilirsiniz.
|
139
|
+
|
140
|
+
### Giden fakslara erişme ve faks gönderme
|
141
|
+
|
142
|
+
Bunun için;
|
143
|
+
|
144
|
+
```ruby
|
145
|
+
# Giden faksları listeler
|
146
|
+
puts bulutfon.outgoing_faxes.all
|
147
|
+
# Id'si verilen giden faks detayları
|
148
|
+
puts bulutfon.outgoing_faxes.get(1)
|
149
|
+
# Faks gönderme işlemi
|
150
|
+
file = "#{File.expand_path(File.dirname(__FILE__))}/pdf-sample.pdf"
|
151
|
+
params = {
|
152
|
+
title: 'Deneme',
|
153
|
+
receivers: '905xxxxxxxxx',
|
154
|
+
did: '905xxxxxxxxx',
|
155
|
+
attachment: file
|
156
|
+
}
|
157
|
+
puts bulutfon.outgoing_faxes.create(params)
|
158
|
+
```
|
159
|
+
|
160
|
+
methodlarını kullanabilirsiniz.
|
161
|
+
|
162
|
+
### Ses Dosyalarını listeleme ve indirme, oluşturma ve silme
|
163
|
+
|
164
|
+
Bunun için;
|
165
|
+
|
166
|
+
```ruby
|
167
|
+
# Ses Dosyalarını listeler
|
168
|
+
puts bulutfon.announcements.all
|
169
|
+
# Id'si verilen ses dosyasının detayları
|
170
|
+
puts bulutfon.announcements.get(1)
|
171
|
+
# Ses dosyası oluşturma
|
172
|
+
file = "#{File.expand_path(File.dirname(__FILE__))}/test.wav"
|
173
|
+
params = {
|
174
|
+
name: 'Deneme',
|
175
|
+
announcement: file
|
176
|
+
}
|
177
|
+
puts bulutfon.announcements.create(params)
|
178
|
+
# Id'si verilen ses dosyasını indirme işlemi
|
179
|
+
save_path = "#{File.expand_path(File.dirname(__FILE__))}/save_test.wav"
|
180
|
+
puts bulutfon.announcements.save(1, save_path)
|
181
|
+
# Id'si verilen ses dosyasını silme
|
182
|
+
puts bulutfon.announcements.delete(1)
|
183
|
+
```
|
184
|
+
|
185
|
+
methodlarını kullanabilirsiniz.
|
186
|
+
|
187
|
+
### Otomatik Aramaları listeleme ve oluşturma
|
188
|
+
|
189
|
+
Bunun için;
|
190
|
+
|
191
|
+
```ruby
|
192
|
+
puts bulutfon.automatic_calls.all # Otomatik aramaları listeler
|
193
|
+
puts bulutfon.automatic_calls.get(1) # Id'si verien otomatik arama detaylarını görüntüler
|
194
|
+
# Automatic call oluşturur ve oluşturmadan sonra receivers numaraları aranır
|
195
|
+
params = {
|
196
|
+
title: 'Automatic call after creation',
|
197
|
+
receivers: '905xxxxxxxxx',
|
198
|
+
did: '905xxxxxxxxx',
|
199
|
+
announcement_id: 1
|
200
|
+
}
|
201
|
+
puts bulutfon.automatic_calls.create(params)
|
202
|
+
# Zaman planlı automatic call oluşturulur ve oluşturmadan sonra receivers numaraları
|
203
|
+
# perşembe günü saat 10:15 ile 12:00 arasında aranır
|
204
|
+
params = {
|
205
|
+
title: 'Time planned call',
|
206
|
+
receivers: '905xxxxxxxxx',
|
207
|
+
did: '905xxxxxxxxx',
|
208
|
+
announcement_id: 1,
|
209
|
+
mon_active: false,
|
210
|
+
tue_active: false,
|
211
|
+
wed_active: false,
|
212
|
+
thu_active: true,
|
213
|
+
thu_start: '10:15',
|
214
|
+
thu_finish: '12:00',
|
215
|
+
fri_active: false,
|
216
|
+
sat_active: false,
|
217
|
+
sun_active: false,
|
218
|
+
hours_active: true
|
219
|
+
}
|
220
|
+
puts bulutfon.automatic_calls.create(params)
|
221
|
+
```
|
222
|
+
|
223
|
+
methodlarını kullanabilirsiniz.
|
224
|
+
|
225
|
+
### Sms Başlıklarını Listeleme
|
226
|
+
|
227
|
+
Bunun için;
|
228
|
+
|
229
|
+
```ruby
|
230
|
+
# Panelden oluşturduğunuz sms başlıklarını listeler
|
231
|
+
puts bulutfon.message_titles.all
|
232
|
+
```
|
233
|
+
|
234
|
+
methodlarını kullanabilirsiniz.
|
235
|
+
|
236
|
+
### Mesajları Listeleme ve Mesaj Gönderme
|
237
|
+
|
238
|
+
Bunun için;
|
239
|
+
|
240
|
+
```ruby
|
241
|
+
# Gönderilen mesajları listeler
|
242
|
+
puts bulutfon.messages.all
|
243
|
+
# Gönderilen mesajları sayfalama yaparak listeler
|
244
|
+
puts bulutfon.messages.all({page: 1, limit: 3 })
|
245
|
+
# Id'si verilen mesaj detaylarını döndürür
|
246
|
+
puts bulutfon.messages.get(1)
|
247
|
+
# Yeni mesaj gönderme işlemi
|
248
|
+
params = {
|
249
|
+
title: 'CONFIRMED_MESSAGE_TITLE',
|
250
|
+
content: 'Test Message',
|
251
|
+
receivers: '905xxxxxxxxx'
|
252
|
+
}
|
253
|
+
puts bulutfon.messages.create(params)
|
254
|
+
# Çoklu alıcılı mesaj gönderme işlemi
|
255
|
+
params_multiple = {
|
256
|
+
title: 'CONFIRMED_MESSAGE_TITLE',
|
257
|
+
content: 'Multiple Message',
|
258
|
+
receivers: '905xxxxxxxxx,905xxxxxxxxx'
|
259
|
+
}
|
260
|
+
puts bulutfon.messages.create(params_multiple)
|
261
|
+
# Zaman planlı mesaj gönderme işlemi
|
262
|
+
params = {
|
263
|
+
title: 'CONFIRMED_MESSAGE_TITLE',
|
264
|
+
content: 'Planned message example',
|
265
|
+
receivers: '905xxxxxxxxx',
|
266
|
+
is_future_sms: true,
|
267
|
+
send_date: '16/12/2015 10:00'
|
268
|
+
}
|
269
|
+
puts bulutfon.messages.create(params)
|
270
|
+
```
|
271
|
+
|
272
|
+
methodlarını kullanabilirsiniz.
|
273
|
+
|
274
|
+
Örnek kullanımları görmek için ve erişebileceğiniz değişkenler için [örnek kodlarımızı](https://github.com/bulutfon/ruby-sdk/tree/master/examples) inceleyebilirsiniz.
|
275
|
+
|
276
|
+
##Credits
|
277
|
+
* ruby_sdk is maintained by [Lab2023](http://lab2023.com/) & [Bulutfon](https://www.bulutfon.com/)
|
278
|
+
* Thank you to all the contributors!
|
279
|
+
* The names and logos for Bulutfon are trademarks of Bulutfon
|
data/Rakefile
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'bulutfon_sdk/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = 'bulutfon_sdk'
|
8
|
+
spec.version = BulutfonSDK::VERSION
|
9
|
+
spec.authors = ['Ismail Akbudak']
|
10
|
+
spec.email = ['ismail.akbudak@lab2023.com']
|
11
|
+
|
12
|
+
spec.summary = %q{Bulutfon Ruby SDK.}
|
13
|
+
spec.description = %q{Bulutfon API SDK for ruby & ruby on rails.}
|
14
|
+
spec.homepage = 'https://github.com/bulutfon/ruby-sdk'
|
15
|
+
spec.extra_rdoc_files = ['README.md', 'LICENSE.md']
|
16
|
+
spec.license = 'MIT'
|
17
|
+
|
18
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
19
|
+
spec.bindir = 'exe'
|
20
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
21
|
+
spec.require_paths = ['lib']
|
22
|
+
|
23
|
+
spec.add_runtime_dependency 'multi_json', '~> 1.11', '>= 1.11.0'
|
24
|
+
spec.add_dependency('mime-types', '~> 3.0')
|
25
|
+
spec.add_development_dependency 'bundler', '~> 1.10'
|
26
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
27
|
+
spec.add_development_dependency 'rspec', '~> 0'
|
28
|
+
end
|
data/conf/cacert.pem
ADDED
File without changes
|
@@ -0,0 +1,216 @@
|
|
1
|
+
require 'bulutfon_sdk'
|
2
|
+
|
3
|
+
token = 'your_token'
|
4
|
+
|
5
|
+
# Account
|
6
|
+
# -------------------------------------------------------------
|
7
|
+
bulutfon = BulutfonSDK::REST::Bulutfon.new(token)
|
8
|
+
# Get account details
|
9
|
+
puts bulutfon.details
|
10
|
+
# BulutfonSDK::REST::Message object
|
11
|
+
puts bulutfon.messages
|
12
|
+
# BulutfonSDK::REST::MessageTitle object
|
13
|
+
puts bulutfon.message_titles
|
14
|
+
# BulutfonSDK::REST::Did object
|
15
|
+
puts bulutfon.dids
|
16
|
+
# BulutfonSDK::REST::Extension object
|
17
|
+
puts bulutfon.extensions
|
18
|
+
# BulutfonSDK::REST::Group object
|
19
|
+
puts bulutfon.groups
|
20
|
+
# BulutfonSDK::REST::Cdr object
|
21
|
+
puts bulutfon.cdrs
|
22
|
+
# BulutfonSDK::REST::CallRecord object
|
23
|
+
puts bulutfon.call_records
|
24
|
+
# BulutfonSDK::REST::IncomingFax object
|
25
|
+
puts bulutfon.incoming_faxes
|
26
|
+
# BulutfonSDK::REST::OutgoingFax object
|
27
|
+
puts bulutfon.outgoing_faxes
|
28
|
+
# BulutfonSDK::REST::Announcement object
|
29
|
+
puts bulutfon.announcements
|
30
|
+
# BulutfonSDK::REST::AutomaticCall object
|
31
|
+
puts bulutfon.automatic_calls
|
32
|
+
|
33
|
+
# Dids
|
34
|
+
# -------------------------------------------------------------
|
35
|
+
did = BulutfonSDK::REST::Did.new(token)
|
36
|
+
# Get dids
|
37
|
+
puts did.all
|
38
|
+
# Get did with id
|
39
|
+
puts did.get(1)
|
40
|
+
|
41
|
+
# Extensions
|
42
|
+
# -------------------------------------------------------------
|
43
|
+
extension = BulutfonSDK::REST::Extension.new(token)
|
44
|
+
# Get extensions
|
45
|
+
puts extension.all
|
46
|
+
# Get extension with id
|
47
|
+
puts extension.get(1)
|
48
|
+
# Create extension
|
49
|
+
params = {
|
50
|
+
full_name: 'Deneme',
|
51
|
+
email: 'deneme@deneme.com',
|
52
|
+
did: '905xxxxxxxxx',
|
53
|
+
number: 9999,
|
54
|
+
redirection_type: 'NONE',
|
55
|
+
destination_type: 'EXTENSION',
|
56
|
+
destination_number: '905xxxxxxxxx',
|
57
|
+
'acl[]' => [ 'domestic', 'gsm', 'international']
|
58
|
+
}
|
59
|
+
puts extension.create(params)
|
60
|
+
# Update extension
|
61
|
+
params = {
|
62
|
+
full_name: 'Deneme Deneme',
|
63
|
+
'acl[]' => [ 'domestic', 'gsm']
|
64
|
+
}
|
65
|
+
puts extension.update(1, params)
|
66
|
+
# Delete extension
|
67
|
+
puts extension.delete(1)
|
68
|
+
|
69
|
+
# Groups
|
70
|
+
# -------------------------------------------------------------
|
71
|
+
group = BulutfonSDK::REST::Group.new(token)
|
72
|
+
# Get groups
|
73
|
+
puts group.all
|
74
|
+
# Get group with id
|
75
|
+
puts group.get(1)
|
76
|
+
|
77
|
+
# Cdrs
|
78
|
+
# -------------------------------------------------------------
|
79
|
+
cdr = BulutfonSDK::REST::Cdr.new(token)
|
80
|
+
# Get cdrs
|
81
|
+
puts cdr.all
|
82
|
+
# Get cdrs with pagination
|
83
|
+
puts cdr.all({page: 1, limit: 1})
|
84
|
+
# Get cdr with uuid
|
85
|
+
puts cdr.get('uuid')
|
86
|
+
|
87
|
+
# Call Records
|
88
|
+
# -------------------------------------------------------------
|
89
|
+
call_record = BulutfonSDK::REST::CallRecord.new(token)
|
90
|
+
# Get call_record detail with uuid
|
91
|
+
puts call_record.get('uuid')
|
92
|
+
# Save call record to save_path with uuid
|
93
|
+
save_path = "#{File.expand_path(File.dirname(__FILE__))}/save_uuid.ogg"
|
94
|
+
puts call_record.save('uuid', save_path)
|
95
|
+
|
96
|
+
# Incoming Faxes
|
97
|
+
# -------------------------------------------------------------
|
98
|
+
incoming_fax = BulutfonSDK::REST::IncomingFax.new(token)
|
99
|
+
# Get incoming faxes
|
100
|
+
puts incoming_fax.all
|
101
|
+
# Get incoming fax with uuid
|
102
|
+
puts incoming_fax.get('uuid')
|
103
|
+
# Save incoming fax to save_path with uuid
|
104
|
+
save_path = "#{File.expand_path(File.dirname(__FILE__))}/save_uuid.tiff"
|
105
|
+
puts incoming_fax.save('uuid', save_path)
|
106
|
+
|
107
|
+
# Outgoing Faxes
|
108
|
+
# -------------------------------------------------------------
|
109
|
+
outgoing_fax = BulutfonSDK::REST::OutgoingFax.new(token)
|
110
|
+
# Get outgoing faxes
|
111
|
+
puts outgoing_fax.all
|
112
|
+
# Get outgoing fax with id
|
113
|
+
puts outgoing_fax.get(1)
|
114
|
+
# Create outgoing faxes
|
115
|
+
file = "#{File.expand_path(File.dirname(__FILE__))}/pdf-sample.pdf"
|
116
|
+
params = {
|
117
|
+
title: 'Deneme',
|
118
|
+
receivers: '905xxxxxxxxx',
|
119
|
+
did: '905xxxxxxxxx',
|
120
|
+
attachment: file
|
121
|
+
}
|
122
|
+
puts outgoing_fax.create(params)
|
123
|
+
|
124
|
+
# Announcements
|
125
|
+
# -------------------------------------------------------------
|
126
|
+
announcement = BulutfonSDK::REST::Announcement.new(token)
|
127
|
+
# Get announcements
|
128
|
+
puts announcement.all
|
129
|
+
# Get announcement with id
|
130
|
+
puts announcement.get(1)
|
131
|
+
# Create announcement
|
132
|
+
file = "#{File.expand_path(File.dirname(__FILE__))}/test.wav"
|
133
|
+
params = {
|
134
|
+
name: 'Deneme',
|
135
|
+
announcement: file
|
136
|
+
}
|
137
|
+
puts announcement.create(params)
|
138
|
+
# Save announcement file to save_path with id
|
139
|
+
save_path = "#{File.expand_path(File.dirname(__FILE__))}/save_test.wav"
|
140
|
+
puts announcement.save(1, save_path)
|
141
|
+
# Delete announcement with id
|
142
|
+
puts announcement.delete(1)
|
143
|
+
|
144
|
+
# Automatic Calls
|
145
|
+
# -------------------------------------------------------------
|
146
|
+
automatic_call = BulutfonSDK::REST::AutomaticCall.new(token)
|
147
|
+
# Get automatic calls
|
148
|
+
puts automatic_call.all
|
149
|
+
# Get automatic call with id
|
150
|
+
puts automatic_call.get(1)
|
151
|
+
# Create automatic call, after creation receivers will call
|
152
|
+
params = {
|
153
|
+
title: 'Automatic call after creation',
|
154
|
+
receivers: '905xxxxxxxxx',
|
155
|
+
did: '905xxxxxxxxx',
|
156
|
+
announcement_id: 1
|
157
|
+
}
|
158
|
+
puts automatic_call.create(params)
|
159
|
+
# Create time planned automatic call, in this params receivers will be calling on thursday between 10:15, 12:00
|
160
|
+
params = {
|
161
|
+
title: 'Time planned call',
|
162
|
+
receivers: '905xxxxxxxxx',
|
163
|
+
did: '905xxxxxxxxx',
|
164
|
+
announcement_id: 1,
|
165
|
+
mon_active: false,
|
166
|
+
tue_active: false,
|
167
|
+
wed_active: false,
|
168
|
+
thu_active: true,
|
169
|
+
thu_start: '10:15',
|
170
|
+
thu_finish: '12:00',
|
171
|
+
fri_active: false,
|
172
|
+
sat_active: false,
|
173
|
+
sun_active: false,
|
174
|
+
hours_active: true
|
175
|
+
}
|
176
|
+
puts automatic_call.create(params)
|
177
|
+
|
178
|
+
# Message Titles
|
179
|
+
# -------------------------------------------------------------
|
180
|
+
message_title = BulutfonSDK::REST::MessageTitle.new(token)
|
181
|
+
# Get message titles
|
182
|
+
puts message_title.all
|
183
|
+
|
184
|
+
# Messages
|
185
|
+
# -------------------------------------------------------------
|
186
|
+
message = BulutfonSDK::REST::Message.new(token)
|
187
|
+
# Get messages
|
188
|
+
puts message.all
|
189
|
+
# Get messages with pagination
|
190
|
+
puts message.all({page: 1, limit: 3 })
|
191
|
+
# Get message with id
|
192
|
+
puts message.get(1)
|
193
|
+
# Create message
|
194
|
+
params = {
|
195
|
+
title: 'CONFIRMED_MESSAGE_TITLE',
|
196
|
+
content: 'Test Message',
|
197
|
+
receivers: '905xxxxxxxxx'
|
198
|
+
}
|
199
|
+
puts message.create(params)
|
200
|
+
# Create message for multiple receiver
|
201
|
+
params_multiple = {
|
202
|
+
title: 'CONFIRMED_MESSAGE_TITLE',
|
203
|
+
content: 'Multiple Message',
|
204
|
+
receivers: '905xxxxxxxxx,905xxxxxxxxx'
|
205
|
+
}
|
206
|
+
puts message.create(params_multiple)
|
207
|
+
# Create time planned message
|
208
|
+
params = {
|
209
|
+
title: 'CONFIRMED_MESSAGE_TITLE',
|
210
|
+
content: 'Planned message example',
|
211
|
+
receivers: '905xxxxxxxxx',
|
212
|
+
is_future_sms: true,
|
213
|
+
send_date: '16/12/2015 10:00'
|
214
|
+
}
|
215
|
+
puts message.create(params)
|
216
|
+
|
Binary file
|
data/examples/test.wav
ADDED
Binary file
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'bulutfon_sdk/rest/base_request'
|
2
|
+
|
3
|
+
module BulutfonSDK
|
4
|
+
module REST
|
5
|
+
class Announcement < BaseRequest
|
6
|
+
|
7
|
+
include BulutfonSDK::Util
|
8
|
+
|
9
|
+
def initialize(*args)
|
10
|
+
super(*args)
|
11
|
+
@resource = 'announcements'
|
12
|
+
end
|
13
|
+
|
14
|
+
def all( params = {} )
|
15
|
+
prepare_request( 'get', @resource,params)
|
16
|
+
end
|
17
|
+
|
18
|
+
def get( id )
|
19
|
+
uri = prepare_uri("#{@resource}/#{id}")
|
20
|
+
{ download_path: uri.to_s }
|
21
|
+
end
|
22
|
+
|
23
|
+
def save( id, save_path)
|
24
|
+
save_file( 'get', "#{@resource}/#{id}", save_path)
|
25
|
+
end
|
26
|
+
|
27
|
+
def create(params)
|
28
|
+
prepare_atachment(params)
|
29
|
+
prepare_request( 'post', @resource, params)
|
30
|
+
end
|
31
|
+
|
32
|
+
def delete(id)
|
33
|
+
prepare_request( 'delete', "#{@resource}/#{id}")
|
34
|
+
end
|
35
|
+
|
36
|
+
private
|
37
|
+
|
38
|
+
def prepare_atachment(params)
|
39
|
+
file = params[:announcement]
|
40
|
+
basename = File.basename file
|
41
|
+
type = file_content_type file
|
42
|
+
content = File.read(file)
|
43
|
+
base_64_data = Base64.strict_encode64(content)
|
44
|
+
params[:announcement] = "data:#{type};name:#{basename};base64:#{base_64_data}"
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'bulutfon_sdk/rest/base_request'
|
2
|
+
|
3
|
+
module BulutfonSDK
|
4
|
+
module REST
|
5
|
+
class AutomaticCall < BaseRequest
|
6
|
+
|
7
|
+
def initialize(*args)
|
8
|
+
super(*args)
|
9
|
+
@resource = 'automatic-calls'
|
10
|
+
end
|
11
|
+
|
12
|
+
def all( params = {} )
|
13
|
+
prepare_request( 'get', @resource, params)
|
14
|
+
end
|
15
|
+
|
16
|
+
def get( id )
|
17
|
+
prepare_request( 'get', "#{@resource}/#{id}")
|
18
|
+
end
|
19
|
+
|
20
|
+
def create(params)
|
21
|
+
prepare_request( 'post', @resource, params)
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,117 @@
|
|
1
|
+
module BulutfonSDK
|
2
|
+
module REST
|
3
|
+
class BaseRequest
|
4
|
+
|
5
|
+
HTTP_HEADERS = {
|
6
|
+
'Accept' => 'application/json',
|
7
|
+
'Accept-Charset' => 'utf-8',
|
8
|
+
'User-Agent' => "bulutfon_sdk/#{BulutfonSDK::VERSION}" " (#{RUBY_ENGINE}/#{RUBY_PLATFORM}" " #{RUBY_VERSION}-p#{RUBY_PATCHLEVEL})"
|
9
|
+
}
|
10
|
+
|
11
|
+
def initialize(*args)
|
12
|
+
options = args.last.is_a?(Hash) ? args.pop : {}
|
13
|
+
@config = BulutfonSDK::Util::ClientConfig.new options
|
14
|
+
@token = args[0] || nil
|
15
|
+
raise ArgumentError, 'Auth token is required' if @token.nil?
|
16
|
+
set_up_connection
|
17
|
+
end
|
18
|
+
|
19
|
+
protected
|
20
|
+
|
21
|
+
##
|
22
|
+
# Prepare URI object for file path
|
23
|
+
def prepare_uri(path, params = {})
|
24
|
+
request_path = "#{@config.host}/#{path}"
|
25
|
+
uri = URI.parse(request_path)
|
26
|
+
params[:access_token] = @token
|
27
|
+
uri.query = URI.encode_www_form(params)
|
28
|
+
uri
|
29
|
+
end
|
30
|
+
|
31
|
+
##
|
32
|
+
# Prepare http request
|
33
|
+
def prepare_request(method, path, params = {})
|
34
|
+
request_path = "#{@config.host}/#{path}"
|
35
|
+
uri = URI.parse(request_path)
|
36
|
+
params[:access_token] = @token
|
37
|
+
uri.query = URI.encode_www_form(params) if ['get', 'delete'].include?(method)
|
38
|
+
method_class = Net::HTTP.const_get method.to_s.capitalize
|
39
|
+
request = method_class.new(uri.to_s, HTTP_HEADERS)
|
40
|
+
request.form_data = params if ['post', 'put'].include?(method)
|
41
|
+
connect_and_send(request)
|
42
|
+
end
|
43
|
+
|
44
|
+
##
|
45
|
+
# Prepare http request for file saving
|
46
|
+
def save_file(method, path, save_path)
|
47
|
+
uri = prepare_uri(path)
|
48
|
+
method_class = Net::HTTP.const_get method.to_s.capitalize
|
49
|
+
request = method_class.new(uri.to_s, HTTP_HEADERS)
|
50
|
+
response = connect_and_send(request, is_file: true )
|
51
|
+
begin
|
52
|
+
file = File.open(save_path, 'w')
|
53
|
+
file.write(response)
|
54
|
+
rescue => error
|
55
|
+
raise BulutfonSDK::REST::SDKError.new error
|
56
|
+
ensure
|
57
|
+
file.close unless file.nil?
|
58
|
+
end
|
59
|
+
{ file: file, save_path: save_path }
|
60
|
+
end
|
61
|
+
|
62
|
+
##
|
63
|
+
# Set up and cache a Net::HTTP object to use when making requests.
|
64
|
+
def set_up_connection # :doc:
|
65
|
+
uri = URI.parse(@config.host)
|
66
|
+
@http = Net::HTTP.new(uri.host, uri.port, p_user = @config.proxy_user, p_pass = @config.proxy_pass)
|
67
|
+
@http.use_ssl = true
|
68
|
+
@http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
69
|
+
@http.use_ssl = @config.use_ssl
|
70
|
+
if @config.ssl_verify_peer
|
71
|
+
@http.verify_mode = OpenSSL::SSL::VERIFY_PEER
|
72
|
+
@http.ca_file = @config.ssl_ca_file
|
73
|
+
else
|
74
|
+
@http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
75
|
+
end
|
76
|
+
@http.open_timeout = @config.timeout
|
77
|
+
@http.read_timeout = @config.timeout
|
78
|
+
end
|
79
|
+
|
80
|
+
##
|
81
|
+
# Send an HTTP request using the cached <tt>@http</tt> object and
|
82
|
+
# return the JSON response body parsed into a hash. Also save the raw
|
83
|
+
# Net::HTTP::Request and Net::HTTP::Response objects as
|
84
|
+
# <tt>@last_request</tt> and <tt>@last_response</tt> to allow for
|
85
|
+
# inspection later.
|
86
|
+
def connect_and_send(request, is_file = false ) # :doc:
|
87
|
+
@last_request = request
|
88
|
+
retries_left = @config.retry_limit
|
89
|
+
begin
|
90
|
+
response = @http.request request
|
91
|
+
@last_response = response
|
92
|
+
if response.kind_of? Net::HTTPServerError
|
93
|
+
raise BulutfonSDK::REST::ServerError
|
94
|
+
end
|
95
|
+
rescue
|
96
|
+
raise if request.class == Net::HTTP::Post
|
97
|
+
if retries_left > 0 then retries_left -= 1; retry else raise end
|
98
|
+
end
|
99
|
+
if response.body and !response.body.empty?
|
100
|
+
if is_file
|
101
|
+
object = response.body
|
102
|
+
else
|
103
|
+
object = MultiJson.load response.body
|
104
|
+
end
|
105
|
+
elsif response.kind_of? Net::HTTPBadRequest
|
106
|
+
object = { message: 'Bad request', code: 400 }
|
107
|
+
end
|
108
|
+
|
109
|
+
if response.kind_of? Net::HTTPClientError
|
110
|
+
raise BulutfonSDK::REST::RequestError.new object['error'], object['code']
|
111
|
+
end
|
112
|
+
object
|
113
|
+
end
|
114
|
+
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
require 'bulutfon_sdk/rest/base_request'
|
2
|
+
|
3
|
+
module BulutfonSDK
|
4
|
+
module REST
|
5
|
+
class Bulutfon < BaseRequest
|
6
|
+
|
7
|
+
def initialize(*args)
|
8
|
+
super(*args)
|
9
|
+
end
|
10
|
+
|
11
|
+
def details
|
12
|
+
prepare_request( 'get', 'me')
|
13
|
+
end
|
14
|
+
|
15
|
+
def messages
|
16
|
+
BulutfonSDK::REST::Message.new(@token)
|
17
|
+
end
|
18
|
+
|
19
|
+
def message_titles
|
20
|
+
BulutfonSDK::REST::MessageTitle.new(@token)
|
21
|
+
end
|
22
|
+
|
23
|
+
def extensions
|
24
|
+
BulutfonSDK::REST::Extension.new(@token)
|
25
|
+
end
|
26
|
+
|
27
|
+
def dids
|
28
|
+
BulutfonSDK::REST::Did.new(@token)
|
29
|
+
end
|
30
|
+
|
31
|
+
def groups
|
32
|
+
BulutfonSDK::REST::Group.new(@token)
|
33
|
+
end
|
34
|
+
|
35
|
+
def cdrs
|
36
|
+
BulutfonSDK::REST::Cdr.new(@token)
|
37
|
+
end
|
38
|
+
|
39
|
+
def call_records
|
40
|
+
BulutfonSDK::REST::CallRecord.new(@token)
|
41
|
+
end
|
42
|
+
|
43
|
+
def incoming_faxes
|
44
|
+
BulutfonSDK::REST::IncomingFax.new(@token)
|
45
|
+
end
|
46
|
+
|
47
|
+
def outgoing_faxes
|
48
|
+
BulutfonSDK::REST::OutgoingFax.new(@token)
|
49
|
+
end
|
50
|
+
|
51
|
+
def announcements
|
52
|
+
BulutfonSDK::REST::Announcement.new(@token)
|
53
|
+
end
|
54
|
+
|
55
|
+
def automatic_calls
|
56
|
+
BulutfonSDK::REST::AutomaticCall.new(@token)
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'bulutfon_sdk/rest/base_request'
|
2
|
+
|
3
|
+
module BulutfonSDK
|
4
|
+
module REST
|
5
|
+
class CallRecord < BaseRequest
|
6
|
+
|
7
|
+
def initialize(*args)
|
8
|
+
super(*args)
|
9
|
+
@resource = 'call-records'
|
10
|
+
end
|
11
|
+
|
12
|
+
def get( uuid )
|
13
|
+
uri = prepare_uri("#{@resource}/#{uuid}")
|
14
|
+
{ download_path: uri.to_s }
|
15
|
+
end
|
16
|
+
|
17
|
+
def save( uuid, save_path)
|
18
|
+
save_file( 'get', "#{@resource}/#{uuid}", save_path)
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'bulutfon_sdk/rest/base_request'
|
2
|
+
|
3
|
+
module BulutfonSDK
|
4
|
+
module REST
|
5
|
+
class Cdr < BaseRequest
|
6
|
+
|
7
|
+
def initialize(*args)
|
8
|
+
super(*args)
|
9
|
+
@resource = 'cdrs'
|
10
|
+
end
|
11
|
+
|
12
|
+
def all( params = {} )
|
13
|
+
prepare_request( 'get', @resource,params)
|
14
|
+
end
|
15
|
+
|
16
|
+
def get( uuid )
|
17
|
+
prepare_request( 'get', "#{@resource}/#{uuid}")
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'bulutfon_sdk/rest/base_request'
|
2
|
+
|
3
|
+
module BulutfonSDK
|
4
|
+
module REST
|
5
|
+
class Did < BaseRequest
|
6
|
+
|
7
|
+
def initialize(*args)
|
8
|
+
super(*args)
|
9
|
+
@resource = 'dids'
|
10
|
+
end
|
11
|
+
|
12
|
+
def all( params = {} )
|
13
|
+
prepare_request( 'get', @resource,params)
|
14
|
+
end
|
15
|
+
|
16
|
+
def get( id )
|
17
|
+
prepare_request( 'get', "#{@resource}/#{id}")
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module BulutfonSDK
|
2
|
+
module REST
|
3
|
+
class ServerError < StandardError; end
|
4
|
+
|
5
|
+
class RequestError < StandardError
|
6
|
+
attr_reader :code
|
7
|
+
|
8
|
+
def initialize(message, code=nil)
|
9
|
+
super message
|
10
|
+
@code = code
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
class SDKError < StandardError
|
15
|
+
attr_reader :code
|
16
|
+
|
17
|
+
def initialize(message, code=nil)
|
18
|
+
super message
|
19
|
+
@code = code
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'bulutfon_sdk/rest/base_request'
|
2
|
+
|
3
|
+
module BulutfonSDK
|
4
|
+
module REST
|
5
|
+
class Extension < BaseRequest
|
6
|
+
|
7
|
+
def initialize(*args)
|
8
|
+
super(*args)
|
9
|
+
@resource = 'extensions'
|
10
|
+
end
|
11
|
+
|
12
|
+
def all( params = {} )
|
13
|
+
prepare_request( 'get', @resource,params)
|
14
|
+
end
|
15
|
+
|
16
|
+
def get( id )
|
17
|
+
prepare_request( 'get', "#{@resource}/#{id}")
|
18
|
+
end
|
19
|
+
|
20
|
+
def create(params)
|
21
|
+
prepare_request( 'post', @resource, params)
|
22
|
+
end
|
23
|
+
|
24
|
+
def update(id, params)
|
25
|
+
prepare_request( 'put', "#{@resource}/#{id}", params)
|
26
|
+
end
|
27
|
+
|
28
|
+
def delete(id)
|
29
|
+
prepare_request( 'delete', "#{@resource}/#{id}")
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'bulutfon_sdk/rest/base_request'
|
2
|
+
|
3
|
+
module BulutfonSDK
|
4
|
+
module REST
|
5
|
+
class Group < BaseRequest
|
6
|
+
|
7
|
+
def initialize(*args)
|
8
|
+
super(*args)
|
9
|
+
@resource = 'groups'
|
10
|
+
end
|
11
|
+
|
12
|
+
def all( params = {} )
|
13
|
+
prepare_request( 'get', @resource,params)
|
14
|
+
end
|
15
|
+
|
16
|
+
def get( id )
|
17
|
+
prepare_request( 'get', "#{@resource}/#{id}")
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'bulutfon_sdk/rest/base_request'
|
2
|
+
|
3
|
+
module BulutfonSDK
|
4
|
+
module REST
|
5
|
+
class IncomingFax < BaseRequest
|
6
|
+
|
7
|
+
def initialize(*args)
|
8
|
+
super(*args)
|
9
|
+
@resource = 'incoming-faxes'
|
10
|
+
end
|
11
|
+
|
12
|
+
def all( params = {} )
|
13
|
+
prepare_request( 'get', @resource, params)
|
14
|
+
end
|
15
|
+
|
16
|
+
def get( uuid )
|
17
|
+
uri = prepare_uri("#{@resource}/#{uuid}")
|
18
|
+
{ download_path: uri.to_s }
|
19
|
+
end
|
20
|
+
|
21
|
+
def save( uuid, save_path)
|
22
|
+
save_file( 'get', "#{@resource}/#{uuid}", save_path)
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'bulutfon_sdk/rest/base_request'
|
2
|
+
|
3
|
+
module BulutfonSDK
|
4
|
+
module REST
|
5
|
+
class Message < BaseRequest
|
6
|
+
|
7
|
+
def initialize(*args)
|
8
|
+
super(*args)
|
9
|
+
@resource = 'messages'
|
10
|
+
end
|
11
|
+
|
12
|
+
def all( params = {} )
|
13
|
+
prepare_request( 'get', @resource,params)
|
14
|
+
end
|
15
|
+
|
16
|
+
def get( id )
|
17
|
+
prepare_request( 'get', "#{@resource}/#{id}")
|
18
|
+
end
|
19
|
+
|
20
|
+
def create(params)
|
21
|
+
prepare_request( 'post', @resource, params)
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'bulutfon_sdk/rest/base_request'
|
2
|
+
|
3
|
+
module BulutfonSDK
|
4
|
+
module REST
|
5
|
+
class MessageTitle < BaseRequest
|
6
|
+
|
7
|
+
def initialize(*args)
|
8
|
+
super(*args)
|
9
|
+
@resource = 'message-titles'
|
10
|
+
end
|
11
|
+
|
12
|
+
def all( params = {} )
|
13
|
+
prepare_request( 'get', @resource,params)
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'bulutfon_sdk/rest/base_request'
|
2
|
+
|
3
|
+
module BulutfonSDK
|
4
|
+
module REST
|
5
|
+
class OutgoingFax < BaseRequest
|
6
|
+
|
7
|
+
include BulutfonSDK::Util
|
8
|
+
|
9
|
+
def initialize(*args)
|
10
|
+
super(*args)
|
11
|
+
@resource = 'outgoing-faxes'
|
12
|
+
end
|
13
|
+
|
14
|
+
def all( params = {} )
|
15
|
+
prepare_request( 'get', @resource, params)
|
16
|
+
end
|
17
|
+
|
18
|
+
def get( id )
|
19
|
+
prepare_request( 'get', "#{@resource}/#{id}")
|
20
|
+
end
|
21
|
+
|
22
|
+
def create(params)
|
23
|
+
prepare_atachment(params)
|
24
|
+
prepare_request( 'post', @resource, params)
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def prepare_atachment(params)
|
30
|
+
file = params[:attachment]
|
31
|
+
basename = File.basename file
|
32
|
+
type = file_content_type file
|
33
|
+
content = File.read(file)
|
34
|
+
base_64_data = Base64.strict_encode64(content)
|
35
|
+
params[:attachment] = "data:#{type};name:#{basename};base64:#{base_64_data}"
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module BulutfonSDK
|
2
|
+
module Util
|
3
|
+
class ClientConfig
|
4
|
+
DEFAULTS = {
|
5
|
+
host: 'https://api.bulutfon.com',
|
6
|
+
port: 80,
|
7
|
+
use_ssl: true,
|
8
|
+
ssl_verify_peer: false,
|
9
|
+
ssl_ca_file: File.dirname(__FILE__) + '/../../../conf/cacert.pem',
|
10
|
+
timeout: 30,
|
11
|
+
proxy_addr: nil,
|
12
|
+
proxy_port: nil,
|
13
|
+
proxy_user: nil,
|
14
|
+
proxy_pass: nil,
|
15
|
+
retry_limit: 2
|
16
|
+
}
|
17
|
+
|
18
|
+
DEFAULTS.each_key do |attribute|
|
19
|
+
attr_accessor attribute
|
20
|
+
end
|
21
|
+
|
22
|
+
def initialize(opts={})
|
23
|
+
DEFAULTS.each do |attribute, value|
|
24
|
+
send("#{attribute}=".to_sym, opts.fetch(attribute, value))
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module BulutfonSDK
|
2
|
+
module Util
|
3
|
+
def file_content_type(path)
|
4
|
+
if File.exist? path
|
5
|
+
stdin,stdout,stderr = Open3.popen3(%{file --mime -b #{path}})
|
6
|
+
|
7
|
+
file_err = stderr.gets
|
8
|
+
file_out = stdout.gets
|
9
|
+
|
10
|
+
raise BulutfonSDK::REST::SDKError.new "The 'file' command line binary was not found." if file_err
|
11
|
+
|
12
|
+
return file_out.split(';')[0].strip if file_err.nil? && (!file_out.nil? && !file_out.empty?)
|
13
|
+
end
|
14
|
+
|
15
|
+
raise BulutfonSDK::REST::SDKError.new 'File content type not found'
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/lib/bulutfon_sdk.rb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'net/http'
|
2
|
+
require 'net/https'
|
3
|
+
require 'multi_json'
|
4
|
+
require 'cgi'
|
5
|
+
require 'openssl'
|
6
|
+
require 'open3'
|
7
|
+
require 'mime/types'
|
8
|
+
require 'base64'
|
9
|
+
|
10
|
+
require 'bulutfon_sdk/version' unless defined?(BulutfonSDK::VERSION)
|
11
|
+
require 'bulutfon_sdk/util'
|
12
|
+
require 'bulutfon_sdk/rest/bulutfon'
|
13
|
+
require 'bulutfon_sdk/rest/message'
|
14
|
+
require 'bulutfon_sdk/rest/did'
|
15
|
+
require 'bulutfon_sdk/rest/group'
|
16
|
+
require 'bulutfon_sdk/rest/cdr'
|
17
|
+
require 'bulutfon_sdk/rest/announcement'
|
18
|
+
require 'bulutfon_sdk/rest/automatic_call'
|
19
|
+
require 'bulutfon_sdk/rest/call_record'
|
20
|
+
require 'bulutfon_sdk/rest/incoming_fax'
|
21
|
+
require 'bulutfon_sdk/rest/outgoing_fax'
|
22
|
+
require 'bulutfon_sdk/rest/extension'
|
23
|
+
require 'bulutfon_sdk/rest/message_title'
|
24
|
+
require 'bulutfon_sdk/util/client_config'
|
25
|
+
require 'bulutfon_sdk/rest/errors'
|
26
|
+
|
27
|
+
module BulutfonSDK
|
28
|
+
# Your code goes here...
|
29
|
+
end
|
metadata
ADDED
@@ -0,0 +1,150 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: bulutfon_sdk
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Ismail Akbudak
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-12-21 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: multi_json
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.11'
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 1.11.0
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - "~>"
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '1.11'
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 1.11.0
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: mime-types
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - "~>"
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '3.0'
|
40
|
+
type: :runtime
|
41
|
+
prerelease: false
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - "~>"
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '3.0'
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: bundler
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - "~>"
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '1.10'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - "~>"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '1.10'
|
61
|
+
- !ruby/object:Gem::Dependency
|
62
|
+
name: rake
|
63
|
+
requirement: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - "~>"
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '10.0'
|
68
|
+
type: :development
|
69
|
+
prerelease: false
|
70
|
+
version_requirements: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - "~>"
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '10.0'
|
75
|
+
- !ruby/object:Gem::Dependency
|
76
|
+
name: rspec
|
77
|
+
requirement: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - "~>"
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '0'
|
82
|
+
type: :development
|
83
|
+
prerelease: false
|
84
|
+
version_requirements: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - "~>"
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '0'
|
89
|
+
description: Bulutfon API SDK for ruby & ruby on rails.
|
90
|
+
email:
|
91
|
+
- ismail.akbudak@lab2023.com
|
92
|
+
executables: []
|
93
|
+
extensions: []
|
94
|
+
extra_rdoc_files:
|
95
|
+
- README.md
|
96
|
+
- LICENSE.md
|
97
|
+
files:
|
98
|
+
- ".gitignore"
|
99
|
+
- Gemfile
|
100
|
+
- LICENSE.md
|
101
|
+
- README.md
|
102
|
+
- Rakefile
|
103
|
+
- bulutfon_sdk.gemspec
|
104
|
+
- conf/cacert.pem
|
105
|
+
- examples/examples.rb
|
106
|
+
- examples/pdf-sample.pdf
|
107
|
+
- examples/test.wav
|
108
|
+
- lib/bulutfon_sdk.rb
|
109
|
+
- lib/bulutfon_sdk/rest/announcement.rb
|
110
|
+
- lib/bulutfon_sdk/rest/automatic_call.rb
|
111
|
+
- lib/bulutfon_sdk/rest/base_request.rb
|
112
|
+
- lib/bulutfon_sdk/rest/bulutfon.rb
|
113
|
+
- lib/bulutfon_sdk/rest/call_record.rb
|
114
|
+
- lib/bulutfon_sdk/rest/cdr.rb
|
115
|
+
- lib/bulutfon_sdk/rest/did.rb
|
116
|
+
- lib/bulutfon_sdk/rest/errors.rb
|
117
|
+
- lib/bulutfon_sdk/rest/extension.rb
|
118
|
+
- lib/bulutfon_sdk/rest/group.rb
|
119
|
+
- lib/bulutfon_sdk/rest/incoming_fax.rb
|
120
|
+
- lib/bulutfon_sdk/rest/message.rb
|
121
|
+
- lib/bulutfon_sdk/rest/message_title.rb
|
122
|
+
- lib/bulutfon_sdk/rest/outgoing_fax.rb
|
123
|
+
- lib/bulutfon_sdk/util.rb
|
124
|
+
- lib/bulutfon_sdk/util/client_config.rb
|
125
|
+
- lib/bulutfon_sdk/version.rb
|
126
|
+
homepage: https://github.com/bulutfon/ruby-sdk
|
127
|
+
licenses:
|
128
|
+
- MIT
|
129
|
+
metadata: {}
|
130
|
+
post_install_message:
|
131
|
+
rdoc_options: []
|
132
|
+
require_paths:
|
133
|
+
- lib
|
134
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
140
|
+
requirements:
|
141
|
+
- - ">="
|
142
|
+
- !ruby/object:Gem::Version
|
143
|
+
version: '0'
|
144
|
+
requirements: []
|
145
|
+
rubyforge_project:
|
146
|
+
rubygems_version: 2.4.5.1
|
147
|
+
signing_key:
|
148
|
+
specification_version: 4
|
149
|
+
summary: Bulutfon Ruby SDK.
|
150
|
+
test_files: []
|