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 +4 -4
- data/.rspec +1 -0
- data/Gemfile +5 -1
- data/README.md +22 -12
- data/kazoo-ruby-sdk.gemspec +5 -0
- data/lib/kazoo-ruby-sdk.rb +22 -3
- data/lib/kazoo-ruby-sdk/base.rb +28 -10
- data/lib/kazoo-ruby-sdk/configuration.rb +5 -0
- data/lib/kazoo-ruby-sdk/devices.rb +49 -0
- data/lib/kazoo-ruby-sdk/session.rb +56 -0
- data/lib/kazoo-ruby-sdk/users.rb +42 -0
- data/lib/kazoo-ruby-sdk/version.rb +1 -1
- metadata +77 -4
- data/lib/kazoo-ruby-sdk/api_session.rb +0 -35
- data/lib/kazoo-ruby-sdk/auth_session.rb +0 -57
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 18dd15e7663fd59b3e8b94c0ad156e1d0ba180a5
|
4
|
+
data.tar.gz: fb0b1cdbe45f825110df53d86781d34b44d27978
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4afe2bec7fc29eabeea036dc3ba0a471acdc60fc6b907da3bb27b015b626045c84331d86d510761ba1ffc9d77db863fcd28a64fcd779e994b11c556072e114dc
|
7
|
+
data.tar.gz: 125715ff7f377cc991107d46d35b62cd6ac46c7def93d0fcc927d3b21e1c9cb6aa74abe7d1b1cb31c9856a516e1b8d899d64472586d67440b49f8e21de7f4f59
|
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--require spec_helper
|
data/Gemfile
CHANGED
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.
|
26
|
-
|
27
|
-
|
28
|
-
|
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
|
-
|
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 =
|
37
|
+
device = KazooRubySdk::Devices.get(device_id)
|
38
38
|
```
|
39
39
|
|
40
40
|
## List of methods
|
41
41
|
|
42
|
-
|
43
|
-
*
|
44
|
-
*
|
45
|
-
*
|
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
|
|
data/kazoo-ruby-sdk.gemspec
CHANGED
@@ -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
|
data/lib/kazoo-ruby-sdk.rb
CHANGED
@@ -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/
|
8
|
-
require 'kazoo-ruby-sdk/
|
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 :
|
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
|
data/lib/kazoo-ruby-sdk/base.rb
CHANGED
@@ -1,15 +1,33 @@
|
|
1
1
|
module KazooRubySdk
|
2
2
|
class Base
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
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,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
|
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.
|
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-
|
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
|