wowza_rest 0.2.3 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a5832e1b90ea446b80f13a40b8e91c28a7a3a17e
4
- data.tar.gz: 01e65cade305ec83ea2cf8f78f85c9a03ec7dd0b
3
+ metadata.gz: f37ae4846ac5b847a83ea42ac030d41d11fa3509
4
+ data.tar.gz: c81253f1e3ae7178cc3502a028aa18726e128629
5
5
  SHA512:
6
- metadata.gz: 1ad3e763386de9a51027aefebdfe9b8312b927e7180dc088b254acdb366740a2199fd8540db57db3aa35eb96c8582a721bf7ef4aa425c6dd92e3cf074bf6af3f
7
- data.tar.gz: 303108a94cb1bbb408a46b164143579ebf1fa1d3918bbae8ba38cd928c382ae84057d6f19b84ea821c8c38fa9be44b9fbf97aab64be19bd58f08cf83b9c6ad2d
6
+ metadata.gz: 6b3fd80dd0f150d059644a768177bbe96eddb31515398fdabb24a5784b9fbcf2506dd5b674c39f66d5c0c54b3be31500b264f3ba46c0671d86c51412a72361e6
7
+ data.tar.gz: 283939b6c666974a600dd701c97da58e6e2c69526608649bd7259c149bf824b7f2bc09c3af08b85995681acc49bd61fdef8c7a4c2c15ce72f713dd26b5edb0a6
data/.rubocop.yml CHANGED
@@ -13,3 +13,6 @@ Documentation:
13
13
 
14
14
  RSpec/NestedGroups:
15
15
  Max: 5
16
+
17
+ Metrics/AbcSize:
18
+ Max: 18
@@ -45,19 +45,22 @@ module WowzaRest
45
45
  private
46
46
 
47
47
  # rubocop:disable Metrics/LineLength
48
+ # rubocop:disable Metrics/MethodLength
48
49
  def apply_update_application_checks(app_name, config)
49
50
  if !app_name.is_a?(String)
50
51
  raise WowzaRest::Errors::InvalidArgumentType,
51
52
  "First argument expected to be String got #{app_name.class} instead"
52
- elsif !config.is_a?(Hash)
53
+ elsif !config.is_a?(Hash) && !config.is_a?(WowzaRest::Data::Application)
53
54
  raise WowzaRest::Errors::InvalidArgumentType,
54
- "Second argument expected to be String got #{config.class} instead"
55
- elsif config.empty?
55
+ "Second argument expected to be Hash or WowzaRest::Data::Application instance,
56
+ got #{config.class} instead"
57
+ elsif config.is_a?(Hash) && config.empty?
56
58
  raise WowzaRest::Errors::InvalidArgument,
57
- 'Configuration hash must have at least one attribute'
59
+ 'When Configuration passeed as hash it must contains at least one attribute'
58
60
  end
59
61
  end
60
62
  # rubocop:enable Metrics/LineLength
63
+ # rubocop:enable Metrics/MethodLength
61
64
 
62
65
  # rubocop:disable Metrics/MethodLength
63
66
  # rubocop:disable Metrics/LineLength
@@ -1,6 +1,7 @@
1
1
  require 'wowza_rest/api'
2
2
  require 'wowza_rest/connection'
3
3
  require 'wowza_rest/errors'
4
+ require_relative 'data/server_status'
4
5
 
5
6
  module WowzaRest
6
7
  class Client
@@ -20,7 +21,8 @@ module WowzaRest
20
21
  end
21
22
 
22
23
  def server_status
23
- connection.request(:get, '/status', base_uri: server_path).parsed_response
24
+ response = connection.request(:get, '/status', base_uri: server_path)
25
+ WowzaRest::Data::ServerStatus.new(response.parsed_response)
24
26
  rescue
25
27
  nil
26
28
  end
@@ -7,20 +7,22 @@ module WowzaRest
7
7
  :drm_config, :transcoder_config, :modules
8
8
 
9
9
  def initialize(attrs = {})
10
- initialize_object_attrs(attrs)
10
+ keys_reader :securityConfig, :streamConfig, :dvrConfig,
11
+ :drmConfig, :transcoderConfig, :modules
12
+ initialize_object_attrs(attrs || {})
11
13
  super(attrs)
12
14
  end
13
15
 
14
- class TranscoderConfig < Base
15
- attr_reader :templates
16
- def initialize(attrs = {})
17
- @templates = map_array_objects(
18
- attrs.delete('templates')['templates'], Template
19
- )
20
- super(attrs)
16
+ def to_h
17
+ super() do |k, arr|
18
+ if k == :@modules
19
+ {
20
+ moduleList: objects_array_to_hash_array(arr)
21
+ }
22
+ else
23
+ objects_array_to_hash_array(arr)
24
+ end
21
25
  end
22
-
23
- class Template < Base; end
24
26
  end
25
27
 
26
28
  class SecurityConfig < Base; end
@@ -29,9 +31,43 @@ module WowzaRest
29
31
  class DRMConfig < Base; end
30
32
  class Module < Base; end
31
33
 
34
+ class TranscoderConfig < Base
35
+ attr_reader :templates
36
+
37
+ def initialize(attrs = {})
38
+ if !attrs.nil? && attrs['templates']
39
+ keys_reader :templates
40
+ @templates = wrap_array_objects(
41
+ attrs.delete('templates')['templates'], Template
42
+ )
43
+ end
44
+ super(attrs)
45
+ end
46
+
47
+ def to_h
48
+ super() do |k, arr|
49
+ if k == :@templates
50
+ {
51
+ templates: objects_array_to_hash_array(arr)
52
+ }
53
+ else
54
+ objects_array_to_hash_array(arr)
55
+ end
56
+ end
57
+ end
58
+
59
+ class Template < Base; end
60
+ end
61
+
32
62
  private
33
63
 
64
+ # rubocop:disable Metrics/MethodLength
34
65
  def initialize_object_attrs(attrs)
66
+ if attrs['modules']
67
+ @modules = wrap_array_objects(
68
+ attrs.delete('modules')['moduleList'], Module
69
+ )
70
+ end
35
71
  @security_config = SecurityConfig.new(attrs.delete('securityConfig'))
36
72
  @stream_config = StreamConfig.new(attrs.delete('streamConfig'))
37
73
  @dvr_config = DVRConfig.new(attrs.delete('dvrConfig'))
@@ -39,9 +75,6 @@ module WowzaRest
39
75
  @transcoder_config = TranscoderConfig.new(
40
76
  attrs.delete('transcoderConfig')
41
77
  )
42
- @modules = map_array_objects(
43
- attrs.delete('modules')['moduleList'], Module
44
- )
45
78
  end
46
79
  end
47
80
  end
@@ -2,14 +2,15 @@ module WowzaRest
2
2
  module Data
3
3
  class Base
4
4
  def initialize(attrs = {})
5
- setup_attributes(attrs)
5
+ setup_attributes(attrs || {})
6
6
  end
7
7
 
8
8
  def setup_attributes(attrs)
9
9
  attrs.each do |k, v|
10
- define_attribute_getter(k.underscore)
11
- define_attribute_setter(k.underscore)
12
- instance_variable_set("@#{k.underscore}", v)
10
+ define_attribute_getter(k.to_s.underscore)
11
+ define_attribute_setter(k.to_s.underscore)
12
+ define_key_getter(k.to_s)
13
+ instance_variable_set("@#{k.to_s.underscore}", v)
13
14
  end
14
15
  end
15
16
 
@@ -25,8 +26,56 @@ module WowzaRest
25
26
  end
26
27
  end
27
28
 
28
- def map_array_objects(arr, klass)
29
- arr.map { |obj| klass.new(obj) }
29
+ def define_key_getter(key)
30
+ define_singleton_method("#{key.underscore}_key") do
31
+ key.to_s
32
+ end
33
+ end
34
+
35
+ def keys_reader(*args)
36
+ args.each do |arg|
37
+ define_key_getter(arg.to_s)
38
+ end
39
+ end
40
+
41
+ def wrap_array_objects(arr, klass)
42
+ arr.map { |obj| klass.new(obj) } unless arr.nil?
43
+ end
44
+
45
+ def objects_array_to_hash_array(arr)
46
+ return if arr.nil?
47
+ arr.map do |obj|
48
+ obj.is_a?(WowzaRest::Data::Base) ? obj.to_h : obj
49
+ end
50
+ end
51
+
52
+ # rubocop:disable Metrics/MethodLength
53
+ def to_h
54
+ instance_variables.each_with_object({}) do |var, hash|
55
+ value = instance_variable_get(var)
56
+ hash[send("#{var.to_s.delete('@')}_key")] =
57
+ if value.is_a?(WowzaRest::Data::Base)
58
+ instance_variable_get(var).to_h
59
+ elsif value.is_a?(Array)
60
+ if block_given?
61
+ yield(var, instance_variable_get(var))
62
+ else
63
+ objects_array_to_hash_array(instance_variable_get(var))
64
+ end
65
+ else
66
+ instance_variable_get(var)
67
+ end
68
+ end
69
+ end
70
+ # rubocop:enable Metrics/MethodLength
71
+ alias to_hash to_h
72
+
73
+ def to_json
74
+ to_h.to_json
75
+ end
76
+
77
+ def include?(attr_name)
78
+ to_h.include?(attr_name.to_s)
30
79
  end
31
80
  end
32
81
  end
@@ -6,6 +6,7 @@ module WowzaRest
6
6
  attr_reader :connection_count
7
7
 
8
8
  def initialize(attrs = {})
9
+ keys_reader :connectionCount
9
10
  @connection_count = ConnectionCount.new(attrs.delete('connectionCount'))
10
11
  super(attrs)
11
12
  end
@@ -8,16 +8,18 @@ module WowzaRest
8
8
 
9
9
  # rubocop:disable Metrics/MethodLength
10
10
  def initialize(attrs = {})
11
- @incoming_streams = map_array_objects(
11
+ keys_reader :incomingStreams, :outgoingStreams,
12
+ :recorders, :streamGroups
13
+ @incoming_streams = wrap_array_objects(
12
14
  attrs.delete('incomingStreams'), IncomingStream
13
15
  )
14
- @outgoing_streams = map_array_objects(
16
+ @outgoing_streams = wrap_array_objects(
15
17
  attrs.delete('outgoingStreams'), OutgoingStream
16
18
  )
17
- @recorders = map_array_objects(
19
+ @recorders = wrap_array_objects(
18
20
  attrs.delete('recorders'), Recorder
19
21
  )
20
- @stream_groups = map_array_objects(
22
+ @stream_groups = wrap_array_objects(
21
23
  attrs.delete('streamGroups'), StreamGroup
22
24
  )
23
25
  super(attrs)
@@ -0,0 +1,6 @@
1
+ require_relative 'base'
2
+ module WowzaRest
3
+ module Data
4
+ class ServerStatus < Base; end
5
+ end
6
+ end
@@ -1,3 +1,3 @@
1
1
  module WowzaRest
2
- VERSION = '0.2.3'.freeze
2
+ VERSION = '0.2.4'.freeze
3
3
  end
data/wowza_rest.gemspec CHANGED
@@ -40,6 +40,7 @@ Gem::Specification.new do |spec|
40
40
  spec.add_development_dependency 'dotenv'
41
41
  spec.add_development_dependency 'rubocop'
42
42
  spec.add_development_dependency 'rubocop-rspec'
43
+ spec.add_development_dependency 'rspec-json_expectations'
43
44
 
44
45
  spec.add_dependency 'httparty'
45
46
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wowza_rest
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hazem Taha
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-07-18 00:00:00.000000000 Z
11
+ date: 2017-07-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -136,6 +136,20 @@ dependencies:
136
136
  - - ">="
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: rspec-json_expectations
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
139
153
  - !ruby/object:Gem::Dependency
140
154
  name: httparty
141
155
  requirement: !ruby/object:Gem::Requirement
@@ -179,6 +193,7 @@ files:
179
193
  - lib/wowza_rest/data/base.rb
180
194
  - lib/wowza_rest/data/incoming_stream_stats.rb
181
195
  - lib/wowza_rest/data/instance.rb
196
+ - lib/wowza_rest/data/server_status.rb
182
197
  - lib/wowza_rest/errors.rb
183
198
  - lib/wowza_rest/instances.rb
184
199
  - lib/wowza_rest/publishers.rb