kazoo-ruby-sdk 0.1.1 → 1.0.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: f20d971051c409aac8c71468c535b7a8956c8d1a
4
- data.tar.gz: 883d34a81909372d993ada42152f01966b2d7ebe
3
+ metadata.gz: 18dd15e7663fd59b3e8b94c0ad156e1d0ba180a5
4
+ data.tar.gz: fb0b1cdbe45f825110df53d86781d34b44d27978
5
5
  SHA512:
6
- metadata.gz: 698c4c9dcc7aef7ee2138a2e4090bae2f97c91868783c70587eb9d23b6777642296e87819340a31248eca4809a974975697251f395a3dd33982a276d0a3c7862
7
- data.tar.gz: 849ee41c57da5da8c15e038c9a1f7b4aacd00caf4abe2e406523911e386e3de381a57d4a6324f3ac54c75295d396b9cbacc413a5d0738a0219a109736533b504
6
+ metadata.gz: 4afe2bec7fc29eabeea036dc3ba0a471acdc60fc6b907da3bb27b015b626045c84331d86d510761ba1ffc9d77db863fcd28a64fcd779e994b11c556072e114dc
7
+ data.tar.gz: 125715ff7f377cc991107d46d35b62cd6ac46c7def93d0fcc927d3b21e1c9cb6aa74abe7d1b1cb31c9856a516e1b8d899d64472586d67440b49f8e21de7f4f59
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --require spec_helper
data/Gemfile CHANGED
@@ -7,4 +7,8 @@ gem 'faraday'
7
7
  gem 'faraday_middleware'
8
8
  gem 'multi_json'
9
9
  gem 'hashie'
10
- gem 'yajl-ruby'
10
+ gem 'yajl-ruby'
11
+
12
+ group :development, :test do
13
+ gem 'rspec-rails'
14
+ end
data/README.md CHANGED
@@ -22,27 +22,37 @@ Or install it yourself as:
22
22
 
23
23
  Create config/initializers/kazoo_ruby_sdk.rb
24
24
  ```ruby
25
- KazooRubySdk.auth_url = 'http://yourserver.com:8000/v1'
26
- KazooRubySdk.realm = 'your-realm'
27
- KazooRubySdk.username = 'your-username'
28
- KazooRubySdk.password = 'your-password'
25
+ KazooRubySdk.configure do |config|
26
+ config.auth_url = 'http://yourserver.com:8000/v1'
27
+ config.realm = 'your-realm'
28
+ config.username = 'your-username'
29
+ config.password = 'your-password'
30
+ end
29
31
  ```
30
32
 
31
33
  ## Usage
32
34
  ```ruby
33
- api = KazooRubySdk::AuthSession.new
34
- session = api.new_session
35
- devices = session.list_devices.data
35
+ devices = KazooRubySdk::Devices.list.data
36
36
  device_id = devices[0].id
37
- device = session.get_device(device_id)
37
+ device = KazooRubySdk::Devices.get(device_id)
38
38
  ```
39
39
 
40
40
  ## List of methods
41
41
 
42
- * list_devices()
43
- * get_device(device_id)
44
- * get_device_statuses
45
- * create_device(name)
42
+ #### Devices
43
+ * list()
44
+ * get(device_id)
45
+ * get_statuses
46
+ * create(attributes)
47
+ * update(id, attributes)
48
+ * destroy(id)
49
+
50
+ #### Users
51
+ * list()
52
+ * get(id)
53
+ * create(attributes)
54
+ * update(id, attributes)
55
+ * destroy(id)
46
56
 
47
57
  ## Contributing
48
58
 
@@ -32,4 +32,9 @@ Gem::Specification.new do |spec|
32
32
 
33
33
  spec.add_development_dependency "bundler", "~> 1.14"
34
34
  spec.add_development_dependency "rake", "~> 10.0"
35
+ spec.add_dependency 'faraday', '~> 0.12'
36
+ spec.add_dependency 'faraday_middleware', '~> 0.11'
37
+ spec.add_dependency 'multi_json', '~> 1.12'
38
+ spec.add_dependency 'hashie', '~> 3.5'
39
+ spec.add_dependency 'yajl-ruby', '~> 1.3'
35
40
  end
@@ -3,12 +3,31 @@ require 'faraday'
3
3
  require 'faraday_middleware'
4
4
  require 'digest/md5'
5
5
 
6
+ require 'kazoo-ruby-sdk/configuration'
7
+ require 'kazoo-ruby-sdk/session'
6
8
  require 'kazoo-ruby-sdk/base'
7
- require 'kazoo-ruby-sdk/auth_session'
8
- require 'kazoo-ruby-sdk/api_session'
9
+ require 'kazoo-ruby-sdk/devices'
10
+ require 'kazoo-ruby-sdk/users'
9
11
 
10
12
  module KazooRubySdk
11
13
  class << self
12
- attr_accessor :auth_url, :realm, :username, :password
14
+ attr_accessor :configuration, :cache
15
+ end
16
+
17
+ def self.configuration
18
+ @configuration ||= Configuration.new
19
+ end
20
+
21
+ def self.cache
22
+ @cache
23
+ end
24
+
25
+ def self.reset
26
+ @configuration = Configuration.new
27
+ end
28
+
29
+ def self.configure
30
+ self.cache = ActiveSupport::Cache::MemoryStore.new
31
+ yield(configuration)
13
32
  end
14
33
  end
@@ -1,15 +1,33 @@
1
1
  module KazooRubySdk
2
2
  class Base
3
- def create_conn_object(url)
4
- Faraday.new(:url => url,
5
- :user_agent => 'Kazoo Ruby SDK') do |builder|
6
- builder.use Faraday::Response::Mashify
7
- builder.use Faraday::Response::ParseJson
8
- builder.use Faraday::Response::RaiseError
9
- builder.use Faraday::Request::JSON
10
- builder.use Faraday::Request::UrlEncoded
11
- builder.adapter Faraday.default_adapter
12
- end
3
+ class << self
4
+ attr_accessor :auth_token, :api_url, :realm, :account_id, :owner_id, :pipe
5
+ end
6
+
7
+ private
8
+
9
+ def self.auth_token
10
+ KazooRubySdk::Session.auth_token
11
+ end
12
+
13
+ def self.api_url
14
+ KazooRubySdk::Session.api_url
15
+ end
16
+
17
+ def self.realm
18
+ KazooRubySdk::Session.realm
19
+ end
20
+
21
+ def self.account_id
22
+ KazooRubySdk::Session.account_id
23
+ end
24
+
25
+ def self.owner_id
26
+ KazooRubySdk::Session.owner_id
27
+ end
28
+
29
+ def self.pipe
30
+ KazooRubySdk::Session.pipe
13
31
  end
14
32
  end
15
33
  end
@@ -0,0 +1,5 @@
1
+ module KazooRubySdk
2
+ class Configuration
3
+ attr_accessor :api_url, :realm, :username, :password
4
+ end
5
+ end
@@ -0,0 +1,49 @@
1
+ module KazooRubySdk
2
+ class Devices < Base
3
+ class << self
4
+ def list
5
+ pipe.get do |request|
6
+ request.url "accounts/#{account_id}/devices"
7
+ request.headers['X-Auth-Token'] = auth_token
8
+ end.body
9
+ end
10
+
11
+ def get(device_id)
12
+ pipe.get do |request|
13
+ request.url "accounts/#{account_id}/devices/#{device_id}"
14
+ request.headers['X-Auth-Token'] = auth_token
15
+ end.body
16
+ end
17
+
18
+ def get_statuses
19
+ pipe.get do |request|
20
+ request.url "accounts/#{account_id}/devices/status"
21
+ request.headers['X-Auth-Token'] = auth_token
22
+ end.body
23
+ end
24
+
25
+ def create(attributes)
26
+ pipe.put do |request|
27
+ request.url "accounts/#{account_id}/devices"
28
+ request.headers['X-Auth-Token'] = auth_token
29
+ request.body = { data: attributes }
30
+ end.body
31
+ end
32
+
33
+ def update(device_id, attributes)
34
+ pipe.patch do |request|
35
+ request.url "accounts/#{account_id}/devices/#{device_id}"
36
+ request.headers['X-Auth-Token'] = auth_token
37
+ request.body = { data: attributes }
38
+ end.body
39
+ end
40
+
41
+ def destroy(device_id)
42
+ pipe.delete do |request|
43
+ request.url "accounts/#{account_id}/devices/#{device_id}"
44
+ request.headers['X-Auth-Token'] = auth_token
45
+ end.body
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,56 @@
1
+ module KazooRubySdk
2
+ class Session
3
+ class << self
4
+ attr_writer :api_url, :realm, :account_id, :owner_id, :auth_token, :pipe
5
+ end
6
+
7
+ class << self
8
+ def api_url
9
+ KazooRubySdk.configuration.api_url
10
+ end
11
+
12
+ def realm
13
+ KazooRubySdk.configuration.realm
14
+ end
15
+
16
+ def account_id
17
+ auth_response.data.account_id
18
+ end
19
+
20
+ def owner_id
21
+ auth_response.data.owner_id
22
+ end
23
+
24
+ def auth_token
25
+ auth_response.auth_token
26
+ end
27
+
28
+ def pipe
29
+ create_conn_object(api_url)
30
+ end
31
+
32
+ def create_conn_object(url)
33
+ Faraday.new(:url => url, ssl: { verify: false }) do |builder|
34
+ builder.use Faraday::Response::Mashify
35
+ builder.use Faraday::Response::ParseJson
36
+ builder.use Faraday::Response::RaiseError
37
+ builder.use FaradayMiddleware::EncodeJson
38
+ builder.use Faraday::Request::UrlEncoded
39
+ builder.adapter Faraday.default_adapter
40
+ end
41
+ end
42
+
43
+ def auth_response
44
+ KazooRubySdk.cache.fetch('auth_response') do
45
+ req = {:data => {:credentials => get_credentials_hash, :realm => self.realm}, :verb => 'PUT'}
46
+ response = pipe.put 'user_auth', req
47
+ response.body
48
+ end
49
+ end
50
+
51
+ def get_credentials_hash
52
+ Digest::MD5.hexdigest("#{KazooRubySdk.configuration.username}:#{KazooRubySdk.configuration.password}")
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,42 @@
1
+ module KazooRubySdk
2
+ class Users < Base
3
+ class << self
4
+ def create(attributes)
5
+ pipe.put do |request|
6
+ request.url "accounts/#{account_id}/users"
7
+ request.headers['X-Auth-Token'] = auth_token
8
+ request.body = { data: attributes }
9
+ end.body
10
+ end
11
+
12
+ def update(user_id, attributes)
13
+ pipe.patch do |request|
14
+ request.url "accounts/#{account_id}/users/#{user_id}"
15
+ request.headers['X-Auth-Token'] = auth_token
16
+ request.body = { data: attributes }
17
+ end.body
18
+ end
19
+
20
+ def list
21
+ pipe.get do |request|
22
+ request.url "accounts/#{account_id}/users"
23
+ request.headers['X-Auth-Token'] = auth_token
24
+ end.body
25
+ end
26
+
27
+ def get(user_id)
28
+ pipe.get do |request|
29
+ request.url "accounts/#{account_id}/users/#{user_id}"
30
+ request.headers['X-Auth-Token'] = auth_token
31
+ end.body
32
+ end
33
+
34
+ def destroy(user_id)
35
+ pipe.delete do |request|
36
+ request.url "accounts/#{account_id}/users/#{user_id}"
37
+ request.headers['X-Auth-Token'] = auth_token
38
+ end.body
39
+ end
40
+ end
41
+ end
42
+ end
@@ -1,3 +1,3 @@
1
1
  module KazooRubySdk
2
- VERSION = "0.1.1"
2
+ VERSION = "1.0.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kazoo-ruby-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aleksey Pohodnya
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-05-05 00:00:00.000000000 Z
11
+ date: 2017-05-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -38,6 +38,76 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: faraday
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '0.12'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '0.12'
55
+ - !ruby/object:Gem::Dependency
56
+ name: faraday_middleware
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.11'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.11'
69
+ - !ruby/object:Gem::Dependency
70
+ name: multi_json
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1.12'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '1.12'
83
+ - !ruby/object:Gem::Dependency
84
+ name: hashie
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '3.5'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '3.5'
97
+ - !ruby/object:Gem::Dependency
98
+ name: yajl-ruby
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '1.3'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '1.3'
41
111
  description: You can specify the data to access your Kazoo server and use the Kazoo
42
112
  API using the methods of this sdk.
43
113
  email:
@@ -47,15 +117,18 @@ extensions: []
47
117
  extra_rdoc_files: []
48
118
  files:
49
119
  - ".gitignore"
120
+ - ".rspec"
50
121
  - Gemfile
51
122
  - LICENSE.txt
52
123
  - README.md
53
124
  - Rakefile
54
125
  - kazoo-ruby-sdk.gemspec
55
126
  - lib/kazoo-ruby-sdk.rb
56
- - lib/kazoo-ruby-sdk/api_session.rb
57
- - lib/kazoo-ruby-sdk/auth_session.rb
58
127
  - lib/kazoo-ruby-sdk/base.rb
128
+ - lib/kazoo-ruby-sdk/configuration.rb
129
+ - lib/kazoo-ruby-sdk/devices.rb
130
+ - lib/kazoo-ruby-sdk/session.rb
131
+ - lib/kazoo-ruby-sdk/users.rb
59
132
  - lib/kazoo-ruby-sdk/version.rb
60
133
  homepage: https://github.com/pohodnya/kazoo-ruby-sdk
61
134
  licenses:
@@ -1,35 +0,0 @@
1
- module KazooRubySdk
2
- class ApiSession < Base
3
- attr_reader :auth_token, :api_url, :realm, :account_id, :owner_id, :pipe
4
-
5
- def initialize(options)
6
- @auth_token = options[:auth_token]
7
- @api_url = options[:api_url]
8
- @realm = options[:realm]
9
- @account_id = options[:account_id]
10
- @owner_id = options[:owner_id]
11
- @pipe = create_conn_object(api_url)
12
- end
13
-
14
- def list_devices()
15
- return pipe.get("accounts/#{account_id}/devices",
16
- 'X-Auth-Token' => auth_token).body
17
- end
18
-
19
- def get_device(device_id)
20
- return pipe.get("accounts/#{account_id}/devices/#{device_id}",
21
- 'X-Auth-Token' => auth_token).body
22
- end
23
-
24
- def get_device_statuses
25
- return pipe.get("accounts/#{account_id}/devices/status",
26
- 'X-Auth-Token' => auth_token).body
27
- end
28
-
29
- def create_device(name)
30
- return pipe.put("accounts/#{account_id}/devices",
31
- {:data => {:name => name}},
32
- 'X-Auth-Token' => auth_token).body
33
- end
34
- end
35
- end
@@ -1,57 +0,0 @@
1
- module KazooRubySdk
2
- class AuthSession < Base
3
- attr_accessor :auth_url, :realm, :username, :password
4
- attr_reader :auth_pipe, :auth_token, :account_id, :owner_id, :api_url, :api_pipe, :api_token
5
-
6
- def initialize
7
- @auth_url = KazooRubySdk.auth_url
8
- @realm = KazooRubySdk.realm
9
- @username = KazooRubySdk.username
10
- @password = KazooRubySdk.password
11
-
12
- @auth_pipe = create_conn_object(auth_url)
13
- end
14
-
15
- def is_authenticated?
16
- return !auth_token.nil?
17
- end
18
-
19
- def new_session
20
- authenticate! unless is_authenticated?
21
- return ApiSession.new(:auth_token => api_token, :api_url => api_url, :realm => realm, :account_id => account_id, :owner_id => owner_id)
22
- end
23
-
24
- def get_credentials_hash
25
- return Digest::MD5.hexdigest("#{username}:#{password}")
26
- end
27
-
28
- def authenticate!
29
- req = {:data => {:credentials => get_credentials_hash, :realm => realm}, :verb => 'PUT'}
30
- response = auth_pipe.put 'user_auth', req
31
- @auth_token = response.body.auth_token
32
- @account_id = response.body.data.account_id
33
- @owner_id = response.body.data.owner_id
34
-
35
- @api_url = select_session_endpoint_app('voip')
36
- @api_pipe = create_conn_object(api_url)
37
- shared_auth
38
- end
39
-
40
- def shared_auth
41
- req = {:data => {:realm => realm, :account_id => account_id, :shared_token => auth_token}, :verb => 'PUT'}
42
- resp = @api_pipe.put 'shared_auth', req
43
- @api_token = resp.body.auth_token
44
- return api_token
45
- end
46
-
47
- def get_endpoint_apps
48
- auth_pipe.get "accounts/#{account_id}/users/#{owner_id}", 'X-Auth-Token' => auth_token
49
- end
50
-
51
- def select_session_endpoint_app(name)
52
- apps = get_endpoint_apps
53
- @api_url = apps.body.data.apps[name].api_url
54
- return api_url
55
- end
56
- end
57
- end