alula-ruby 0.52.0 → 0.55.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rspec +0 -2
- data/README.md +18 -10
- data/VERSION.md +3 -0
- data/alula.gemspec +5 -4
- data/lib/alula/api_operations/request.rb +1 -1
- data/lib/alula/client.rb +51 -76
- data/lib/alula/client_configuration.rb +62 -0
- data/lib/alula/resource_attributes.rb +1 -4
- data/lib/alula/resources/feature_plan.rb +1 -1
- data/lib/alula/resources/video/base_resource.rb +51 -0
- data/lib/alula/resources/video/device.rb +24 -0
- data/lib/alula/version.rb +1 -1
- data/lib/alula.rb +7 -3
- metadata +44 -27
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7c65ba0c26beba1371c3637219cc8e0177f6b2f75d21d74a1f08173f7ddd9ae4
|
4
|
+
data.tar.gz: f53a3c944df2be8b2db9b6c13caddcf919706de53b38f3c18c7d5621bbb3b48e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c63fd1baee26d1c821a2787fd7f2ab26ed76292e11c74b6148a1f567b1c25a282d28509d3cd3ed4e8be9b55b4f89dfd1e4374377588af2c59e87179975678387
|
7
|
+
data.tar.gz: 296cde15d36f05120a947fcaaedaf9f8dfe0f95d60bce233178ff84eca65f2c881ab301bf1830594166b8079e445bc3144afc5f2b5147091193014dbdaee397f
|
data/.rspec
CHANGED
data/README.md
CHANGED
@@ -40,11 +40,22 @@ creds = Alula::Oauth.authenticate(username: "a username", password: "a password"
|
|
40
40
|
```
|
41
41
|
|
42
42
|
## Configuring
|
43
|
-
|
43
|
+
There are two types of settings in the `Alula::Client` configuration:
|
44
|
+
The first one are the ones that will have a fixed value in the application lifecicle so its better to put them in an initializer.
|
45
|
+
```ruby
|
46
|
+
Alula::Client.configure do |c|
|
47
|
+
c.api_key = # your API key
|
48
|
+
c.debug = # if set to true will log requests to the API
|
49
|
+
c.user_agent = # A short name for your script/application
|
50
|
+
end
|
51
|
+
```
|
52
|
+
The second one are the ones that are stored in the request Rack env, so those need to set on each request (to the application).
|
44
53
|
```ruby
|
45
|
-
Alula::Client.
|
46
|
-
|
47
|
-
|
54
|
+
Alula::Client.configure do |d|
|
55
|
+
c.api_key = # your API key
|
56
|
+
c.role = # User/Customer role
|
57
|
+
c.customer_id = # The user_id, optional, only for video API requests
|
58
|
+
end
|
48
59
|
```
|
49
60
|
|
50
61
|
## Usage
|
@@ -52,7 +63,7 @@ Alula::Client.user_agent = A short name for your script/application
|
|
52
63
|
Once you have obtained an access token, configure the client to use that token. You should perform this initialization at the start of every request, and at the start of any thread that performs work. The Alula-Ruby client uses the `RequestStore` gem to stash its configuration data in `Thread.current`, so keep this limitation in mind.
|
53
64
|
|
54
65
|
```ruby
|
55
|
-
Alula::Client.api_key = "your access token"
|
66
|
+
Alula::Client.config.api_key = "your access token"
|
56
67
|
```
|
57
68
|
|
58
69
|
If you need to save any records, you will also need to tell the `Alula::Client` about your users' authorized role. Depending on the role certain fields may be writeable or protected. You can set your role one of 3 ways:
|
@@ -61,13 +72,10 @@ If you need to save any records, you will also need to tell the `Alula::Client`
|
|
61
72
|
myself = Alula::Self.retrieve
|
62
73
|
|
63
74
|
# The user role is inferred from the Alula::Self object
|
64
|
-
Alula::Client.role = myself
|
75
|
+
Alula::Client.config.role = myself
|
65
76
|
|
66
77
|
# Explicitly set the role via a role symbol
|
67
|
-
Alula::Client.role = :dealer
|
68
|
-
|
69
|
-
# Explicitly set the role via a u_type integer
|
70
|
-
Alula::Client.u_type = 8
|
78
|
+
Alula::Client.config.role = :dealer
|
71
79
|
```
|
72
80
|
|
73
81
|
Any method will do, you just need to perform one of these prior to attempting to save a resource. Role symbols map to uType resources. The Alula Gem supports the following roles & their corrisponding uType:
|
data/VERSION.md
CHANGED
@@ -84,3 +84,6 @@
|
|
84
84
|
| v0.50.1 | 2022-03-21 | Publishes gem to Github and Rubygems |
|
85
85
|
| v0.51.0 | 2022-03-29 | Be able to delete Device Programs |
|
86
86
|
| v0.52.0 | 2022-06-15 | Filter receiver connections based on station id |
|
87
|
+
| v0.53.0 | 2022-06-15 | Filter feature plans on name |
|
88
|
+
| v0.54.0 | 2022-06-21 | Add support for devices from the video API |
|
89
|
+
| v0.55.0 | 2022-06-25 | Add some devices helpers and improves specs |
|
data/alula.gemspec
CHANGED
@@ -27,12 +27,13 @@ Gem::Specification.new do |spec|
|
|
27
27
|
spec.add_dependency "httparty", "~> 0.18.1"
|
28
28
|
spec.add_dependency 'request_store', '~> 1.0'
|
29
29
|
|
30
|
+
spec.add_development_dependency "activesupport"
|
30
31
|
spec.add_development_dependency "bundler", "~> 2.0"
|
31
|
-
spec.add_development_dependency "rake", "~> 10.0"
|
32
|
-
spec.add_development_dependency "rspec", "~> 3.0"
|
33
|
-
spec.add_development_dependency "nokogiri", "~> 1.10.3"
|
34
32
|
spec.add_development_dependency "dotenv"
|
35
33
|
spec.add_development_dependency "guard-rspec"
|
36
|
-
spec.add_development_dependency "
|
34
|
+
spec.add_development_dependency "nokogiri", "~> 1.10.3"
|
35
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
36
|
+
spec.add_development_dependency "rspec", "~> 3.0"
|
37
|
+
spec.add_development_dependency "simplecov", "~> 0.21.2"
|
37
38
|
spec.add_development_dependency "timecop"
|
38
39
|
end
|
data/lib/alula/client.rb
CHANGED
@@ -5,47 +5,24 @@ module Alula
|
|
5
5
|
class Client
|
6
6
|
include HTTParty
|
7
7
|
class << self
|
8
|
-
# Has pseudo accessors :api_key, :api_url, :user_agent, :debug
|
9
8
|
DEFAULT_CUSTOM_OPTIONS = {
|
10
9
|
omitRelationships: true
|
11
10
|
}
|
12
11
|
|
13
|
-
def
|
14
|
-
|
15
|
-
|
16
|
-
ensure_method_allowable(http_method)
|
17
|
-
|
18
|
-
raise Alula::NotConfiguredError, 'did you forget to set the Alula::Client.api_url config option?' unless api_url
|
19
|
-
|
20
|
-
request_opts = {
|
21
|
-
headers: {
|
22
|
-
'Authorization': "Bearer #{api_key}",
|
23
|
-
'User-Agent': "#{user_agent || 'No Agent Set'}/alula-ruby v#{Alula::VERSION}"
|
24
|
-
}
|
25
|
-
}.merge(opts)
|
12
|
+
def config
|
13
|
+
@_config ||= Alula::ClientConfiguration.new
|
14
|
+
end
|
26
15
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
:post
|
31
|
-
request_opts[:body] = opts[:multipart] ? filters : JSON.generate(filters)
|
32
|
-
when :get
|
33
|
-
if resource_path.match(%r{^/rest})
|
34
|
-
request_opts = request_opts.merge build_rest_options(filters)
|
35
|
-
elsif resource_path.match(%r{^/rpc})
|
36
|
-
request_opts = request_opts.merge build_rest_options(filters)
|
37
|
-
end
|
38
|
-
when :delete
|
39
|
-
# Nothing special
|
40
|
-
end
|
16
|
+
def configure
|
17
|
+
yield config if block_given?
|
18
|
+
end
|
41
19
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
end
|
20
|
+
def request(http_method, resource_path, filters = {}, opts = {})
|
21
|
+
validate_request!(http_method, resource_path)
|
22
|
+
request_opts = build_options(http_method, resource_path, filters, opts)
|
46
23
|
|
47
24
|
# TODO: Handle network failures
|
48
|
-
response = make_request(http_method, api_url + resource_path, request_opts)
|
25
|
+
response = make_request(http_method, config.api_url + resource_path, request_opts)
|
49
26
|
|
50
27
|
begin
|
51
28
|
resp = AlulaResponse.from_httparty_response(response)
|
@@ -57,62 +34,56 @@ module Alula
|
|
57
34
|
resp
|
58
35
|
end
|
59
36
|
|
60
|
-
|
61
|
-
send(http_method, full_url, request_opts)
|
62
|
-
end
|
63
|
-
|
64
|
-
#
|
65
|
-
# Using RequestStore so we're thread safe even with our non-thread-safe architecture :(
|
66
|
-
%i[api_key api_url user_agent debug].each do |prop|
|
67
|
-
define_method(prop) do
|
68
|
-
RequestStore.store["alula_#{prop}"]
|
69
|
-
end
|
70
|
-
|
71
|
-
define_method("#{prop}=") do |value|
|
72
|
-
RequestStore.store["alula_#{prop}"] = value
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
#
|
77
|
-
# Stash the user type as a role for us to infer from later
|
78
|
-
# You can set a symbolized role via role = :user, or provide the string userType
|
79
|
-
# We cast to a symbolized role for ease of use in consumers.
|
80
|
-
def role=(user_type)
|
81
|
-
unless user_type.is_a?(Symbol) || user_type.is_a?(String)
|
82
|
-
raise Alula::InvalidRoleError, 'Role must be symbol or string'
|
83
|
-
end
|
84
|
-
|
85
|
-
RequestStore.store['alula_role'] = Util.underscore(user_type).to_sym
|
86
|
-
end
|
37
|
+
private
|
87
38
|
|
88
|
-
def
|
89
|
-
|
39
|
+
def validate_request!(http_method, resource_path)
|
40
|
+
config.ensure_api_key_set
|
41
|
+
config.ensure_api_url_set
|
42
|
+
config.ensure_customer_id_set if resource_path.match(%r{^/video})
|
43
|
+
ensure_method_allowable(http_method)
|
44
|
+
config.ensure_role_set if %i[patch post put].include? http_method
|
90
45
|
end
|
91
46
|
|
92
|
-
def
|
93
|
-
|
94
|
-
raise Alula::NotConfiguredError,
|
95
|
-
'Set your API access token before making requests with Alula::Client.api_key = {access_token}'
|
96
|
-
end
|
47
|
+
def make_request(http_method, full_url, request_opts)
|
48
|
+
send(http_method, full_url, request_opts)
|
97
49
|
end
|
98
50
|
|
99
51
|
def ensure_method_allowable(http_method)
|
100
52
|
unless %i[get post put patch delete].include?(http_method)
|
101
|
-
raise "Unable to send a request with #{http_method} http method
|
53
|
+
raise "Unable to send a request with #{http_method} http method"
|
102
54
|
end
|
103
55
|
end
|
104
56
|
|
105
|
-
def
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
57
|
+
def build_options(http_method, resource_path, filters = {}, opts = {})
|
58
|
+
request_opts = {
|
59
|
+
headers: {
|
60
|
+
'Authorization': "Bearer #{Alula::Client.config.api_key}",
|
61
|
+
'User-Agent': "#{Alula::Client.config.user_agent || 'No Agent Set'}/alula-ruby v#{Alula::VERSION}"
|
62
|
+
}
|
63
|
+
}.merge(opts)
|
110
64
|
|
111
|
-
|
65
|
+
request_opts[:headers]['Content-Type'] = 'application/json' unless opts[:multipart]
|
66
|
+
case http_method
|
67
|
+
when :patch,
|
68
|
+
:post
|
69
|
+
request_opts[:body] = opts[:multipart] ? filters : JSON.generate(filters)
|
70
|
+
when :get
|
71
|
+
if resource_path.match(%r{^/(rest|rpc)})
|
72
|
+
request_opts = request_opts.merge build_rest_options(filters)
|
73
|
+
elsif resource_path.match(%r{^/video})
|
74
|
+
add_customer_id(request_opts)
|
75
|
+
end
|
76
|
+
when :delete
|
77
|
+
# Nothing special
|
112
78
|
end
|
113
|
-
end
|
114
79
|
|
115
|
-
|
80
|
+
if Alula::Client.config.debug
|
81
|
+
request_opts[:debug_output] = Alula.logger
|
82
|
+
logger Alula.logger, :info
|
83
|
+
end
|
84
|
+
|
85
|
+
request_opts
|
86
|
+
end
|
116
87
|
|
117
88
|
def build_rest_options(filters)
|
118
89
|
request_opts = {}
|
@@ -137,6 +108,10 @@ module Alula
|
|
137
108
|
def build_rpc_options(filters)
|
138
109
|
filters
|
139
110
|
end
|
111
|
+
|
112
|
+
def add_customer_id(request_opts)
|
113
|
+
request_opts[:query] = { 'customerId' => config.customer_id }
|
114
|
+
end
|
140
115
|
end
|
141
116
|
end
|
142
117
|
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
module Alula
|
2
|
+
class ClientConfiguration
|
3
|
+
attr_accessor :api_url, :debug, :user_agent
|
4
|
+
REQUEST_ATTRIBUTES = %i[api_key customer_id]
|
5
|
+
|
6
|
+
# Using RequestStore so we're thread safe even with our non-thread-safe architecture :(
|
7
|
+
REQUEST_ATTRIBUTES.each do |prop|
|
8
|
+
define_method(prop) do
|
9
|
+
RequestStore.store["alula_#{prop}"]
|
10
|
+
end
|
11
|
+
|
12
|
+
define_method("#{prop}=") do |value|
|
13
|
+
RequestStore.store["alula_#{prop}"] = value
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
# Stash the user type as a role for us to infer from later
|
18
|
+
# You can set a symbolized role via role = :user, or provide the string userType
|
19
|
+
# We cast to a symbolized role for ease of use in consumers.
|
20
|
+
def role=(user_type)
|
21
|
+
unless user_type.is_a?(Symbol) || user_type.is_a?(String)
|
22
|
+
raise Alula::InvalidRoleError, 'Role must be symbol or string'
|
23
|
+
end
|
24
|
+
|
25
|
+
RequestStore.store['alula_role'] = Util.underscore(user_type).to_sym
|
26
|
+
end
|
27
|
+
|
28
|
+
def role
|
29
|
+
RequestStore.store['alula_role']
|
30
|
+
end
|
31
|
+
|
32
|
+
def ensure_api_key_set
|
33
|
+
if api_key.nil?
|
34
|
+
raise Alula::NotConfiguredError,
|
35
|
+
'Set your API access token before making requests with Alula::Client.config.api_key = {access_token}'
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def ensure_api_url_set
|
40
|
+
if api_url.nil?
|
41
|
+
raise Alula::NotConfiguredError, 'did you forget to set the Alula::Client.config.api_url config option?'
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def ensure_customer_id_set
|
46
|
+
unless customer_id
|
47
|
+
raise Alula::NotConfiguredError,
|
48
|
+
'Set your customer_id before making requests to the video API'
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def ensure_role_set
|
53
|
+
if role.nil?
|
54
|
+
message = 'User role not configured! You must set '\
|
55
|
+
'Alula::Client.config.role '\
|
56
|
+
'before attempting to save any resources'
|
57
|
+
|
58
|
+
raise Alula::NotConfiguredError, message
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
@@ -11,14 +11,11 @@ module Alula
|
|
11
11
|
base.include(InstanceMethods)
|
12
12
|
end
|
13
13
|
|
14
|
-
|
15
14
|
#
|
16
15
|
# Class methods for defining how fields and types work
|
17
16
|
# NOTE: We're not using real getters and setters here. I want the method signature
|
18
17
|
# to match how most other Ruby class configuration is done, and that is with
|
19
18
|
# simple methods that take params.
|
20
|
-
|
21
|
-
|
22
19
|
def resource_path(name)
|
23
20
|
@resource_path = name
|
24
21
|
end
|
@@ -148,7 +145,7 @@ module Alula
|
|
148
145
|
end
|
149
146
|
|
150
147
|
def field_patchable?(opts, record_persisted)
|
151
|
-
user_role = Alula::Client.role
|
148
|
+
user_role = Alula::Client.config.role
|
152
149
|
|
153
150
|
# different permission arrays are used for updates vs creates
|
154
151
|
perm_key = record_persisted == true ? :patchable_by : :creatable_by
|
@@ -0,0 +1,51 @@
|
|
1
|
+
module Alula
|
2
|
+
module Video
|
3
|
+
class BaseResource < Alula::ApiResource
|
4
|
+
extend Alula::ResourceAttributes
|
5
|
+
|
6
|
+
class << self
|
7
|
+
def api_name(name = nil)
|
8
|
+
if name
|
9
|
+
@api_name = name
|
10
|
+
elsif @api_name
|
11
|
+
@api_name
|
12
|
+
else
|
13
|
+
superclass.api_name
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
# Infer resource name from classname if not provided
|
18
|
+
def resource_name(name = nil)
|
19
|
+
if name
|
20
|
+
@resource_name = name
|
21
|
+
elsif @resource_name
|
22
|
+
@resource_name
|
23
|
+
else
|
24
|
+
@resource_name = self.name.split('::').last.downcase.to_sym
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def resource_url(id = nil)
|
29
|
+
"/#{api_name}/v1/#{resource_name}/#{id}"
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
api_name :video
|
34
|
+
|
35
|
+
def construct_from(json_object)
|
36
|
+
@raw_data = json_object.dup
|
37
|
+
@values = json_object
|
38
|
+
|
39
|
+
self.id = json_object['id'] unless [nil, ''].include?(json_object['id'])
|
40
|
+
|
41
|
+
@dirty_attributes = Set.new
|
42
|
+
@errors = ModelErrors.new(self.class)
|
43
|
+
|
44
|
+
@related_models = {}
|
45
|
+
cache_links(json_object['relationships'] || {})
|
46
|
+
|
47
|
+
self
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Alula
|
2
|
+
module Video
|
3
|
+
class Device < Alula::Video::BaseResource
|
4
|
+
extend Alula::ApiOperations::Request
|
5
|
+
|
6
|
+
field :account_id, type: :string
|
7
|
+
field :active, type: :boolean
|
8
|
+
field :brand, type: :string
|
9
|
+
field :hardware_id, type: :string
|
10
|
+
field :manufacturer, type: :string
|
11
|
+
field :name, type: :string
|
12
|
+
field :serial_number, type: :string
|
13
|
+
field :verification_code, type: :string
|
14
|
+
|
15
|
+
def is_jsw?
|
16
|
+
manufacturer == 'jsw'
|
17
|
+
end
|
18
|
+
|
19
|
+
def is_hik?
|
20
|
+
manufacturer == 'hikvision'
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
data/lib/alula/version.rb
CHANGED
data/lib/alula.rb
CHANGED
@@ -21,8 +21,9 @@ require_relative 'alula/query_interface'
|
|
21
21
|
require_relative 'alula/util'
|
22
22
|
require_relative 'alula/rate_limit'
|
23
23
|
|
24
|
-
require_relative 'alula/errors'
|
25
24
|
require_relative 'alula/client'
|
25
|
+
require_relative 'alula/client_configuration'
|
26
|
+
require_relative 'alula/errors'
|
26
27
|
require_relative 'alula/list_object'
|
27
28
|
require_relative 'alula/oauth'
|
28
29
|
|
@@ -61,6 +62,9 @@ require_relative 'alula/resources/feature_planvideo'
|
|
61
62
|
require_relative 'alula/resources/feature_price'
|
62
63
|
require_relative 'alula/resources/feature_bysubject'
|
63
64
|
|
65
|
+
require_relative 'alula/resources/video/base_resource'
|
66
|
+
require_relative 'alula/resources/video/device'
|
67
|
+
|
64
68
|
require_relative 'alula/procedures/device_cellular_history_proc'
|
65
69
|
require_relative 'alula/procedures/device_rateplan_get_proc'
|
66
70
|
require_relative 'alula/procedures/device_register_proc'
|
@@ -126,10 +130,10 @@ module Alula
|
|
126
130
|
end
|
127
131
|
|
128
132
|
def self.logger
|
129
|
-
|
133
|
+
@@logger ||= defined?(Rails) ? Rails.logger : Logger.new(STDOUT)
|
130
134
|
end
|
131
135
|
|
132
136
|
def self.logger=(logger)
|
133
|
-
|
137
|
+
@@logger = logger
|
134
138
|
end
|
135
139
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: alula-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.55.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Titus Johnson
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-06-
|
11
|
+
date: 2022-06-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '1.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: activesupport
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: bundler
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -53,33 +67,33 @@ dependencies:
|
|
53
67
|
- !ruby/object:Gem::Version
|
54
68
|
version: '2.0'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
70
|
+
name: dotenv
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
58
72
|
requirements:
|
59
|
-
- - "
|
73
|
+
- - ">="
|
60
74
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
75
|
+
version: '0'
|
62
76
|
type: :development
|
63
77
|
prerelease: false
|
64
78
|
version_requirements: !ruby/object:Gem::Requirement
|
65
79
|
requirements:
|
66
|
-
- - "
|
80
|
+
- - ">="
|
67
81
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
82
|
+
version: '0'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
|
-
name: rspec
|
84
|
+
name: guard-rspec
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
72
86
|
requirements:
|
73
|
-
- - "
|
87
|
+
- - ">="
|
74
88
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
89
|
+
version: '0'
|
76
90
|
type: :development
|
77
91
|
prerelease: false
|
78
92
|
version_requirements: !ruby/object:Gem::Requirement
|
79
93
|
requirements:
|
80
|
-
- - "
|
94
|
+
- - ">="
|
81
95
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
96
|
+
version: '0'
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
name: nokogiri
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -95,47 +109,47 @@ dependencies:
|
|
95
109
|
- !ruby/object:Gem::Version
|
96
110
|
version: 1.10.3
|
97
111
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
112
|
+
name: rake
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
100
114
|
requirements:
|
101
|
-
- - "
|
115
|
+
- - "~>"
|
102
116
|
- !ruby/object:Gem::Version
|
103
|
-
version: '0'
|
117
|
+
version: '10.0'
|
104
118
|
type: :development
|
105
119
|
prerelease: false
|
106
120
|
version_requirements: !ruby/object:Gem::Requirement
|
107
121
|
requirements:
|
108
|
-
- - "
|
122
|
+
- - "~>"
|
109
123
|
- !ruby/object:Gem::Version
|
110
|
-
version: '0'
|
124
|
+
version: '10.0'
|
111
125
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
126
|
+
name: rspec
|
113
127
|
requirement: !ruby/object:Gem::Requirement
|
114
128
|
requirements:
|
115
|
-
- - "
|
129
|
+
- - "~>"
|
116
130
|
- !ruby/object:Gem::Version
|
117
|
-
version: '0'
|
131
|
+
version: '3.0'
|
118
132
|
type: :development
|
119
133
|
prerelease: false
|
120
134
|
version_requirements: !ruby/object:Gem::Requirement
|
121
135
|
requirements:
|
122
|
-
- - "
|
136
|
+
- - "~>"
|
123
137
|
- !ruby/object:Gem::Version
|
124
|
-
version: '0'
|
138
|
+
version: '3.0'
|
125
139
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
140
|
+
name: simplecov
|
127
141
|
requirement: !ruby/object:Gem::Requirement
|
128
142
|
requirements:
|
129
|
-
- - "
|
143
|
+
- - "~>"
|
130
144
|
- !ruby/object:Gem::Version
|
131
|
-
version:
|
145
|
+
version: 0.21.2
|
132
146
|
type: :development
|
133
147
|
prerelease: false
|
134
148
|
version_requirements: !ruby/object:Gem::Requirement
|
135
149
|
requirements:
|
136
|
-
- - "
|
150
|
+
- - "~>"
|
137
151
|
- !ruby/object:Gem::Version
|
138
|
-
version:
|
152
|
+
version: 0.21.2
|
139
153
|
- !ruby/object:Gem::Dependency
|
140
154
|
name: timecop
|
141
155
|
requirement: !ruby/object:Gem::Requirement
|
@@ -187,6 +201,7 @@ files:
|
|
187
201
|
- lib/alula/api_operations/save.rb
|
188
202
|
- lib/alula/api_resource.rb
|
189
203
|
- lib/alula/client.rb
|
204
|
+
- lib/alula/client_configuration.rb
|
190
205
|
- lib/alula/errors.rb
|
191
206
|
- lib/alula/filter_builder.rb
|
192
207
|
- lib/alula/helpers/device_attribute_translations.rb
|
@@ -250,6 +265,8 @@ files:
|
|
250
265
|
- lib/alula/resources/user_preferences.rb
|
251
266
|
- lib/alula/resources/user_pushtoken.rb
|
252
267
|
- lib/alula/resources/user_videoprofile.rb
|
268
|
+
- lib/alula/resources/video/base_resource.rb
|
269
|
+
- lib/alula/resources/video/device.rb
|
253
270
|
- lib/alula/rest_resource.rb
|
254
271
|
- lib/alula/rpc_resource.rb
|
255
272
|
- lib/alula/rpc_response.rb
|