wowza_rest 0.2.1 → 0.2.2

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: d1d6ac022d497c0df86c840fe1f167c6cd26d92a
4
- data.tar.gz: 174fa11b9adfa35fb5f3d4ab0949ae96b10c3455
3
+ metadata.gz: 8ed08a4543064704cfc079d99b01ca482ac3b8a1
4
+ data.tar.gz: 37bb85b09e1e544019344e88ec2ecee4792bc316
5
5
  SHA512:
6
- metadata.gz: 8a677ec79f9d8af0d4d8277460f9e36440a8fea6af6239012a451bd54c8cbceb6c33a34aa84d4e59f132b60497cd5edf6af58214cd6325d949f8c1dd9c6bdf0e
7
- data.tar.gz: 2ca6f6e2c35b71d61d003eaa6372babb6ef896c4a023c2849c8615595a1ea458534cb3f87a811f1c186fbef26bc1b0895d94a5eff4c5376e9ed4c19f602c4cb6
6
+ metadata.gz: 64daccebf840c89b41bdc941476691912db53ff08e79bc34fb8c35d7b38e810779ad379798fc11487c744fc779927c80ec83d50390607ec65b2738d22a993ffc
7
+ data.tar.gz: 6a35ba443f8f52838bdbf99168ba82f4c64ac5e236c63082b02b80204add1c8dd14c26bf59ca1cb4e537c83805bc47a7ebd0139933c767c1b41f8ef13664b05c
data/.rubocop.yml CHANGED
@@ -10,3 +10,6 @@ Metrics/BlockLength:
10
10
  - 'spec/**/*'
11
11
  Documentation:
12
12
  Enabled: false
13
+
14
+ RSpec/NestedGroups:
15
+ Max: 5
data/README.md CHANGED
@@ -1,7 +1,8 @@
1
1
  # WowzaRest
2
2
 
3
- [![Build Status](https://travis-ci.org/hazemtaha/wowza-rest.svg?branch=master)](https://travis-ci.org/hazemtaha/wowza-rest)
3
+ [![Build Status](https://travis-ci.org/ExtremeSolution/wowza-rest.svg?branch=master)](https://travis-ci.org/ExtremeSolution/wowza-rest)
4
4
  [![Code Climate](https://codeclimate.com/github/hazemtaha/wowza_rest/badges/gpa.svg)](https://codeclimate.com/github/hazemtaha/wowza_rest)
5
+ [![Gem Version](https://badge.fury.io/rb/wowza_rest.svg)](https://badge.fury.io/rb/wowza_rest)
5
6
 
6
7
  Ruby wrapper for Wowza Streaming Engine Rest API
7
8
 
@@ -98,7 +99,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
98
99
 
99
100
  ## Contributing
100
101
 
101
- Bug reports and pull requests are welcome on GitHub at https://github.com/hazemtaha/wowza-rest. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
102
+ Bug reports and pull requests are welcome on GitHub at https://github.com/ExtremeSolution/wowza-rest. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
102
103
 
103
104
 
104
105
  ## License
@@ -1,13 +1,21 @@
1
+ require_relative 'data/application'
2
+ require_relative 'data/application_short'
3
+
1
4
  module WowzaRest
2
5
  module Applications
3
6
  def applications
4
- connection.request(:get, '/applications').parsed_response
7
+ response = connection.request(:get, '/applications')
8
+ return unless response.code == 200
9
+ response.parsed_response['applications']
10
+ .map { |e| WowzaRest::Data::ApplicationShort.new(e) }
5
11
  end
6
12
 
7
13
  def get_application(app_name)
8
14
  response = connection.request(:get, "/applications/#{app_name}")
9
- response.response.code == '200' ? response.parsed_response : nil
15
+ return unless response.code == 200
16
+ WowzaRest::Data::Application.new(response.parsed_response)
10
17
  end
18
+ alias application get_application
11
19
 
12
20
  def create_application(app_body, use_default_config = true)
13
21
  unless app_body.include?(:name) && app_body.include?(:appType)
@@ -0,0 +1,48 @@
1
+ require_relative 'base'
2
+
3
+ module WowzaRest
4
+ module Data
5
+ class Application < Base
6
+ attr_reader :security_config, :stream_config, :dvr_config,
7
+ :drm_config, :transcoder_config, :modules
8
+
9
+ def initialize(attrs = {})
10
+ initialize_object_attrs(attrs)
11
+ super(attrs)
12
+ end
13
+
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)
21
+ end
22
+
23
+ class Template < Base; end
24
+ end
25
+
26
+ class SecurityConfig < Base; end
27
+ class StreamConfig < Base; end
28
+ class DVRConfig < Base; end
29
+ class DRMConfig < Base; end
30
+ class Module < Base; end
31
+
32
+ private
33
+
34
+ def initialize_object_attrs(attrs)
35
+ @security_config = SecurityConfig.new(attrs.delete('securityConfig'))
36
+ @stream_config = StreamConfig.new(attrs.delete('streamConfig'))
37
+ @dvr_config = DVRConfig.new(attrs.delete('dvrConfig'))
38
+ @drm_config = DRMConfig.new(attrs.delete('drmConfig'))
39
+ @transcoder_config = TranscoderConfig.new(
40
+ attrs.delete('transcoderConfig')
41
+ )
42
+ @modules = map_array_objects(
43
+ attrs.delete('modules')['moduleList'], Module
44
+ )
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,7 @@
1
+ require_relative 'base'
2
+
3
+ module WowzaRest
4
+ module Data
5
+ class ApplicationShort < Base; end
6
+ end
7
+ end
@@ -0,0 +1,33 @@
1
+ module WowzaRest
2
+ module Data
3
+ class Base
4
+ def initialize(attrs = {})
5
+ setup_attributes(attrs)
6
+ end
7
+
8
+ def setup_attributes(attrs)
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)
13
+ end
14
+ end
15
+
16
+ def define_attribute_getter(attr_name)
17
+ define_singleton_method(attr_name.to_s) do
18
+ instance_variable_get("@#{attr_name}")
19
+ end
20
+ end
21
+
22
+ def define_attribute_setter(attr_name)
23
+ define_singleton_method("#{attr_name}=") do |value|
24
+ instance_variable_set("@#{attr_name}", value)
25
+ end
26
+ end
27
+
28
+ def map_array_objects(arr, klass)
29
+ arr.map { |obj| klass.new(obj) }
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,16 @@
1
+ require_relative 'base'
2
+
3
+ module WowzaRest
4
+ module Data
5
+ class IncomingStreamStats < Base
6
+ attr_reader :connection_count
7
+
8
+ def initialize(attrs = {})
9
+ @connection_count = ConnectionCount.new(attrs.delete('connectionCount'))
10
+ super(attrs)
11
+ end
12
+
13
+ class ConnectionCount < Base; end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,33 @@
1
+ require_relative 'base'
2
+
3
+ module WowzaRest
4
+ module Data
5
+ class Instance < Base
6
+ attr_reader :incoming_streams, :outgoing_streams,
7
+ :recorders, :stream_groups
8
+
9
+ # rubocop:disable Metrics/MethodLength
10
+ def initialize(attrs = {})
11
+ @incoming_streams = map_array_objects(
12
+ attrs.delete('incomingStreams'), IncomingStream
13
+ )
14
+ @outgoing_streams = map_array_objects(
15
+ attrs.delete('outgoingStreams'), OutgoingStream
16
+ )
17
+ @recorders = map_array_objects(
18
+ attrs.delete('recorders'), Recorder
19
+ )
20
+ @stream_groups = map_array_objects(
21
+ attrs.delete('streamGroups'), StreamGroup
22
+ )
23
+ super(attrs)
24
+ end
25
+ # rubocop:enable Metrics/MethodLength
26
+
27
+ class IncomingStream < Base; end
28
+ class OutgoingStream < Base; end
29
+ class Recorder < Base; end
30
+ class StreamGroup < Base; end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,16 @@
1
+ class String
2
+ def underscore
3
+ gsub(/::/, '/')
4
+ .gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
5
+ .gsub(/([a-z\d])([A-Z])/, '\1_\2')
6
+ .tr('-', '_')
7
+ .downcase
8
+ end
9
+
10
+ def camelize
11
+ tr('-', '_')
12
+ .gsub(/\b[A-Z]+/, &:downcase)
13
+ .gsub(/_(.)/, &:upcase)
14
+ .tr('_', '')
15
+ end
16
+ end
@@ -1,16 +1,23 @@
1
+ require_relative 'data/instance'
2
+ require_relative 'data/incoming_stream_stats'
3
+
1
4
  module WowzaRest
2
5
  module Instances
3
6
  def instances(app_name)
4
- connection.request(
7
+ response = connection.request(
5
8
  :get, "/applications/#{app_name}/instances"
6
- )['instanceList']
9
+ )
10
+ return unless response.code == 200
11
+ response.parsed_response['instanceList']
12
+ .map { |e| WowzaRest::Data::Instance.new(e) }
7
13
  end
8
14
 
9
15
  def get_instance(app_name, instance_name = '_definst_')
10
16
  response = connection.request(
11
17
  :get, "/applications/#{app_name}/instances/#{instance_name}"
12
18
  )
13
- response.code == 200 ? response.parsed_response : nil
19
+ return unless response.code == 200
20
+ WowzaRest::Data::Instance.new(response.parsed_response)
14
21
  end
15
22
 
16
23
  # rubocop:disable Metrics/LineLength
@@ -18,7 +25,8 @@ module WowzaRest
18
25
  response = connection.request(
19
26
  :get, "/applications/#{app_name}/instances/#{instance_name}/incomingstreams/#{stream_name}/monitoring/current"
20
27
  )
21
- response.code == 200 ? response.parsed_response : nil
28
+ return unless response.code == 200
29
+ WowzaRest::Data::IncomingStreamStats.new(response.parsed_response)
22
30
  end
23
31
  # rubocop:enable Metrics/LineLength
24
32
  end
@@ -1,3 +1,3 @@
1
1
  module WowzaRest
2
- VERSION = '0.2.1'.freeze
2
+ VERSION = '0.2.2'.freeze
3
3
  end
data/lib/wowza_rest.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require 'wowza_rest/version'
2
2
  require 'wowza_rest/client'
3
+ require 'wowza_rest/ext/string'
3
4
  require 'json'
4
5
 
5
6
  module WowzaRest
data/wowza_rest.gemspec CHANGED
@@ -12,7 +12,7 @@ Gem::Specification.new do |spec|
12
12
 
13
13
  spec.summary = 'Wowza REST API Wrapper Gem.'
14
14
  spec.description = 'Wowza REST API Wrapper Gem.'
15
- spec.homepage = 'https://github.com/hazemtaha/wowza-rest'
15
+ spec.homepage = 'https://github.com/ExtremeSolution/wowza-rest'
16
16
  spec.license = 'MIT'
17
17
 
18
18
  # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
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.1
4
+ version: 0.2.2
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-10 00:00:00.000000000 Z
11
+ date: 2017-07-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -173,12 +173,18 @@ files:
173
173
  - lib/wowza_rest/applications.rb
174
174
  - lib/wowza_rest/client.rb
175
175
  - lib/wowza_rest/connection.rb
176
+ - lib/wowza_rest/data/application.rb
177
+ - lib/wowza_rest/data/application_short.rb
178
+ - lib/wowza_rest/data/base.rb
179
+ - lib/wowza_rest/data/incoming_stream_stats.rb
180
+ - lib/wowza_rest/data/instance.rb
176
181
  - lib/wowza_rest/errors.rb
182
+ - lib/wowza_rest/ext/string.rb
177
183
  - lib/wowza_rest/instances.rb
178
184
  - lib/wowza_rest/publishers.rb
179
185
  - lib/wowza_rest/version.rb
180
186
  - wowza_rest.gemspec
181
- homepage: https://github.com/hazemtaha/wowza-rest
187
+ homepage: https://github.com/ExtremeSolution/wowza-rest
182
188
  licenses:
183
189
  - MIT
184
190
  metadata: {}