evostream-event 0.2.5 → 0.2.6.pre.39
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/evostream/event/action.rb +16 -0
- data/lib/evostream/event/{events → event/events}/in_stream_closed.rb +0 -0
- data/lib/evostream/event/{events → event/events}/in_stream_created.rb +0 -0
- data/lib/evostream/event/{events → event/events}/out_stream_created.rb +0 -0
- data/lib/evostream/event/{events.rb → event/events.rb} +3 -3
- data/lib/evostream/event/event.rb +40 -0
- data/lib/evostream/event/info.rb +1 -1
- data/lib/evostream/event/response/mock.rb +20 -0
- data/lib/evostream/event/response/response.rb +49 -0
- data/lib/evostream/event/service.rb +13 -1
- data/lib/evostream/event.rb +23 -69
- data/spec/evostream/{evostream_event_action_spec.rb → action/action_spec.rb} +0 -0
- data/spec/evostream/{evostream_event_event_spec.rb → event/event_spec.rb} +0 -0
- data/spec/features/push_stream_spec.rb +14 -0
- data/spec/features/remove_config_spec.rb +14 -0
- data/spec/spec_helper.rb +9 -3
- data/spec/support/fake_evostream.rb +30 -0
- data/spec/support/fixtures/create_dash_stream.json +21 -0
- data/spec/support/fixtures/create_hls_stream.json +34 -0
- data/spec/support/fixtures/push_stream.json +42 -0
- data/spec/support/fixtures/remove_config.json +7 -0
- data/spec/support/fixtures/stream_closed.json +53 -0
- data/spec/support/fixtures/stream_created.json +50 -0
- metadata +64 -30
- data/spec/evostream/evostream_event_method_spec.rb +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7fd524e68a6660e8ad4ed77261eb348a5bfa8ac7
|
4
|
+
data.tar.gz: 3a77e447d6c9fabea5660ba296293168c2312388
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2ee1884917ecf210cc5cca1fcd91e6de38c64c35c9008e36e22458e708e9f9b6e9112ca14396910a70b5a2574e251e80b51c326b28f57aae63ed4d570c86f5a8
|
7
|
+
data.tar.gz: e2db3c351c8ab22ed0fdc5bd46ad65bfc999182ebb29fd1ea77cc996ebcb55387e2c0f23a9ae7b034e508bdbbc311810324ae2855cd092a5a5683456f0c59c03
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Evostream
|
4
|
+
# Send an action to evostream server
|
5
|
+
class Action
|
6
|
+
def initialize(payload)
|
7
|
+
@payload = payload
|
8
|
+
end
|
9
|
+
|
10
|
+
def execute_action(command_name)
|
11
|
+
cmd = command_name.sub(/^(\w)/, &:capitalize)
|
12
|
+
klass = "Evostream::Commands::#{cmd}".constantize
|
13
|
+
Evostream.send_command(klass.new(@payload).cmd)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
File without changes
|
File without changes
|
File without changes
|
@@ -40,6 +40,6 @@ module Evostream
|
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
43
|
-
require 'evostream/event/events/in_stream_created'
|
44
|
-
require 'evostream/event/events/in_stream_closed'
|
45
|
-
require 'evostream/event/events/out_stream_created'
|
43
|
+
require 'evostream/event/event/events/in_stream_created'
|
44
|
+
require 'evostream/event/event/events/in_stream_closed'
|
45
|
+
require 'evostream/event/event/events/out_stream_created'
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'evostream/event/event/events'
|
4
|
+
|
5
|
+
module Evostream
|
6
|
+
# Reacts to event
|
7
|
+
class Event
|
8
|
+
EVENTS = Evostream::Events::Event.descendants
|
9
|
+
|
10
|
+
def initialize(type, payload)
|
11
|
+
@payload = payload
|
12
|
+
@model = type.sub(/^(\w)/, &:capitalize)
|
13
|
+
end
|
14
|
+
|
15
|
+
def execute_action
|
16
|
+
klass = "Evostream::Events::#{@model}".constantize
|
17
|
+
Evostream.logger "Execute Action : #{klass}"
|
18
|
+
execute_klass(klass) if EVENTS.include?(klass)
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def execute_klass(klass)
|
24
|
+
name_flux = extract_name_flux
|
25
|
+
Evostream.logger "Name Flux : #{name_flux}"
|
26
|
+
case [klass]
|
27
|
+
when [Evostream::Events::OutStreamCreated]
|
28
|
+
klass.new(name_flux, @payload).execute
|
29
|
+
else
|
30
|
+
# when [Evostream::Events::InStreamCreated]
|
31
|
+
# when [Evostream::Events::InStreamClosed]
|
32
|
+
klass.new(name_flux).execute
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def extract_name_flux
|
37
|
+
@payload[:name].gsub(Evostream::Service.name, '')
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
data/lib/evostream/event/info.rb
CHANGED
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Net
|
4
|
+
# Override Net::hTTPResponse for create response with body
|
5
|
+
class HTTPResponse
|
6
|
+
def self.mock(body = {})
|
7
|
+
# construct
|
8
|
+
clazz = self
|
9
|
+
response = clazz.new('1.1', '200', 'OK')
|
10
|
+
|
11
|
+
# inject
|
12
|
+
response.instance_variable_set :@body, body
|
13
|
+
|
14
|
+
# mockulate
|
15
|
+
response.instance_eval 'def body; @body; end'
|
16
|
+
|
17
|
+
response
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Evostream
|
4
|
+
module Response
|
5
|
+
# Return a response to JSON format
|
6
|
+
class JSON
|
7
|
+
attr_reader :status, :message, :data
|
8
|
+
|
9
|
+
def initialize(evostream_response)
|
10
|
+
@evostream = evostream_response.body
|
11
|
+
|
12
|
+
@status = define_status
|
13
|
+
@message = define_message
|
14
|
+
@data = @evostream['data'] if @status.eql?(200)
|
15
|
+
end
|
16
|
+
|
17
|
+
def message
|
18
|
+
{
|
19
|
+
status: @status,
|
20
|
+
message: @message,
|
21
|
+
data: @data.to_hash
|
22
|
+
}.with_indifferent_access
|
23
|
+
end
|
24
|
+
|
25
|
+
def data
|
26
|
+
@data || ''
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
attr_accessor :evostream
|
32
|
+
|
33
|
+
def define_status
|
34
|
+
case @evostream['status']
|
35
|
+
when 'FAIL' then 500
|
36
|
+
when 'SUCCESS' then 200
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def define_message
|
41
|
+
if @status.eql?(500)
|
42
|
+
'Error with EvoStream server.'
|
43
|
+
else
|
44
|
+
'Object was successfully created/updated.'
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -5,10 +5,22 @@
|
|
5
5
|
module Evostream
|
6
6
|
# DSL configuration for this gem
|
7
7
|
class Service
|
8
|
-
mattr_accessor :web_root, :uri_in, :uri_out, :name, :model, :model_id
|
8
|
+
mattr_accessor :web_root, :uri_in, :uri_out, :name, :model, :model_id,
|
9
|
+
:environment
|
9
10
|
|
10
11
|
def self.configuration(&block)
|
11
12
|
block.call(self)
|
12
13
|
end
|
14
|
+
|
15
|
+
# Environment for this gem
|
16
|
+
# :test -- Dont send command to EvoStream instance
|
17
|
+
# :production -- Execute command HTTP
|
18
|
+
def self.environment
|
19
|
+
@@environment || :test
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.web_root
|
23
|
+
@@web_root = '/var/www/html'
|
24
|
+
end
|
13
25
|
end
|
14
26
|
end
|
data/lib/evostream/event.rb
CHANGED
@@ -4,97 +4,51 @@ require 'active_support'
|
|
4
4
|
require 'evostream/event/info'
|
5
5
|
require 'evostream/event/service'
|
6
6
|
require 'evostream/event/commands'
|
7
|
-
require 'evostream/event/
|
7
|
+
require 'evostream/event/event'
|
8
|
+
require 'evostream/event/action'
|
9
|
+
require 'evostream/event/response/response'
|
8
10
|
require 'net/http'
|
9
|
-
|
10
|
-
# :reek:DuplicateMethod
|
11
|
+
require 'evostream/event/response/mock'
|
11
12
|
|
12
13
|
# Primary command to gem
|
13
14
|
module Evostream
|
14
15
|
def self.send_command(cmd)
|
15
|
-
|
16
|
-
|
17
|
-
{ status: Evostream.status(body), message: body['description'] }
|
18
|
-
end
|
19
|
-
|
20
|
-
def self.send_command_action(cmd)
|
21
|
-
response = prepare_request(cmd)
|
22
|
-
body = response.body
|
23
|
-
if body.blank?
|
24
|
-
{ status: 403, message: 'Error with evostream !' }
|
25
|
-
else
|
26
|
-
body = JSON.parse(body).to_hash
|
27
|
-
{ status: 200, message: body['description'] }
|
28
|
-
end
|
16
|
+
Evostream.logger "CMD : #{cmd}"
|
17
|
+
Evostream::Response::JSON.new(prepare_request(cmd)).message
|
29
18
|
end
|
30
19
|
|
31
20
|
def self.logger(message)
|
32
21
|
Rails.logger.debug "[#{Evostream::GEM_NAME}] #{message}" if defined?(Rails)
|
33
22
|
end
|
34
23
|
|
35
|
-
def self.status(body)
|
36
|
-
if body['status'].eql?('FAIL')
|
37
|
-
403
|
38
|
-
elsif body.empty?
|
39
|
-
204
|
40
|
-
else
|
41
|
-
200
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
24
|
def self.prepare_request(cmd)
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
end
|
51
|
-
|
52
|
-
module Evostream
|
53
|
-
# Send an action to evostream server
|
54
|
-
class Action
|
55
|
-
def initialize(payload)
|
56
|
-
@payload = payload
|
57
|
-
end
|
58
|
-
|
59
|
-
def execute_action(command_name)
|
60
|
-
cmd = command_name.sub(/^(\w)/, &:capitalize)
|
61
|
-
klass = "Evostream::Commands::#{cmd}".constantize
|
62
|
-
Evostream.send_command_action(klass.new(@payload).cmd)
|
25
|
+
if Evostream::Service.environment.eql?(:test)
|
26
|
+
Evostream.request_test(cmd)
|
27
|
+
else
|
28
|
+
Evostream.request_real(URI.parse("#{Evostream::Service.uri_in}/#{cmd}"))
|
63
29
|
end
|
64
30
|
end
|
65
31
|
|
66
|
-
|
67
|
-
|
68
|
-
EVENTS = Evostream::Events::Event.descendants
|
32
|
+
class << self
|
33
|
+
private_class_method
|
69
34
|
|
70
|
-
def
|
71
|
-
|
72
|
-
|
35
|
+
def request_test(command)
|
36
|
+
json = JSON.parse(File.read(find_fixture(command)))
|
37
|
+
Net::HTTPSuccess.mock(json)
|
73
38
|
end
|
74
39
|
|
75
|
-
def
|
76
|
-
|
77
|
-
|
78
|
-
execute_klass(klass) if EVENTS.include?(klass)
|
40
|
+
def request_real(uri)
|
41
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
42
|
+
http.request(Net::HTTP::Get.new(uri.request_uri))
|
79
43
|
end
|
80
44
|
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
name_flux = extract_name_flux
|
85
|
-
Evostream.logger "Name Flux : #{name_flux}"
|
86
|
-
case [klass]
|
87
|
-
when [Evostream::Events::OutStreamCreated]
|
88
|
-
klass.new(name_flux, @payload).execute
|
89
|
-
else
|
90
|
-
# when [Evostream::Events::InStreamCreated]
|
91
|
-
# when [Evostream::Events::InStreamClosed]
|
92
|
-
klass.new(name_flux).execute
|
93
|
-
end
|
45
|
+
def path_fixture
|
46
|
+
File.realpath(File.join(File.dirname(__FILE__), '..', '..', 'spec',
|
47
|
+
'support', 'fixtures'))
|
94
48
|
end
|
95
49
|
|
96
|
-
def
|
97
|
-
|
50
|
+
def find_fixture(command)
|
51
|
+
File.join(path_fixture, "#{command.split('?')[0].underscore}.json")
|
98
52
|
end
|
99
53
|
end
|
100
54
|
end
|
File without changes
|
File without changes
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
feature 'PushStream', type: :response,
|
6
|
+
name: :pushStream do
|
7
|
+
it do
|
8
|
+
uri = URI('http://server_stream.local/pushStream?params=dXJpPXJ0')
|
9
|
+
|
10
|
+
response = JSON.parse(Net::HTTP.get(uri))
|
11
|
+
|
12
|
+
expect(response['data']['configId']).to eq(6)
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
feature 'RemoveConfig', type: :response,
|
6
|
+
name: :removeConfig do
|
7
|
+
it do
|
8
|
+
uri = URI('http://server_stream.local/removeConfig?params=dXJpPXJ0')
|
9
|
+
|
10
|
+
response = JSON.parse(Net::HTTP.get(uri))
|
11
|
+
|
12
|
+
expect(response['data']['configId']).to eq(6)
|
13
|
+
end
|
14
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -5,6 +5,8 @@ require 'evostream/event'
|
|
5
5
|
require 'faker'
|
6
6
|
require 'json'
|
7
7
|
require 'webmock/rspec'
|
8
|
+
require 'capybara/rspec'
|
9
|
+
require 'active_support/core_ext/hash'
|
8
10
|
|
9
11
|
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
|
10
12
|
|
@@ -17,6 +19,9 @@ RSpec.configure do |config|
|
|
17
19
|
c.syntax = :expect
|
18
20
|
end
|
19
21
|
|
22
|
+
# Disable all remote connections
|
23
|
+
WebMock.disable_net_connect!(allow_localhost: true)
|
24
|
+
|
20
25
|
# Exclude spec broken
|
21
26
|
config.filter_run_excluding broken: true
|
22
27
|
|
@@ -32,15 +37,16 @@ RSpec.configure do |config|
|
|
32
37
|
end
|
33
38
|
end
|
34
39
|
|
35
|
-
# Disable all remote connections
|
36
|
-
WebMock.disable_net_connect!(allow_localhost: true)
|
37
|
-
|
38
40
|
# Configure test Net::HTTP
|
39
41
|
config.before(:each, type: :request) do
|
40
42
|
stub_request(:get, /server_stream.local/)
|
41
43
|
.with(headers: { 'Accept': '*/*', 'User-Agent': 'Ruby' })
|
42
44
|
.to_return(status: 200, body: '', headers: {})
|
43
45
|
end
|
46
|
+
|
47
|
+
config.before(:each, type: :response) do
|
48
|
+
stub_request(:any, /server_stream.local/).to_rack(FakeEvostream)
|
49
|
+
end
|
44
50
|
end
|
45
51
|
|
46
52
|
# Class for testing
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'sinatra/base'
|
4
|
+
|
5
|
+
# Fake class for testing response to pushCommand
|
6
|
+
class FakeEvostream < Sinatra::Base
|
7
|
+
get '/pushStream' do
|
8
|
+
json_response 200, :push_stream
|
9
|
+
end
|
10
|
+
|
11
|
+
get '/createDASHStream' do
|
12
|
+
json_response 200, :create_dash_stream
|
13
|
+
end
|
14
|
+
|
15
|
+
get '/createHLSStream' do
|
16
|
+
json_response 200, :create_hls_stream
|
17
|
+
end
|
18
|
+
|
19
|
+
get '/removeConfig' do
|
20
|
+
json_response 200, :remove_config
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def json_response(response_code, file_name)
|
26
|
+
content_type :json
|
27
|
+
status response_code
|
28
|
+
File.open("#{File.dirname(__FILE__)}/fixtures/#{file_name}.json")
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
{
|
2
|
+
"data":{
|
3
|
+
"bandwidths":[0],
|
4
|
+
"chunkLength":10,
|
5
|
+
"chunkOnIDR":true,
|
6
|
+
"cleanupDestination":false,
|
7
|
+
"configIds":[11],
|
8
|
+
"dynamicProfile":true,
|
9
|
+
"groupName":"dash",
|
10
|
+
"keepAlive":true,
|
11
|
+
"localStreamNames":["testpullStream"],
|
12
|
+
"manifestName":"manifest.mpd",
|
13
|
+
"overwriteDestination":true,
|
14
|
+
"playlistLength":10,
|
15
|
+
"playlistType":"appending",
|
16
|
+
"staleRetentionCount":10,
|
17
|
+
"targetFolder":". .\/evo-webroot"
|
18
|
+
},
|
19
|
+
"description":"DASH stream created",
|
20
|
+
"status":"SUCCESS"
|
21
|
+
}
|
@@ -0,0 +1,34 @@
|
|
1
|
+
{
|
2
|
+
"data":{
|
3
|
+
"AESKeyCount":5,
|
4
|
+
"audioOnly":false,
|
5
|
+
"bandwidths":[128],
|
6
|
+
"chunkBaseName":"segment",
|
7
|
+
"chunkLength":10,
|
8
|
+
"chunkOnIDR":true,
|
9
|
+
"cleanupDestination":false,
|
10
|
+
"cleanupOnClose":false,
|
11
|
+
"configIds":[7],
|
12
|
+
"createMasterPlaylist":true,
|
13
|
+
"drmType":"none",
|
14
|
+
"fileLength":0,
|
15
|
+
"groupName":"hls",
|
16
|
+
"hlsResume":false,
|
17
|
+
"hlsVersion":3,
|
18
|
+
"keepAlive":true,
|
19
|
+
"localStreamNames":["testpullStream"],
|
20
|
+
"maxChunkLength":0,
|
21
|
+
"offsetTime":0,
|
22
|
+
"overwriteDestination":true,
|
23
|
+
"playlistLength":10,
|
24
|
+
"playlistName":"playlist.m3u8",
|
25
|
+
"playlistType":"rolling",
|
26
|
+
"staleRetentionCount":10,
|
27
|
+
"startOffset":0,
|
28
|
+
"targetFolder":"..\/evo-webroot",
|
29
|
+
"useByteRange":false,
|
30
|
+
"useSystemTime":false
|
31
|
+
},
|
32
|
+
"description":"HLS stream created",
|
33
|
+
"status":"SUCCESS"
|
34
|
+
}
|
@@ -0,0 +1,42 @@
|
|
1
|
+
{
|
2
|
+
"data":{
|
3
|
+
"configId":6,
|
4
|
+
"emulateUserAgent":"EvoStream Media Server (www.evostream.com)",
|
5
|
+
"forceTcp":false,
|
6
|
+
"httpProxy":"",
|
7
|
+
"keepAlive":true,
|
8
|
+
"localStreamName":"testpullStream",
|
9
|
+
"operationType":2,
|
10
|
+
"pageUrl":"",
|
11
|
+
"rtmpAbsoluteTimestamps":false,
|
12
|
+
"sendChunkSizeRequest":true,
|
13
|
+
"swfUrl":"",
|
14
|
+
"targetStreamName":"testpushStream",
|
15
|
+
"targetStreamType":"live",
|
16
|
+
"targetUri": {
|
17
|
+
"document":"",
|
18
|
+
"documentPath":"\/",
|
19
|
+
"documentWithFullParameters":"",
|
20
|
+
"fullDocumentPath":"\/",
|
21
|
+
"fullDocumentPathWithParameters":"\/",
|
22
|
+
"fullParameters":"",
|
23
|
+
"fullUri":"rtmp:\/\/127.0.0.1",
|
24
|
+
"fullUriWithAuth":"rtmp:\/\/127.0.0.1",
|
25
|
+
"host":"localhost",
|
26
|
+
"ip":"127.0.0.1",
|
27
|
+
"originalUri":"rtmp:\/\/localhost",
|
28
|
+
"parameters":{},
|
29
|
+
"password":"",
|
30
|
+
"port":1935,
|
31
|
+
"portSpecified": false,
|
32
|
+
"scheme":"rtmp",
|
33
|
+
"userName":""
|
34
|
+
},
|
35
|
+
"tcUrl":"",
|
36
|
+
"tos":256,
|
37
|
+
"ttl":256,
|
38
|
+
"useSourcePts":false
|
39
|
+
},
|
40
|
+
"description":"Local stream testpullStream enqueued for pushing to rtmp:\/\/localhost as testpushStream",
|
41
|
+
"status":"SUCCESS"
|
42
|
+
}
|
@@ -0,0 +1,53 @@
|
|
1
|
+
{
|
2
|
+
"appName": "evostreamms",
|
3
|
+
"audio": {
|
4
|
+
"bytesCount": 190351,
|
5
|
+
"codec": "AAAC",
|
6
|
+
"codecNumeric": 4702111241970122752,
|
7
|
+
"droppedBytesCount": 0,
|
8
|
+
"droppedPacketsCount": 0,
|
9
|
+
"packetsCount": 681
|
10
|
+
}
|
11
|
+
"bandwidth": 548,
|
12
|
+
"connectionType": 1,
|
13
|
+
"creationTimestamp": 1361182998409.229,
|
14
|
+
"ip": "192.168.2.88",
|
15
|
+
"name": "test"
|
16
|
+
"outStreamsUniqueIds": {
|
17
|
+
"0": 3
|
18
|
+
}
|
19
|
+
"port": 49730,
|
20
|
+
"pullSettings": {
|
21
|
+
"audioCodecBytes": null,
|
22
|
+
"configId": 1,
|
23
|
+
"emulateUserAgent": "EvoStream Media Server (www.evostream.com) player",
|
24
|
+
"forceTcp": false,
|
25
|
+
"isAudio": true,
|
26
|
+
"keepAlive": true,
|
27
|
+
"localStreamName": "test",
|
28
|
+
"operationType": 1,
|
29
|
+
"pageUrl": null,
|
30
|
+
"ppsBytes": null,
|
31
|
+
"rtcpDetectionInterval": 10,
|
32
|
+
"spsBytes": null,
|
33
|
+
"ssmIp": null,
|
34
|
+
"swfUrl": null,
|
35
|
+
"tcUrl": null,
|
36
|
+
"tos": 256,
|
37
|
+
"ttl": 256,
|
38
|
+
"uri": "rtmp://cp76072.live.edgefcs.net/live/MED-HQ-Flash@42814"
|
39
|
+
}
|
40
|
+
"queryTimestamp": 1361183030139.685,
|
41
|
+
"type": "INR",
|
42
|
+
"typeNumeric": 5282249572905648128,
|
43
|
+
"uniqueId": 2,
|
44
|
+
"upTime": 31730.456,
|
45
|
+
"video": {
|
46
|
+
"bytesCount": 2346717,
|
47
|
+
"codec": "VH264",
|
48
|
+
"codecNumeric": 6217274493967007744,
|
49
|
+
"droppedBytesCount": 0,
|
50
|
+
"droppedPacketsCount": 0,
|
51
|
+
"packetsCount": 1147
|
52
|
+
}
|
53
|
+
}
|
@@ -0,0 +1,50 @@
|
|
1
|
+
{
|
2
|
+
"appName": "evostreamms",
|
3
|
+
"audio": {
|
4
|
+
"bytesCount": 0,
|
5
|
+
"codec": "AUNK",
|
6
|
+
"codecNumeric": 4707755069515235328,
|
7
|
+
"droppedBytesCount": 0,
|
8
|
+
"droppedPacketsCount": 0,
|
9
|
+
"packetsCount": 0
|
10
|
+
}
|
11
|
+
"bandwidth": 0,
|
12
|
+
"connectionType": 1,
|
13
|
+
"creationTimestamp": 1361182998409.229,
|
14
|
+
"ip": "192.168.1.130",
|
15
|
+
"name": "test",
|
16
|
+
"port": 49730,
|
17
|
+
"pullSettings": {
|
18
|
+
"audioCodecBytes": null,
|
19
|
+
"configId": 1,
|
20
|
+
"emulateUserAgent": "EvoStream Media Server (www.evostream.com) player",
|
21
|
+
"forceTcp": false,
|
22
|
+
"isAudio": true,
|
23
|
+
"keepAlive": true,
|
24
|
+
"localStreamName": test,
|
25
|
+
"operationType": 1,
|
26
|
+
"pageUrl": null,
|
27
|
+
"ppsBytes": null,
|
28
|
+
"rtcpDetectionInterval": 10,
|
29
|
+
"spsBytes": null,
|
30
|
+
"ssmIp": null,
|
31
|
+
"swfUrl": null,
|
32
|
+
"tcUrl": null,
|
33
|
+
"tos": 256,
|
34
|
+
"ttl": 256,
|
35
|
+
"uri": "rtmp://cp76072.live.edgefcs.net/live/MED-HQ-Flash@42814"
|
36
|
+
},
|
37
|
+
"queryTimestamp": 1361182998424.829,
|
38
|
+
"type": "INR",
|
39
|
+
"typeNumeric": 5282249572905648128,
|
40
|
+
"uniqueId": 2,
|
41
|
+
"upTime": 15.600,
|
42
|
+
"video": {
|
43
|
+
"bytesCount": 0,
|
44
|
+
"codec": "VUNK",
|
45
|
+
"codecNumeric": 6220964544311721984,
|
46
|
+
"droppedBytesCount": 0,
|
47
|
+
"droppedPacketsCount": 0,
|
48
|
+
"packetsCount": 0
|
49
|
+
}
|
50
|
+
}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: evostream-event
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.6.pre.39
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- VAILLANT Jeremy
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-04-
|
11
|
+
date: 2017-04-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -78,14 +78,14 @@ dependencies:
|
|
78
78
|
requirements:
|
79
79
|
- - "~>"
|
80
80
|
- !ruby/object:Gem::Version
|
81
|
-
version: 0.
|
81
|
+
version: 0.48.0
|
82
82
|
type: :development
|
83
83
|
prerelease: false
|
84
84
|
version_requirements: !ruby/object:Gem::Requirement
|
85
85
|
requirements:
|
86
86
|
- - "~>"
|
87
87
|
- !ruby/object:Gem::Version
|
88
|
-
version: 0.
|
88
|
+
version: 0.48.0
|
89
89
|
- !ruby/object:Gem::Dependency
|
90
90
|
name: yard
|
91
91
|
requirement: !ruby/object:Gem::Requirement
|
@@ -169,65 +169,87 @@ dependencies:
|
|
169
169
|
- !ruby/object:Gem::Version
|
170
170
|
version: 1.8.4
|
171
171
|
- !ruby/object:Gem::Dependency
|
172
|
-
name:
|
172
|
+
name: faker
|
173
173
|
requirement: !ruby/object:Gem::Requirement
|
174
174
|
requirements:
|
175
175
|
- - "~>"
|
176
176
|
- !ruby/object:Gem::Version
|
177
|
-
version: '
|
177
|
+
version: '1.7'
|
178
178
|
- - ">="
|
179
179
|
- !ruby/object:Gem::Version
|
180
|
-
version:
|
180
|
+
version: 1.7.3
|
181
181
|
type: :development
|
182
182
|
prerelease: false
|
183
183
|
version_requirements: !ruby/object:Gem::Requirement
|
184
184
|
requirements:
|
185
185
|
- - "~>"
|
186
186
|
- !ruby/object:Gem::Version
|
187
|
-
version: '
|
187
|
+
version: '1.7'
|
188
188
|
- - ">="
|
189
189
|
- !ruby/object:Gem::Version
|
190
|
-
version:
|
190
|
+
version: 1.7.3
|
191
191
|
- !ruby/object:Gem::Dependency
|
192
|
-
name:
|
192
|
+
name: webmock
|
193
193
|
requirement: !ruby/object:Gem::Requirement
|
194
194
|
requirements:
|
195
195
|
- - "~>"
|
196
196
|
- !ruby/object:Gem::Version
|
197
|
-
version: '
|
197
|
+
version: '2.3'
|
198
198
|
- - ">="
|
199
199
|
- !ruby/object:Gem::Version
|
200
|
-
version:
|
200
|
+
version: 2.3.2
|
201
201
|
type: :development
|
202
202
|
prerelease: false
|
203
203
|
version_requirements: !ruby/object:Gem::Requirement
|
204
204
|
requirements:
|
205
205
|
- - "~>"
|
206
206
|
- !ruby/object:Gem::Version
|
207
|
-
version: '
|
207
|
+
version: '2.3'
|
208
208
|
- - ">="
|
209
209
|
- !ruby/object:Gem::Version
|
210
|
-
version:
|
210
|
+
version: 2.3.2
|
211
211
|
- !ruby/object:Gem::Dependency
|
212
|
-
name:
|
212
|
+
name: sinatra
|
213
213
|
requirement: !ruby/object:Gem::Requirement
|
214
214
|
requirements:
|
215
215
|
- - "~>"
|
216
216
|
- !ruby/object:Gem::Version
|
217
|
-
version:
|
218
|
-
|
217
|
+
version: 2.0.0.rc2
|
218
|
+
type: :development
|
219
|
+
prerelease: false
|
220
|
+
version_requirements: !ruby/object:Gem::Requirement
|
221
|
+
requirements:
|
222
|
+
- - "~>"
|
219
223
|
- !ruby/object:Gem::Version
|
220
|
-
version: 2.
|
224
|
+
version: 2.0.0.rc2
|
225
|
+
- !ruby/object:Gem::Dependency
|
226
|
+
name: capybara
|
227
|
+
requirement: !ruby/object:Gem::Requirement
|
228
|
+
requirements:
|
229
|
+
- - "~>"
|
230
|
+
- !ruby/object:Gem::Version
|
231
|
+
version: '2.13'
|
221
232
|
type: :development
|
222
233
|
prerelease: false
|
223
234
|
version_requirements: !ruby/object:Gem::Requirement
|
224
235
|
requirements:
|
225
236
|
- - "~>"
|
226
237
|
- !ruby/object:Gem::Version
|
227
|
-
version: '2.
|
228
|
-
|
238
|
+
version: '2.13'
|
239
|
+
- !ruby/object:Gem::Dependency
|
240
|
+
name: activesupport
|
241
|
+
requirement: !ruby/object:Gem::Requirement
|
242
|
+
requirements:
|
243
|
+
- - "~>"
|
229
244
|
- !ruby/object:Gem::Version
|
230
|
-
version:
|
245
|
+
version: '4.2'
|
246
|
+
type: :development
|
247
|
+
prerelease: false
|
248
|
+
version_requirements: !ruby/object:Gem::Requirement
|
249
|
+
requirements:
|
250
|
+
- - "~>"
|
251
|
+
- !ruby/object:Gem::Version
|
252
|
+
version: '4.2'
|
231
253
|
description: |2
|
232
254
|
Manipulate event evostream and send actions to evostream server.
|
233
255
|
email:
|
@@ -241,36 +263,48 @@ files:
|
|
241
263
|
- README.md
|
242
264
|
- Rakefile
|
243
265
|
- lib/evostream/event.rb
|
266
|
+
- lib/evostream/event/action.rb
|
244
267
|
- lib/evostream/event/commands.rb
|
245
268
|
- lib/evostream/event/commands/create.rb
|
246
269
|
- lib/evostream/event/commands/create/dash.rb
|
247
270
|
- lib/evostream/event/commands/create/hls.rb
|
248
271
|
- lib/evostream/event/commands/destroy.rb
|
249
272
|
- lib/evostream/event/commands/push_stream.rb
|
250
|
-
- lib/evostream/event/
|
251
|
-
- lib/evostream/event/events
|
252
|
-
- lib/evostream/event/events/
|
253
|
-
- lib/evostream/event/events/
|
273
|
+
- lib/evostream/event/event.rb
|
274
|
+
- lib/evostream/event/event/events.rb
|
275
|
+
- lib/evostream/event/event/events/in_stream_closed.rb
|
276
|
+
- lib/evostream/event/event/events/in_stream_created.rb
|
277
|
+
- lib/evostream/event/event/events/out_stream_created.rb
|
254
278
|
- lib/evostream/event/info.rb
|
279
|
+
- lib/evostream/event/response/mock.rb
|
280
|
+
- lib/evostream/event/response/response.rb
|
255
281
|
- lib/evostream/event/service.rb
|
256
282
|
- lib/generators/evostream/initializer_generator.rb
|
283
|
+
- spec/evostream/action/action_spec.rb
|
257
284
|
- spec/evostream/commands/create_dash_spec.rb
|
258
285
|
- spec/evostream/commands/create_hls_spec.rb
|
259
286
|
- spec/evostream/commands/create_spec.rb
|
260
287
|
- spec/evostream/commands/destroy_spec.rb
|
261
288
|
- spec/evostream/commands/push_stream_spec.rb
|
289
|
+
- spec/evostream/event/event_spec.rb
|
262
290
|
- spec/evostream/events/events_spec.rb
|
263
291
|
- spec/evostream/events/request_in_stream_closed_spec.rb
|
264
292
|
- spec/evostream/events/request_in_stream_created_spec.rb
|
265
293
|
- spec/evostream/events/request_out_stream_created_spec.rb
|
266
|
-
- spec/evostream/evostream_event_action_spec.rb
|
267
|
-
- spec/evostream/evostream_event_event_spec.rb
|
268
|
-
- spec/evostream/evostream_event_method_spec.rb
|
269
294
|
- spec/evostream/evostream_event_spec.rb
|
295
|
+
- spec/features/push_stream_spec.rb
|
296
|
+
- spec/features/remove_config_spec.rb
|
270
297
|
- spec/spec_helper.rb
|
271
298
|
- spec/support/examples_actions.rb
|
272
299
|
- spec/support/examples_commands.rb
|
273
300
|
- spec/support/examples_events.rb
|
301
|
+
- spec/support/fake_evostream.rb
|
302
|
+
- spec/support/fixtures/create_dash_stream.json
|
303
|
+
- spec/support/fixtures/create_hls_stream.json
|
304
|
+
- spec/support/fixtures/push_stream.json
|
305
|
+
- spec/support/fixtures/remove_config.json
|
306
|
+
- spec/support/fixtures/stream_closed.json
|
307
|
+
- spec/support/fixtures/stream_created.json
|
274
308
|
homepage: https://github.com/Dev-Crea/evostream-event
|
275
309
|
licenses:
|
276
310
|
- MIT
|
@@ -303,9 +337,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
303
337
|
version: '0'
|
304
338
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
305
339
|
requirements:
|
306
|
-
- - "
|
340
|
+
- - ">"
|
307
341
|
- !ruby/object:Gem::Version
|
308
|
-
version:
|
342
|
+
version: 1.3.1
|
309
343
|
requirements: []
|
310
344
|
rubyforge_project:
|
311
345
|
rubygems_version: 2.4.5
|
File without changes
|