evostream-event 1.0.0.pre.59 → 1.0.0.pre.65
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/README.md +21 -0
- data/lib/evostream/cli/config.rb +2 -0
- data/lib/evostream/cli/option.rb +5 -84
- data/lib/evostream/cli/option/argument.rb +40 -0
- data/lib/evostream/cli/option/command.rb +24 -0
- data/lib/evostream/cli/option/config.rb +21 -0
- data/lib/evostream/cli/{help → option/help} +0 -0
- data/lib/evostream/cli/option/help.rb +25 -0
- data/lib/evostream/cli/option/host.rb +20 -0
- data/lib/evostream/cli/option/port.rb +20 -0
- data/lib/evostream/cli/option/search.rb +32 -0
- data/lib/evostream/cli/runner.rb +45 -17
- data/lib/evostream/cli/search.rb +12 -3
- data/lib/evostream/event/commands.rb +20 -0
- data/lib/evostream/event/commands/create.rb +2 -0
- data/lib/evostream/event/commands/create/dash.rb +2 -0
- data/lib/evostream/event/commands/create/hls.rb +2 -0
- data/lib/evostream/event/commands/destroy.rb +4 -2
- data/lib/evostream/event/commands/error.rb +14 -0
- data/lib/evostream/event/commands/get_stream_info.rb +2 -0
- data/lib/evostream/event/commands/list_config.rb +2 -0
- data/lib/evostream/event/commands/list_streams.rb +2 -0
- data/lib/evostream/event/commands/push_stream.rb +2 -0
- data/lib/evostream/event/commands/set_log_level.rb +2 -0
- data/spec/cli/argument/command_spec.rb +16 -0
- data/spec/evostream/commands/create_dash_spec.rb +12 -1
- data/spec/evostream/commands/create_hls_spec.rb +25 -14
- data/spec/evostream/commands/create_spec.rb +22 -25
- data/spec/evostream/commands/destroy_spec.rb +4 -5
- data/spec/evostream/commands/get_stream_info_spec.rb +3 -4
- data/spec/evostream/commands/list_stream_spec.rb +2 -3
- data/spec/evostream/commands/push_stream_spec.rb +4 -5
- data/spec/evostream/commands/set_log_level_spec.rb +2 -3
- data/spec/spec_helper.rb +2 -0
- data/spec/support/examples_commands.rb +20 -2
- metadata +12 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 53872935638141a25ff53658fab7e36c55ce7b09
|
4
|
+
data.tar.gz: 181e0a17fb95652167cd7c4300163b807ffbc045
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f0ebb8baa0572b75f1e0f72bdb9c293f01023e259a1fb9ddfea9f5aff348c134079ba9d47891b0b17e9faaef394ac26b8cfa2745950f827bf49e9c53080ef745
|
7
|
+
data.tar.gz: 5228b5e83a3f222ebde719ee709d0668da3939ba0b11a36c54d0f27c13b5be6a585c25bd5385a1794395103a8bb7fa0ab4d03a7fb60c67ec2789a08e896ad5a9
|
data/README.md
CHANGED
@@ -79,6 +79,27 @@ event.execute_action
|
|
79
79
|
|
80
80
|
### Usage in cli
|
81
81
|
|
82
|
+
Use this gem in CLI. For more explain use helper :
|
83
|
+
|
84
|
+
```linux
|
85
|
+
evostream -h
|
86
|
+
```
|
87
|
+
|
88
|
+
Example for delete a configuration :
|
89
|
+
|
90
|
+
```linux
|
91
|
+
evostream removeConfig 'id: 565'
|
92
|
+
```
|
93
|
+
|
94
|
+
Example for list configuration :
|
95
|
+
|
96
|
+
```linux
|
97
|
+
# All configuration
|
98
|
+
evostream listConfig
|
99
|
+
|
100
|
+
# Just configuration number 42
|
101
|
+
evostream -s 'configId: 42' listConfig
|
102
|
+
```
|
82
103
|
|
83
104
|
## Development
|
84
105
|
|
data/lib/evostream/cli/config.rb
CHANGED
data/lib/evostream/cli/option.rb
CHANGED
@@ -1,101 +1,22 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
# :reek:TooManyConstants
|
5
|
-
# :reek:TooManyStatements
|
3
|
+
require 'option/argument'
|
6
4
|
|
7
5
|
module Evostream
|
8
6
|
module CLI
|
9
7
|
# Class for parsing option used in CLI software
|
10
8
|
class Options
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
CASE_PORT = ['--port'].freeze
|
15
|
-
CASE_SEARCH = ['-s', '--search'].freeze
|
16
|
-
CASE_CONFIG = ['--config'].freeze
|
17
|
-
|
18
|
-
attr_reader :search
|
19
|
-
|
20
|
-
def initialize(configuration)
|
21
|
-
@search = nil
|
22
|
-
@file = File.read(File.join(__dir__, 'help'))
|
23
|
-
@config = configuration
|
24
|
-
end
|
25
|
-
|
26
|
-
# Parse options and execute action if necessary
|
27
|
-
# rubocop:disable Style/EmptyCaseCondition
|
28
|
-
# rubocop:disable Metrics/PerceivedComplexity
|
29
|
-
# rubocop:disable Metrics/CyclomaticComplexity
|
30
|
-
# rubocop:disable Metrics/AbcSize
|
31
|
-
def parse(argv)
|
32
|
-
@command_line_args = argv
|
33
|
-
case
|
34
|
-
when include(CASE_HELP) then display_help
|
35
|
-
when include(CASE_CMD) then display_command
|
36
|
-
when include(CASE_HOST) then use_host
|
37
|
-
when include(CASE_PORT) then use_port
|
38
|
-
when include(CASE_SEARCH) then search_in_response
|
39
|
-
when include(CASE_CONFIG) then use_config_file
|
40
|
-
when @command_line_args.empty? then display_no_command
|
41
|
-
end
|
9
|
+
def parse
|
10
|
+
Argument::Arg.descendants.each { |klass| klass.instance.used? }
|
11
|
+
display_no_command if ARGV.empty?
|
42
12
|
end
|
43
|
-
# rubocop:enable Style/EmptyCaseCondition
|
44
|
-
# rubocop:enable Metrics/AbcSize
|
45
|
-
# rubocop:enable Metrics/CyclomaticComplexity
|
46
|
-
# rubocop:enable Metrics/PerceivedComplexity
|
47
13
|
|
48
14
|
private
|
49
15
|
|
50
|
-
def include(case_parse)
|
51
|
-
case_parse.any? { |value| @command_line_args.include?(value) }
|
52
|
-
end
|
53
|
-
|
54
|
-
def display_help
|
55
|
-
puts @file
|
56
|
-
raise CodeError::Finished
|
57
|
-
end
|
58
|
-
|
59
|
-
def display_command
|
60
|
-
puts 'Commands :'
|
61
|
-
Evostream::Commands::Command.descendants.each do |cmd|
|
62
|
-
puts " - #{cmd.to_s.split('::').last}"
|
63
|
-
end
|
64
|
-
raise CodeError::Finished
|
65
|
-
end
|
66
|
-
|
67
|
-
def use_host
|
68
|
-
@config.change_host(parameter('--server'))
|
69
|
-
end
|
70
|
-
|
71
|
-
def use_port
|
72
|
-
@config.change_port(parameter('--port'))
|
73
|
-
end
|
74
|
-
|
75
|
-
def search_in_response
|
76
|
-
CASE_SEARCH.each do |search|
|
77
|
-
@search = parameter(search) if args_has_present?(search)
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
def use_config_file
|
82
|
-
file = File.join(parameter('--config'))
|
83
|
-
@config.load_custom_file(file)
|
84
|
-
end
|
85
|
-
|
86
16
|
def display_no_command
|
87
|
-
|
17
|
+
Argument::Help.instance.send(:action)
|
88
18
|
raise CodeError::Syntax::OptionInvalid
|
89
19
|
end
|
90
|
-
|
91
|
-
def parameter(search_case)
|
92
|
-
param = @command_line_args.find_index(search_case)
|
93
|
-
@command_line_args[param + 1]
|
94
|
-
end
|
95
|
-
|
96
|
-
def args_has_present?(ind)
|
97
|
-
@command_line_args.find_index(ind)
|
98
|
-
end
|
99
20
|
end
|
100
21
|
end
|
101
22
|
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Evostream
|
4
|
+
module CLI
|
5
|
+
module Argument
|
6
|
+
# Abstract class for all argument used with CLI command
|
7
|
+
class Arg
|
8
|
+
def self.descendants
|
9
|
+
ObjectSpace.each_object(Class).select { |klass| klass < self }
|
10
|
+
end
|
11
|
+
|
12
|
+
def used?
|
13
|
+
action if use(self.class::KEY)
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def use(argument_parsed)
|
19
|
+
argument_parsed.any? { |value| ARGV.include?(value) }
|
20
|
+
end
|
21
|
+
|
22
|
+
def action
|
23
|
+
raise CodeError::Finished
|
24
|
+
end
|
25
|
+
|
26
|
+
def parameter(search_case)
|
27
|
+
param = ARGV.find_index(search_case)
|
28
|
+
ARGV[param + 1]
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
require 'option/help'
|
36
|
+
require 'option/command'
|
37
|
+
require 'option/host'
|
38
|
+
require 'option/port'
|
39
|
+
require 'option/search'
|
40
|
+
require 'option/config'
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Evostream
|
4
|
+
module CLI
|
5
|
+
module Argument
|
6
|
+
# Argument for listing command available in this software
|
7
|
+
class Command < Arg
|
8
|
+
include Singleton
|
9
|
+
|
10
|
+
KEY = ['-c', '--commands'].freeze
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
def action
|
15
|
+
$stdout.puts 'Commands :'
|
16
|
+
Evostream::Commands::Command.descendants.each do |cmd|
|
17
|
+
$stdout.puts " - #{cmd.to_s.split('::').last}"
|
18
|
+
end
|
19
|
+
super
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Evostream
|
4
|
+
module CLI
|
5
|
+
module Argument
|
6
|
+
# Argument for precise configuration file used
|
7
|
+
class Config < Arg
|
8
|
+
include Singleton
|
9
|
+
|
10
|
+
KEY = ['--config'].freeze
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
def action
|
15
|
+
file = File.join(parameter('--config'))
|
16
|
+
CLI::Config.instance.load_custom_file(file)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
File without changes
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Evostream
|
4
|
+
module CLI
|
5
|
+
module Argument
|
6
|
+
# Argument for display help
|
7
|
+
class Help < Arg
|
8
|
+
include Singleton
|
9
|
+
|
10
|
+
KEY = ['-h', '--help'].freeze
|
11
|
+
|
12
|
+
def initialize
|
13
|
+
@file = File.read(File.join(__dir__, 'help'))
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def action
|
19
|
+
puts @file
|
20
|
+
super
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Evostream
|
4
|
+
module CLI
|
5
|
+
module Argument
|
6
|
+
# Argument for change host used with command calling
|
7
|
+
class Host < Arg
|
8
|
+
include Singleton
|
9
|
+
|
10
|
+
KEY = ['--server'].freeze
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
def action
|
15
|
+
CLI::Config.instance.change_host(parameter('--server'))
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Evostream
|
4
|
+
module CLI
|
5
|
+
module Argument
|
6
|
+
# Argument for change port used with command
|
7
|
+
class Port < Arg
|
8
|
+
include Singleton
|
9
|
+
|
10
|
+
KEY = ['--port'].freeze
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
def action
|
15
|
+
CLI::Config.instance.change_host(parameter('--port'))
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Evostream
|
4
|
+
module CLI
|
5
|
+
module Argument
|
6
|
+
# Argument for searching in response to command
|
7
|
+
class Search < Arg
|
8
|
+
include Singleton
|
9
|
+
|
10
|
+
KEY = ['-s', '--search'].freeze
|
11
|
+
|
12
|
+
attr_reader :search
|
13
|
+
|
14
|
+
def initialize
|
15
|
+
@search = nil
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def action
|
21
|
+
KEY.each do |search|
|
22
|
+
@search = parameter(search) if args_has_present?(search)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def args_has_present?(ind)
|
27
|
+
ARGV.find_index(ind)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
data/lib/evostream/cli/runner.rb
CHANGED
@@ -1,19 +1,25 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'singleton'
|
3
4
|
require 'colorize'
|
4
|
-
require 'option'
|
5
|
-
require 'config'
|
6
|
-
require 'search'
|
7
5
|
require 'timeout'
|
8
6
|
require 'socket'
|
9
|
-
require 'code_error'
|
10
7
|
require 'yaml'
|
11
8
|
require 'yaml/dbm'
|
12
9
|
|
10
|
+
$LOAD_PATH.unshift(__dir__)
|
11
|
+
require 'option'
|
12
|
+
require 'config'
|
13
|
+
require 'search'
|
14
|
+
require 'code_error'
|
15
|
+
|
13
16
|
$LOAD_PATH.unshift("#{__dir__}/../")
|
14
17
|
require 'event'
|
15
18
|
|
19
|
+
# :reek:FeatureEnvy
|
16
20
|
# :reek:TooManyStatements
|
21
|
+
# :reek:DuplicateMethodCall
|
22
|
+
# :reek:NilCheck
|
17
23
|
|
18
24
|
module Evostream
|
19
25
|
# Execute CLI with this gem
|
@@ -27,17 +33,17 @@ module Evostream
|
|
27
33
|
# Version #{Evostream::VERSION} \t\t #
|
28
34
|
##################################
|
29
35
|
INFO
|
30
|
-
puts txt.red
|
31
|
-
|
32
|
-
@options = CLI::Options.new
|
36
|
+
$stdout.puts txt.red
|
37
|
+
CLI::Config.instance
|
38
|
+
@options = CLI::Options.new
|
33
39
|
end
|
34
40
|
|
35
41
|
# rubocop:disable Metrics/MethodLength
|
36
42
|
def run(args = ARGV)
|
37
|
-
@options.parse
|
43
|
+
@options.parse
|
38
44
|
|
39
45
|
access_evostream?
|
40
|
-
execute_runner(args
|
46
|
+
execute_runner(two_last_arg(args)) if args.count >= 1
|
41
47
|
rescue CodeError::Evostream::ConnectionFailed
|
42
48
|
return 201
|
43
49
|
rescue CodeError::Evostream::NoResult
|
@@ -46,6 +52,9 @@ module Evostream
|
|
46
52
|
return 101
|
47
53
|
rescue CodeError::Syntax::OptionInvalid
|
48
54
|
return 100
|
55
|
+
rescue Evostream::Commands::Errors::MissingMandatory => error
|
56
|
+
$stdout.puts error.message.red
|
57
|
+
return 50
|
49
58
|
rescue CodeError::Finished
|
50
59
|
return 0
|
51
60
|
end
|
@@ -61,7 +70,6 @@ module Evostream
|
|
61
70
|
raise CodeError::Evostream::ConnectionFailed
|
62
71
|
end
|
63
72
|
|
64
|
-
# :reek:FeatureEnvy
|
65
73
|
def test_server_started
|
66
74
|
uri = URI.parse(Evostream::Service.uri_in.to_s)
|
67
75
|
socket = TCPSocket.new(uri.host, uri.port)
|
@@ -72,23 +80,27 @@ module Evostream
|
|
72
80
|
|
73
81
|
def execute_runner(cmd)
|
74
82
|
test_command(cmd) do
|
75
|
-
|
76
|
-
|
83
|
+
payload = cmd.last == cmd.first ? {} : create_an_hash(cmd.last)
|
84
|
+
act = Evostream::Action.new(payload)
|
85
|
+
interpret_response(act.execute_action(cmd.first)[:data])
|
77
86
|
end
|
78
87
|
end
|
79
88
|
|
80
89
|
def interpret_response(result)
|
81
|
-
if
|
82
|
-
puts result.to_yaml
|
90
|
+
if CLI::Argument::Search.instance.search.nil?
|
91
|
+
$stdout.puts result.to_yaml
|
83
92
|
else
|
84
|
-
CLI::Search.new
|
93
|
+
CLI::Search.new.search_node(result)
|
85
94
|
end
|
86
95
|
raise CodeError::Finished
|
87
96
|
end
|
88
97
|
|
89
98
|
def test_command(cmd)
|
90
|
-
|
91
|
-
|
99
|
+
cmd.each_with_index do |one_arg, index|
|
100
|
+
raise CodeError::Syntax::CommandInvalid \
|
101
|
+
if one_arg.start_with?('-', '--') ||
|
102
|
+
(cmd_exist?(one_arg) if index.zero?)
|
103
|
+
end
|
92
104
|
yield
|
93
105
|
end
|
94
106
|
|
@@ -97,5 +109,21 @@ module Evostream
|
|
97
109
|
command.to_s.split('::').last.casecmp(cmd).zero?
|
98
110
|
end
|
99
111
|
end
|
112
|
+
|
113
|
+
def create_an_hash(arguments)
|
114
|
+
super_hash = {}
|
115
|
+
arguments.split(': ').each_with_index do |value, index|
|
116
|
+
if (index % 2).zero?
|
117
|
+
super_hash[value] = nil
|
118
|
+
else
|
119
|
+
super_hash[super_hash.keys[index - 1]] = value
|
120
|
+
end
|
121
|
+
end
|
122
|
+
super_hash
|
123
|
+
end
|
124
|
+
|
125
|
+
def two_last_arg(args)
|
126
|
+
[args.first, args.last]
|
127
|
+
end
|
100
128
|
end
|
101
129
|
end
|
data/lib/evostream/cli/search.rb
CHANGED
@@ -1,10 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
# :reek:NilCheck
|
4
|
+
|
3
5
|
module Evostream
|
4
6
|
module CLI
|
5
7
|
# Search data in evostream result
|
6
8
|
class Search
|
7
9
|
def initialize(yaml_search)
|
10
|
+
@response = nil
|
8
11
|
YAML.load(yaml_search).each do |key, value|
|
9
12
|
@search = [key.to_sym, value]
|
10
13
|
end
|
@@ -14,15 +17,21 @@ module Evostream
|
|
14
17
|
YAML.load(result.to_yaml).each do |_key, value|
|
15
18
|
inspect_array(value) if value.is_a?(Array) && !value.empty?
|
16
19
|
end
|
20
|
+
|
21
|
+
puts @response.nil? ? "No node equal to #{@search}" : @response
|
17
22
|
end
|
18
23
|
|
19
24
|
private
|
20
25
|
|
21
26
|
def inspect_array(evostream_response)
|
22
27
|
evostream_response.each do |value|
|
23
|
-
value
|
24
|
-
|
25
|
-
|
28
|
+
inspect_hash(value)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def inspect_hash(evostream_response)
|
33
|
+
evostream_response.each do |hash_value|
|
34
|
+
puts value.to_yaml if hash_value == @search
|
26
35
|
end
|
27
36
|
end
|
28
37
|
end
|
@@ -1,6 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'base64'
|
4
|
+
|
3
5
|
# :reek:UncommunicativeMethodName
|
6
|
+
# :reek:NestedIterators
|
7
|
+
# :reek:DuplicateMethodCall
|
4
8
|
|
5
9
|
module Evostream
|
6
10
|
# Manage command
|
@@ -12,6 +16,7 @@ module Evostream
|
|
12
16
|
commands.each do |command_name, command_param|
|
13
17
|
@command.push send(command_name, command_param)
|
14
18
|
end
|
19
|
+
test_missing_parameter
|
15
20
|
end
|
16
21
|
|
17
22
|
def cmd
|
@@ -28,10 +33,25 @@ module Evostream
|
|
28
33
|
def encode_64
|
29
34
|
Base64.strict_encode64(@command.join(' '))
|
30
35
|
end
|
36
|
+
|
37
|
+
def test_missing_parameter
|
38
|
+
missing = self.class::MANDATORY.empty? ? false : missing_parameter
|
39
|
+
raise Errors::MissingMandatory.new(self.class::MANDATORY, self.class) \
|
40
|
+
if missing
|
41
|
+
end
|
42
|
+
|
43
|
+
def missing_parameter
|
44
|
+
self.class::MANDATORY.none? do |method|
|
45
|
+
@command.any? do |part_payload|
|
46
|
+
part_payload.match?(/#{method}/)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
31
50
|
end
|
32
51
|
end
|
33
52
|
end
|
34
53
|
|
54
|
+
require 'evostream/event/commands/error'
|
35
55
|
require 'evostream/event/commands/create'
|
36
56
|
require 'evostream/event/commands/destroy'
|
37
57
|
require 'evostream/event/commands/get_stream_info'
|
@@ -4,6 +4,8 @@ module Evostream
|
|
4
4
|
module Commands
|
5
5
|
# Create flux DASH
|
6
6
|
class CreateDASH < Create
|
7
|
+
MANDATORY = %w[localStreamNames targetFolder].freeze
|
8
|
+
|
7
9
|
# Call default command for create DASH Stream
|
8
10
|
def initialize(commands = {
|
9
11
|
local_stream_names: 'null', target_folder: 'null'
|
@@ -6,6 +6,8 @@ module Evostream
|
|
6
6
|
module Commands
|
7
7
|
# Create flux HLS
|
8
8
|
class CreateHLS < Create
|
9
|
+
MANDATORY = %w[localStreamNames targetFolder].freeze
|
10
|
+
|
9
11
|
# Call default command for create DASH Stream
|
10
12
|
def initialize(commands = {
|
11
13
|
local_stream_names: 'null', target_folder: 'null'
|
@@ -4,7 +4,9 @@ module Evostream
|
|
4
4
|
# Concern all command sending to evoStream
|
5
5
|
module Commands
|
6
6
|
# Abstract class for create element
|
7
|
-
class
|
7
|
+
class RemoveConfig < Command
|
8
|
+
MANDATORY = %w[id].freeze
|
9
|
+
|
8
10
|
def initialize(commands = { group_name: 'null', remove_hls_hds_files: 1 })
|
9
11
|
super(commands)
|
10
12
|
end
|
@@ -40,6 +42,6 @@ module Evostream
|
|
40
42
|
end
|
41
43
|
|
42
44
|
# Alias to Destroy class
|
43
|
-
|
45
|
+
Destroy = RemoveConfig
|
44
46
|
end
|
45
47
|
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Evostream
|
4
|
+
module Commands
|
5
|
+
module Errors
|
6
|
+
# Exception if command have no mandatory parameter
|
7
|
+
class MissingMandatory < StandardError
|
8
|
+
def initialize(arg_mandatory, klass)
|
9
|
+
super "Parameter missing(s) #{arg_mandatory} in #{klass}"
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe Evostream::CLI::Argument::Command do
|
6
|
+
let(:runner) { Evostream::Runner.new }
|
7
|
+
|
8
|
+
it do
|
9
|
+
ARGV << '-c'
|
10
|
+
expect(runner.run).to eql(0)
|
11
|
+
end
|
12
|
+
|
13
|
+
it do
|
14
|
+
expect { runner.run }.to output(/.*Commands :.*/).to_stdout
|
15
|
+
end
|
16
|
+
end
|
@@ -3,12 +3,23 @@
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
5
|
describe Evostream::Commands::CreateDASH do
|
6
|
-
let(:command) { Evostream::Commands::CreateDASH
|
6
|
+
let(:command) { Evostream::Commands::CreateDASH }
|
7
7
|
|
8
8
|
context 'manifest_name' do
|
9
9
|
let(:arg_value) { Faker::Pokemon.name }
|
10
10
|
let(:argument) { 'manifest_name' }
|
11
11
|
|
12
|
+
include_examples 'command raise'
|
13
|
+
end
|
14
|
+
|
15
|
+
context 'with mandatory argument(s)' do
|
16
|
+
let(:cmd) do
|
17
|
+
{
|
18
|
+
local_stream_names: Faker::Pokemon.name,
|
19
|
+
target_folder: Faker::File.file_name('/path/to')
|
20
|
+
}
|
21
|
+
end
|
22
|
+
|
12
23
|
include_examples 'command'
|
13
24
|
end
|
14
25
|
end
|
@@ -3,103 +3,114 @@
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
5
|
describe Evostream::Commands::CreateHLS do
|
6
|
-
let(:command) { Evostream::Commands::CreateHLS
|
6
|
+
let(:command) { Evostream::Commands::CreateHLS }
|
7
7
|
|
8
8
|
context 'create_master_playlist' do
|
9
9
|
let(:arg_value) { Faker::Number.between(0, 1) }
|
10
10
|
let(:argument) { 'create_master_playlist' }
|
11
11
|
|
12
|
-
include_examples 'command'
|
12
|
+
include_examples 'command raise'
|
13
13
|
end
|
14
14
|
|
15
15
|
context 'playlist_name' do
|
16
16
|
let(:arg_value) { Faker::Pokemon.name }
|
17
17
|
let(:argument) { 'playlist_name' }
|
18
18
|
|
19
|
-
include_examples 'command'
|
19
|
+
include_examples 'command raise'
|
20
20
|
end
|
21
21
|
|
22
22
|
context 'max_chunk_length' do
|
23
23
|
let(:arg_value) { Faker::Number.between(0, 1) }
|
24
24
|
let(:argument) { 'max_chunk_length' }
|
25
25
|
|
26
|
-
include_examples 'command'
|
26
|
+
include_examples 'command raise'
|
27
27
|
end
|
28
28
|
|
29
29
|
context 'chunk_base_name' do
|
30
30
|
let(:arg_value) { Faker::Pokemon.name }
|
31
31
|
let(:argument) { 'chunk_base_name' }
|
32
32
|
|
33
|
-
include_examples 'command'
|
33
|
+
include_examples 'command raise'
|
34
34
|
end
|
35
35
|
|
36
36
|
context 'drm_type' do
|
37
37
|
let(:arg_value) { Faker::Pokemon.name }
|
38
38
|
let(:argument) { 'drm_type' }
|
39
39
|
|
40
|
-
include_examples 'command'
|
40
|
+
include_examples 'command raise'
|
41
41
|
end
|
42
42
|
|
43
43
|
context 'aes_key_count', broken: true do
|
44
44
|
let(:arg_value) { Faker::Number.between(1, 99) }
|
45
45
|
let(:argument) { 'aes_key_count' }
|
46
46
|
|
47
|
-
include_examples 'command'
|
47
|
+
include_examples 'command raise'
|
48
48
|
end
|
49
49
|
|
50
50
|
context 'audio_only' do
|
51
51
|
let(:arg_value) { Faker::Number.between(0, 1) }
|
52
52
|
let(:argument) { 'audio_only' }
|
53
53
|
|
54
|
-
include_examples 'command'
|
54
|
+
include_examples 'command raise'
|
55
55
|
end
|
56
56
|
|
57
57
|
context 'hls_resume' do
|
58
58
|
let(:arg_value) { Faker::Number.between(0, 1) }
|
59
59
|
let(:argument) { 'hls_resume' }
|
60
60
|
|
61
|
-
include_examples 'command'
|
61
|
+
include_examples 'command raise'
|
62
62
|
end
|
63
63
|
|
64
64
|
context 'cleanup_on_close' do
|
65
65
|
let(:arg_value) { Faker::Number.between(0, 1) }
|
66
66
|
let(:argument) { 'cleanup_on_close' }
|
67
67
|
|
68
|
-
include_examples 'command'
|
68
|
+
include_examples 'command raise'
|
69
69
|
end
|
70
70
|
|
71
71
|
context 'use_byte_range' do
|
72
72
|
let(:arg_value) { Faker::Number.between(0, 1) }
|
73
73
|
let(:argument) { 'use_byte_range' }
|
74
74
|
|
75
|
-
include_examples 'command'
|
75
|
+
include_examples 'command raise'
|
76
76
|
end
|
77
77
|
|
78
78
|
context 'file_length' do
|
79
79
|
let(:arg_value) { Faker::Number.between(0, 1) }
|
80
80
|
let(:argument) { 'file_length' }
|
81
81
|
|
82
|
-
include_examples 'command'
|
82
|
+
include_examples 'command raise'
|
83
83
|
end
|
84
84
|
|
85
85
|
context 'use_system_time' do
|
86
86
|
let(:arg_value) { Faker::Number.between(0, 1) }
|
87
87
|
let(:argument) { 'use_system_time' }
|
88
88
|
|
89
|
-
include_examples 'command'
|
89
|
+
include_examples 'command raise'
|
90
90
|
end
|
91
91
|
|
92
92
|
context 'offset_time' do
|
93
93
|
let(:arg_value) { Faker::Number.between(0, 1) }
|
94
94
|
let(:argument) { 'offset_time' }
|
95
95
|
|
96
|
-
include_examples 'command'
|
96
|
+
include_examples 'command raise'
|
97
97
|
end
|
98
98
|
|
99
99
|
context 'start_offset' do
|
100
100
|
let(:arg_value) { Faker::Number.between(0, 1) }
|
101
101
|
let(:argument) { 'start_offset' }
|
102
102
|
|
103
|
+
include_examples 'command raise'
|
104
|
+
end
|
105
|
+
|
106
|
+
context 'with mandatory argument(s)' do
|
107
|
+
let(:cmd) do
|
108
|
+
{
|
109
|
+
local_stream_names: Faker::Pokemon.name,
|
110
|
+
target_folder: Faker::File.file_name('/path/to')
|
111
|
+
}
|
112
|
+
end
|
113
|
+
|
103
114
|
include_examples 'command'
|
104
115
|
end
|
105
116
|
end
|
@@ -3,96 +3,93 @@
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
5
|
describe Evostream::Commands::Create do
|
6
|
-
let(:command) { Evostream::Commands::Create
|
7
|
-
|
8
|
-
context 'local_stream_names' do
|
9
|
-
let(:arg_value) { Faker::Pokemon.name }
|
10
|
-
let(:argument) { 'local_stream_names' }
|
11
|
-
|
12
|
-
include_examples 'command'
|
13
|
-
end
|
14
|
-
|
15
|
-
context 'target_folder' do
|
16
|
-
let(:arg_value) { Faker::Pokemon.name }
|
17
|
-
let(:argument) { 'target_folder' }
|
18
|
-
|
19
|
-
include_examples 'command'
|
20
|
-
end
|
6
|
+
let(:command) { Evostream::Commands::Create }
|
21
7
|
|
22
8
|
context 'bandwidths' do
|
23
9
|
let(:arg_value) { Faker::Number.between(1, 99) }
|
24
10
|
let(:argument) { 'bandwidths' }
|
25
11
|
|
26
|
-
include_examples 'command'
|
12
|
+
include_examples 'command raise'
|
27
13
|
end
|
28
14
|
|
29
15
|
context 'group_name' do
|
30
16
|
let(:arg_value) { Faker::Pokemon.name }
|
31
17
|
let(:argument) { 'group_name' }
|
32
18
|
|
33
|
-
include_examples 'command'
|
19
|
+
include_examples 'command raise'
|
34
20
|
end
|
35
21
|
|
36
22
|
context 'playlist_type' do
|
37
23
|
let(:arg_value) { %w[appending rolling].sample }
|
38
24
|
let(:argument) { 'playlist_type' }
|
39
25
|
|
40
|
-
include_examples 'command'
|
26
|
+
include_examples 'command raise'
|
41
27
|
end
|
42
28
|
|
43
29
|
context 'playlist_length' do
|
44
30
|
let(:arg_value) { Faker::Number.between(1, 99) }
|
45
31
|
let(:argument) { 'playlist_length' }
|
46
32
|
|
47
|
-
include_examples 'command'
|
33
|
+
include_examples 'command raise'
|
48
34
|
end
|
49
35
|
|
50
36
|
context 'chunk_length' do
|
51
37
|
let(:arg_value) { Faker::Number.between(1, 99) }
|
52
38
|
let(:argument) { 'chunk_length' }
|
53
39
|
|
54
|
-
include_examples 'command'
|
40
|
+
include_examples 'command raise'
|
55
41
|
end
|
56
42
|
|
57
43
|
context 'chunk_on_idr', broken: true do
|
58
44
|
let(:arg_value) { Faker::Number.between(0, 1) }
|
59
45
|
let(:argument) { 'chunk_on_idr' }
|
60
46
|
|
61
|
-
include_examples 'command'
|
47
|
+
include_examples 'command raise'
|
62
48
|
end
|
63
49
|
|
64
50
|
context 'keep_alive' do
|
65
51
|
let(:arg_value) { Faker::Number.between(0, 1) }
|
66
52
|
let(:argument) { 'keep_alive' }
|
67
53
|
|
68
|
-
include_examples 'command'
|
54
|
+
include_examples 'command raise'
|
69
55
|
end
|
70
56
|
|
71
57
|
context 'overwrite_destination' do
|
72
58
|
let(:arg_value) { Faker::Number.between(0, 1) }
|
73
59
|
let(:argument) { 'overwrite_destination' }
|
74
60
|
|
75
|
-
include_examples 'command'
|
61
|
+
include_examples 'command raise'
|
76
62
|
end
|
77
63
|
|
78
64
|
context 'stale_retention_count' do
|
79
65
|
let(:arg_value) { Faker::Number.between(1, 99) }
|
80
66
|
let(:argument) { 'stale_retention_count' }
|
81
67
|
|
82
|
-
include_examples 'command'
|
68
|
+
include_examples 'command raise'
|
83
69
|
end
|
84
70
|
|
85
71
|
context 'cleanup_destination' do
|
86
72
|
let(:arg_value) { Faker::Number.between(0, 1) }
|
87
73
|
let(:argument) { 'cleanup_destination' }
|
88
74
|
|
89
|
-
include_examples 'command'
|
75
|
+
include_examples 'command raise'
|
90
76
|
end
|
91
77
|
|
92
78
|
context 'dynamic_profile' do
|
93
79
|
let(:arg_value) { Faker::Number.between(0, 1) }
|
94
80
|
let(:argument) { 'dynamic_profile' }
|
95
81
|
|
82
|
+
include_examples 'command raise'
|
83
|
+
end
|
84
|
+
|
85
|
+
context 'with mandatory argument(s)' do
|
86
|
+
let(:cmd) do
|
87
|
+
{
|
88
|
+
local_stream_names: Faker::Pokemon.name,
|
89
|
+
target_folder: Faker::File.file_name('/path/to')
|
90
|
+
}
|
91
|
+
end
|
92
|
+
|
96
93
|
include_examples 'command'
|
97
94
|
end
|
98
95
|
end
|
@@ -3,11 +3,10 @@
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
5
|
describe Evostream::Commands::Destroy do
|
6
|
-
let(:command) { Evostream::Commands::Destroy
|
6
|
+
let(:command) { Evostream::Commands::Destroy }
|
7
7
|
|
8
8
|
context 'id' do
|
9
|
-
let(:
|
10
|
-
let(:argument) { 'id' }
|
9
|
+
let(:cmd) { { id: Faker::Number.between(1, 99).to_s } }
|
11
10
|
|
12
11
|
include_examples 'command'
|
13
12
|
end
|
@@ -16,13 +15,13 @@ describe Evostream::Commands::Destroy do
|
|
16
15
|
let(:arg_value) { Faker::Number.between(0, 1) }
|
17
16
|
let(:argument) { 'remove_hls_hds_files' }
|
18
17
|
|
19
|
-
include_examples 'command'
|
18
|
+
include_examples 'command raise'
|
20
19
|
end
|
21
20
|
|
22
21
|
context 'group_name' do
|
23
22
|
let(:arg_value) { Faker::Pokemon.name }
|
24
23
|
let(:argument) { 'group_name' }
|
25
24
|
|
26
|
-
include_examples 'command'
|
25
|
+
include_examples 'command raise'
|
27
26
|
end
|
28
27
|
end
|
@@ -3,11 +3,10 @@
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
5
|
describe Evostream::Commands::GetStreamInfo do
|
6
|
-
let(:command) { Evostream::Commands::GetStreamInfo
|
6
|
+
let(:command) { Evostream::Commands::GetStreamInfo }
|
7
7
|
|
8
8
|
context 'id' do
|
9
|
-
let(:
|
10
|
-
let(:argument) { 'id' }
|
9
|
+
let(:cmd) { { id: Faker::Number.between(1, 999).to_s } }
|
11
10
|
|
12
11
|
include_examples 'command'
|
13
12
|
end
|
@@ -16,6 +15,6 @@ describe Evostream::Commands::GetStreamInfo do
|
|
16
15
|
let(:arg_value) { Faker::Pokemon.name }
|
17
16
|
let(:argument) { 'local_stream_name' }
|
18
17
|
|
19
|
-
include_examples 'command'
|
18
|
+
include_examples 'command raise'
|
20
19
|
end
|
21
20
|
end
|
@@ -3,11 +3,10 @@
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
5
|
describe Evostream::Commands::ListStreams do
|
6
|
-
let(:command) { Evostream::Commands::ListStreams
|
6
|
+
let(:command) { Evostream::Commands::ListStreams }
|
7
7
|
|
8
8
|
context 'disable_internal_streams' do
|
9
|
-
let(:
|
10
|
-
let(:argument) { 'disable_internal_streams' }
|
9
|
+
let(:cmd) { { disable_internal_streams: Faker::Boolean.boolean.to_s } }
|
11
10
|
|
12
11
|
include_examples 'command'
|
13
12
|
end
|
@@ -3,11 +3,10 @@
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
5
|
describe Evostream::Commands::Destroy do
|
6
|
-
let(:command) { Evostream::Commands::PushStream
|
6
|
+
let(:command) { Evostream::Commands::PushStream }
|
7
7
|
|
8
8
|
context 'uri' do
|
9
|
-
let(:
|
10
|
-
let(:argument) { 'uri' }
|
9
|
+
let(:cmd) { { uri: 'rtmp://de.pscp.tv:80/x/31' } }
|
11
10
|
|
12
11
|
include_examples 'command'
|
13
12
|
end
|
@@ -16,13 +15,13 @@ describe Evostream::Commands::Destroy do
|
|
16
15
|
let(:arg_value) { Faker::Pokemon.name }
|
17
16
|
let(:argument) { 'local_stream_name' }
|
18
17
|
|
19
|
-
include_examples 'command'
|
18
|
+
include_examples 'command raise'
|
20
19
|
end
|
21
20
|
|
22
21
|
context 'target_stream_name' do
|
23
22
|
let(:arg_value) { Faker::Pokemon.name }
|
24
23
|
let(:argument) { 'target_stream_name' }
|
25
24
|
|
26
|
-
include_examples 'command'
|
25
|
+
include_examples 'command raise'
|
27
26
|
end
|
28
27
|
end
|
@@ -3,11 +3,10 @@
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
5
|
describe Evostream::Commands::SetLogLevel do
|
6
|
-
let(:command) { Evostream::Commands::SetLogLevel
|
6
|
+
let(:command) { Evostream::Commands::SetLogLevel }
|
7
7
|
|
8
8
|
context 'level' do
|
9
|
-
let(:
|
10
|
-
let(:argument) { 'level' }
|
9
|
+
let(:cmd) { { level: Faker::Number.between(0, 6).to_s } }
|
11
10
|
|
12
11
|
include_examples 'command'
|
13
12
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -3,10 +3,28 @@
|
|
3
3
|
require 'active_support/core_ext/string'
|
4
4
|
|
5
5
|
RSpec.shared_examples 'command' do
|
6
|
+
let(:test) do
|
7
|
+
test = []
|
8
|
+
var = command.new(cmd).instance_variable_get(:@command)
|
9
|
+
cmd.each_with_index do |_value, index|
|
10
|
+
test << var[index].split('=').last
|
11
|
+
end
|
12
|
+
test
|
13
|
+
end
|
14
|
+
let(:to) do
|
15
|
+
to = []
|
16
|
+
cmd.each { |value| to << value.last }
|
17
|
+
to
|
18
|
+
end
|
19
|
+
|
20
|
+
it { expect(test).to eql(to) }
|
21
|
+
end
|
22
|
+
|
23
|
+
RSpec.shared_examples 'command raise' do
|
6
24
|
let(:cmd) { { argument => arg_value } }
|
7
|
-
let(:result) { "#{argument.camelize(:lower)}=#{arg_value} " }
|
8
25
|
|
9
26
|
it do
|
10
|
-
expect
|
27
|
+
expect { command.new(cmd) }.to \
|
28
|
+
raise_error(Evostream::Commands::Errors::MissingMandatory)
|
11
29
|
end
|
12
30
|
end
|
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: 1.0.0.pre.
|
4
|
+
version: 1.0.0.pre.65
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- VAILLANT Jeremy
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-09-
|
11
|
+
date: 2017-09-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -295,8 +295,15 @@ files:
|
|
295
295
|
- lib/evostream/action/action.rb
|
296
296
|
- lib/evostream/cli/code_error.rb
|
297
297
|
- lib/evostream/cli/config.rb
|
298
|
-
- lib/evostream/cli/help
|
299
298
|
- lib/evostream/cli/option.rb
|
299
|
+
- lib/evostream/cli/option/argument.rb
|
300
|
+
- lib/evostream/cli/option/command.rb
|
301
|
+
- lib/evostream/cli/option/config.rb
|
302
|
+
- lib/evostream/cli/option/help
|
303
|
+
- lib/evostream/cli/option/help.rb
|
304
|
+
- lib/evostream/cli/option/host.rb
|
305
|
+
- lib/evostream/cli/option/port.rb
|
306
|
+
- lib/evostream/cli/option/search.rb
|
300
307
|
- lib/evostream/cli/runner.rb
|
301
308
|
- lib/evostream/cli/search.rb
|
302
309
|
- lib/evostream/event.rb
|
@@ -305,6 +312,7 @@ files:
|
|
305
312
|
- lib/evostream/event/commands/create/dash.rb
|
306
313
|
- lib/evostream/event/commands/create/hls.rb
|
307
314
|
- lib/evostream/event/commands/destroy.rb
|
315
|
+
- lib/evostream/event/commands/error.rb
|
308
316
|
- lib/evostream/event/commands/get_stream_info.rb
|
309
317
|
- lib/evostream/event/commands/list_config.rb
|
310
318
|
- lib/evostream/event/commands/list_streams.rb
|
@@ -320,6 +328,7 @@ files:
|
|
320
328
|
- lib/evostream/event/response/response.rb
|
321
329
|
- lib/evostream/event/service.rb
|
322
330
|
- lib/generators/evostream/initializer_generator.rb
|
331
|
+
- spec/cli/argument/command_spec.rb
|
323
332
|
- spec/evostream/action/action_spec.rb
|
324
333
|
- spec/evostream/commands/create_dash_spec.rb
|
325
334
|
- spec/evostream/commands/create_hls_spec.rb
|