bulutfon_sdk 1.1.3 → 1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: adca2477737bd616edcd6fabdd13fe91304cbbee
4
- data.tar.gz: 04ff542450e9a1d88b8bc025ec2db220419ffcc0
3
+ metadata.gz: 46ed35e55bb3d1d1063cb1f02147df007c7ad8fa
4
+ data.tar.gz: 08466339da1fb22dcd8b1afd95b9091a3daf0a21
5
5
  SHA512:
6
- metadata.gz: 839bd82673302bb7642115fa5698d3d434424f3140f0a36be3f038ca54043fd5c4c404c042b2abca7ea84b7b90d5ff8771f45ede30f649d0321e1e7514c20957
7
- data.tar.gz: 7cfc36da333fda85788ef0d316862299f10e6bbce655fecd353c6ca16036e8c656391165bb1ce11343aa35c226f9f426e1057a815543729e05a511504ebc9192
6
+ metadata.gz: b2cfd79af389d4f9a20b633e2f7c67e69f94e51d6951be99fd246296da0723bcdb1f5c1fdccd55583f493292d32a29e84e29cdace9a91fae26a6c0e90e22ba0e
7
+ data.tar.gz: 3c534bacb65306dcf85a958fced31864a814dd7c8f95cd458a072a897a9e7a1606c349febc4e969a51c864ae5178a866c16f2223ed50783cdcd2054aba089787
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # Bulutfon Ruby SDK
2
2
 
3
+ [![Gem Version](https://badge.fury.io/rb/bulutfon_sdk.svg)](https://badge.fury.io/rb/bulutfon_sdk)
4
+
3
5
  * [API Dokümantasyonu](https://github.com/bulutfon/documents/tree/master/API)
4
6
  * [Örnek Kodlar](https://github.com/bulutfon/ruby-sdk/tree/master/examples)
5
7
 
@@ -272,8 +274,63 @@ puts bulutfon.messages.create(params)
272
274
  methodlarını kullanabilirsiniz.
273
275
 
274
276
  Ö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
-
277
+
278
+ ## Hash cevapları OpenStruct objesine dönüştürme
279
+
280
+ ### Hesap
281
+ ```ruby
282
+ bulutfon = BulutfonSDK::REST::Bulutfon.new(token)
283
+ # Hesap detaylarını hash olarak gösterir
284
+ puts bulutfon.details
285
+ # Örnek bir hesap detayları sonucu
286
+ details = {
287
+ 'user' =>{
288
+ 'email' => 'test@bulutfon.com', 'name' => 'BULUTFON', 'gsm' => 'XXXXXXXXXXXX'
289
+ },
290
+ 'pbx' =>{
291
+ 'name' => 'test', 'url' => 'test.com', 'state' => 'CONFIRMED', 'package' => 'ENTERPRISE', 'customer_type' => 'CORPORATE'
292
+ },
293
+ 'credit' =>{
294
+ 'balance' => '10.00', 'sms_credit' => 0
295
+ }
296
+ }
297
+ # to_obj bizim hash sonuçları için tanımladığımız yardımcı metodumuz
298
+ detail_object = bulutfon.details.to_obj
299
+ puts detail_object
300
+ # Object örneği
301
+ =begin
302
+ #<OpenStruct
303
+ user=#<OpenStruct email="test@bulutfon.com", name="BULUTFON", gsm="XXXXXXXXXXXX">,
304
+ pbx=#<OpenStruct name="test", url="test.com", state="CONFIRMED", package="ENTERPRISE", customer_type="CORPORATE">,
305
+ credit=#<OpenStruct balance="10.00", sms_credit=0>>
306
+ =end
307
+ # Obje üzerinden alanlara şu şekilde ulaşabilirsiniz
308
+ puts detail_object.user.email
309
+ puts detail_object.user.name
310
+ puts detail_object.pbx.name
311
+ puts detail_object.pbx.url
312
+ puts detail_object.credit.balance
313
+ puts detail_object.credit.sms_credit
314
+ ```
315
+
316
+ ### Gruplar için örnek
317
+ ```ruby
318
+ group_sdk = BulutfonSDK::REST::Group.new(token)
319
+ obj_result = group_sdk.all.to_obj
320
+ =begin
321
+ #<OpenStruct
322
+ groups=[
323
+ #<OpenStruct id=1, number=11, name="Ofis - İstanbul", timeout=30>,
324
+ #<OpenStruct id=2, number=22, name="Ofis - Denizli", timeout=30>,
325
+ #<OpenStruct id=3, number=33, name="İngilizce", timeout=30>
326
+ ]>
327
+ =end
328
+ obj_result.groups.each do |group|
329
+ puts group.name
330
+ end
331
+ ```
332
+
276
333
  ##Credits
277
334
  * ruby_sdk is maintained by [Lab2023](http://lab2023.com/) & [Bulutfon](https://www.bulutfon.com/)
278
335
  * Thank you to all the contributors!
279
- * The names and logos for Bulutfon are trademarks of Bulutfon
336
+ * The names and logos for Bulutfon are trademarks of Bulutfon
data/examples/examples.rb CHANGED
@@ -214,3 +214,63 @@ params = {
214
214
  }
215
215
  puts message.create(params)
216
216
 
217
+ ##############################################
218
+ # Create OpenStruct object from hash
219
+ ##############################################
220
+
221
+ # Account
222
+ # -------------------------------------------------------------
223
+ bulutfon = BulutfonSDK::REST::Bulutfon.new(token)
224
+ # Get account details
225
+ puts bulutfon.details
226
+
227
+ # Details result is like below
228
+ =begin
229
+ details = {
230
+ 'user' =>{
231
+ 'email' => 'test@bulutfon.com', 'name' => 'BULUTFON', 'gsm' => 'XXXXXXXXXXXX'
232
+ },
233
+ 'pbx' =>{
234
+ 'name' => 'test', 'url' => 'test.com', 'state' => 'CONFIRMED', 'package' => 'ENTERPRISE', 'customer_type' => 'CORPORATE'
235
+ },
236
+ 'credit' =>{
237
+ 'balance' => '10.00', 'sms_credit' => 0
238
+ }
239
+ }
240
+ =end
241
+
242
+ # to_obj is our helper method for hashes
243
+ detail_object = bulutfon.details.to_obj
244
+ puts detail_object
245
+
246
+ # Object Example
247
+ =begin
248
+ #<OpenStruct
249
+ user=#<OpenStruct email="test@bulutfon.com", name="BULUTFON", gsm="XXXXXXXXXXXX">,
250
+ pbx=#<OpenStruct name="test", url="test.com", state="CONFIRMED", package="ENTERPRISE", customer_type="CORPORATE">,
251
+ credit=#<OpenStruct balance="10.00", sms_credit=0>>
252
+ =end
253
+
254
+ # You can access fields
255
+ puts detail_object.user.email
256
+ puts detail_object.user.name
257
+ puts detail_object.pbx.name
258
+ puts detail_object.pbx.url
259
+ puts detail_object.credit.balance
260
+ puts detail_object.credit.sms_credit
261
+
262
+ # Groups
263
+ # -------------------------------------------------------------
264
+ group_sdk = BulutfonSDK::REST::Group.new(token)
265
+ obj_result = group_sdk.all.to_obj
266
+ =begin
267
+ #<OpenStruct
268
+ groups=[
269
+ #<OpenStruct id=1, number=11, name="Ofis - İstanbul", timeout=30>,
270
+ #<OpenStruct id=2, number=22, name="Ofis - Denizli", timeout=30>,
271
+ #<OpenStruct id=3, number=33, name="İngilizce", timeout=30>
272
+ ]>
273
+ =end
274
+ obj_result.groups.each do |group|
275
+ puts group.name
276
+ end
@@ -0,0 +1,5 @@
1
+ class Hash
2
+ def to_obj
3
+ convert_to_obj self
4
+ end
5
+ end
@@ -0,0 +1,45 @@
1
+ module BulutfonSDK
2
+ module Helpers
3
+ module DataHelper
4
+
5
+ ##
6
+ # Convert hash to object
7
+ def convert_to_obj(hash)
8
+ open_struct = OpenStruct.new
9
+ set_open_struct_variables( open_struct, hash )
10
+ open_struct
11
+ end
12
+
13
+ ##
14
+ # Set hash variable to open_struct
15
+ # Recursive method for hash values
16
+ def set_open_struct_variables(open_struct, hash)
17
+ hash.each do |key,value|
18
+ if value.is_a? Hash
19
+ # create new open struct value
20
+ new_open_struct = OpenStruct.new
21
+ open_struct.send("#{key}=", new_open_struct)
22
+ set_open_struct_variables(new_open_struct, value)
23
+ elsif value.is_a? Array
24
+ open_struct.send("#{key}=", value)
25
+ value.each_with_index do |val, index|
26
+ if val.is_a? Hash
27
+ # create new open struct value
28
+ new_open_struct = OpenStruct.new
29
+ # set array index value variable
30
+ value[index] = new_open_struct
31
+ set_open_struct_variables(new_open_struct, val)
32
+ else
33
+ # Do nothing
34
+ # value[index] = val
35
+ end
36
+ end
37
+ else
38
+ open_struct.send("#{key}=", value)
39
+ end
40
+ end
41
+ end
42
+
43
+ end
44
+ end
45
+ end
@@ -17,100 +17,103 @@ module BulutfonSDK
17
17
  end
18
18
 
19
19
  protected
20
+ ##
21
+ # Prepare URI object for file path
22
+ def prepare_uri(path, params = {})
23
+ uri = uri_parse(params, path)
24
+ uri.query = URI.encode_www_form(params)
25
+ uri
26
+ end
20
27
 
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?
28
+ ##
29
+ # Prepare http request
30
+ def prepare_request(method, path, params = {})
31
+ uri = uri_parse(params, path)
32
+ uri.query = URI.encode_www_form(params) if ['get', 'delete'].include?(method)
33
+ method_class = Net::HTTP.const_get method.to_s.capitalize
34
+ request = method_class.new(uri.to_s, HTTP_HEADERS)
35
+ request.form_data = params if ['post', 'put'].include?(method)
36
+ connect_and_send(request)
58
37
  end
59
- { file: file, save_path: save_path }
60
- end
61
38
 
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
39
+ ##
40
+ # URI parse for params
41
+ def uri_parse(params, path)
42
+ request_path = "#{@config.host}/#{path}"
43
+ uri = URI.parse(request_path)
44
+ params[:access_token] = @token
45
+ uri
75
46
  end
76
- @http.open_timeout = @config.timeout
77
- @http.read_timeout = @config.timeout
78
- end
79
47
 
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
48
+ ##
49
+ # Prepare http request for file saving
50
+ def save_file(method, path, save_path)
51
+ uri = prepare_uri(path)
52
+ method_class = Net::HTTP.const_get method.to_s.capitalize
53
+ request = method_class.new(uri.to_s, HTTP_HEADERS)
54
+ response = connect_and_send(request, is_file: true )
55
+ begin
56
+ file = File.open(save_path, 'w')
57
+ file.write(response)
58
+ rescue => error
59
+ raise BulutfonSDK::REST::SDKError.new error
60
+ ensure
61
+ file.close unless file.nil?
94
62
  end
95
- rescue
96
- raise if request.class == Net::HTTP::Post
97
- if retries_left > 0 then retries_left -= 1; retry else raise end
63
+ { file: file, save_path: save_path }
98
64
  end
99
- if response.body and !response.body.empty?
100
- if is_file
101
- object = response.body
65
+
66
+ ##
67
+ # Set up and cache a Net::HTTP object to use when making requests.
68
+ def set_up_connection # :doc:
69
+ uri = URI.parse(@config.host)
70
+ @http = Net::HTTP.new(uri.host, uri.port, p_user = @config.proxy_user, p_pass = @config.proxy_pass)
71
+ @http.verify_mode = OpenSSL::SSL::VERIFY_NONE
72
+ @http.use_ssl = @config.use_ssl
73
+ if @config.ssl_verify_peer
74
+ @http.verify_mode = OpenSSL::SSL::VERIFY_PEER
75
+ @http.ca_file = @config.ssl_ca_file
102
76
  else
103
- object = MultiJson.load response.body
77
+ @http.verify_mode = OpenSSL::SSL::VERIFY_NONE
104
78
  end
105
- elsif response.kind_of? Net::HTTPBadRequest
106
- object = { message: 'Bad request', code: 400 }
79
+ @http.open_timeout = @config.timeout
80
+ @http.read_timeout = @config.timeout
107
81
  end
108
82
 
109
- if response.kind_of? Net::HTTPClientError
110
- raise BulutfonSDK::REST::RequestError.new object['error'], object['code']
83
+ ##
84
+ # Send an HTTP request using the cached <tt>@http</tt> object and
85
+ # return the JSON response body parsed into a hash. Also save the raw
86
+ # Net::HTTP::Request and Net::HTTP::Response objects as
87
+ # <tt>@last_request</tt> and <tt>@last_response</tt> to allow for
88
+ # inspection later.
89
+ def connect_and_send(request, is_file = false ) # :doc:
90
+ @last_request = request
91
+ retries_left = @config.retry_limit
92
+ begin
93
+ response = @http.request request
94
+ @last_response = response
95
+ if response.kind_of? Net::HTTPServerError
96
+ raise BulutfonSDK::REST::ServerError
97
+ end
98
+ rescue
99
+ raise if request.class == Net::HTTP::Post
100
+ if retries_left > 0 then retries_left -= 1; retry else raise end
101
+ end
102
+ if response.body and !response.body.empty?
103
+ if is_file
104
+ object = response.body
105
+ else
106
+ object = MultiJson.load response.body
107
+ end
108
+ elsif response.kind_of? Net::HTTPBadRequest
109
+ object = { message: 'Bad request', code: 400 }
110
+ end
111
+
112
+ if response.kind_of? Net::HTTPClientError
113
+ raise BulutfonSDK::REST::RequestError.new object['error'], object['code']
114
+ end
115
+ object
111
116
  end
112
- object
113
- end
114
117
 
115
118
  end
116
119
  end
@@ -1,3 +1,3 @@
1
1
  module BulutfonSDK
2
- VERSION = '1.1.3'
2
+ VERSION = '1.2.0'
3
3
  end
data/lib/bulutfon_sdk.rb CHANGED
@@ -6,9 +6,12 @@ require 'openssl'
6
6
  require 'open3'
7
7
  require 'mime/types'
8
8
  require 'base64'
9
+ require 'ostruct'
9
10
 
10
11
  require 'bulutfon_sdk/version' unless defined?(BulutfonSDK::VERSION)
11
12
  require 'bulutfon_sdk/util'
13
+ require 'bulutfon_sdk/helpers/data_helper'
14
+ require 'bulutfon_sdk/hash'
12
15
  require 'bulutfon_sdk/rest/bulutfon'
13
16
  require 'bulutfon_sdk/rest/message'
14
17
  require 'bulutfon_sdk/rest/did'
@@ -24,6 +27,8 @@ require 'bulutfon_sdk/rest/message_title'
24
27
  require 'bulutfon_sdk/util/client_config'
25
28
  require 'bulutfon_sdk/rest/errors'
26
29
 
30
+ include BulutfonSDK::Helpers::DataHelper
31
+
27
32
  module BulutfonSDK
28
33
  # Your code goes here...
29
34
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bulutfon_sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.3
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ismail Akbudak
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-12-21 00:00:00.000000000 Z
11
+ date: 2016-07-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: multi_json
@@ -106,6 +106,8 @@ files:
106
106
  - examples/pdf-sample.pdf
107
107
  - examples/test.wav
108
108
  - lib/bulutfon_sdk.rb
109
+ - lib/bulutfon_sdk/hash.rb
110
+ - lib/bulutfon_sdk/helpers/data_helper.rb
109
111
  - lib/bulutfon_sdk/rest/announcement.rb
110
112
  - lib/bulutfon_sdk/rest/automatic_call.rb
111
113
  - lib/bulutfon_sdk/rest/base_request.rb
@@ -143,7 +145,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
143
145
  version: '0'
144
146
  requirements: []
145
147
  rubyforge_project:
146
- rubygems_version: 2.4.5.1
148
+ rubygems_version: 2.6.4
147
149
  signing_key:
148
150
  specification_version: 4
149
151
  summary: Bulutfon Ruby SDK.