Class: WebSocket::ArgumentsParser

Inherits:
Object
  • Object
show all
Defined in:
lib/websocket_client.rb,
lib/websocket/arguments_parser.rb

Overview

rubocop: disable Metrics/ClassLength The ArgumentsParser class

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(option_parser = OptionParser.new) ⇒ ArgumentsParser

Returns a new instance of ArgumentsParser.



449
450
451
452
453
454
# File 'lib/websocket_client.rb', line 449

def initialize(parser = OptionParser.new, options = ::WebSocket.client_config.dup)
  @parser = parser
  @options = options
  @flags = %i[banner uri log_level help version]
  @flags.each { |method_name| method(method_name)&.call if respond_to?(method_name) }
end

Instance Attribute Details

#optionsObject (readonly)

Returns the value of attribute options.



447
448
449
# File 'lib/websocket_client.rb', line 447

def options
  @options
end

#parserObject (readonly)

Returns the value of attribute parser.



447
448
449
# File 'lib/websocket_client.rb', line 447

def parser
  @parser
end

Instance Method Details



456
457
458
459
460
# File 'lib/websocket_client.rb', line 456

def banner
  @parser.banner = "Usage: #{File.basename($PROGRAM_NAME)} [options]"
  @parser.separator ''
  @parser.separator 'Options:'
end

#helpObject



475
476
477
478
479
480
# File 'lib/websocket_client.rb', line 475

def help
  @parser.on_tail('-?', '--help', 'Show this message') do
    puts @parser
    exit
  end
end

#idle_readingObject



98
99
100
101
102
# File 'lib/websocket/arguments_parser.rb', line 98

def idle_reading
  @parser.on('--idle-reading=seconds', 'Amount of time channel can idle without incoming data') do |v|
    @options[:idle_reading] = v.to_i
  end
end

#idle_writingObject



104
105
106
107
108
# File 'lib/websocket/arguments_parser.rb', line 104

def idle_writing
  @parser.on('--idle-writing=seconds', 'Amount of time channel can idle without outgoing data') do |v|
    @options[:idle_writing] = v.to_i
  end
end

#inspect_sslObject



92
93
94
95
96
# File 'lib/websocket/arguments_parser.rb', line 92

def inspect_ssl
  @parser.on('--inspect-ssl', 'Verbosely log SSL messages for encryption confirmation') do
    @options[:inspect_ssl] = true
  end
end

#log_levelObject



468
469
470
471
472
473
# File 'lib/websocket_client.rb', line 468

def log_level
  @parser.on_tail('-v', '--verbose', 'Increase verbosity') do
    @options[:log_level] ||= 0
    @options[:log_level] -= 1
  end
end

#log_requestsObject



110
111
112
113
114
# File 'lib/websocket/arguments_parser.rb', line 110

def log_requests
  @parser.on('-r', '--log-requests', 'Include individual request info in log output') do |v|
    @options[:log_requests] = v
  end
end

#portObject



49
50
51
52
53
54
# File 'lib/websocket/arguments_parser.rb', line 49

def port
  description = "Port on which to listen for connections; default: #{@options[:port]}"
  @parser.on('-p', '--port=<port>', Integer, description) do |v|
    @options[:port] = validated_port(v).to_i
  end
end

#sslObject



68
69
70
71
72
# File 'lib/websocket/arguments_parser.rb', line 68

def ssl
  @parser.on('-s', '--ssl', 'Use TLS/SSL') do |v|
    @options[:ssl] = v
  end
end

#ssl_certificateObject



74
75
76
77
78
# File 'lib/websocket/arguments_parser.rb', line 74

def ssl_certificate
  @parser.on('-c', '--ssl-certificate=file', 'Path to ssl certificate file') do |v|
    @options[:ssl_certificate_file_path] = v
  end
end

#ssl_private_keyObject



80
81
82
83
84
# File 'lib/websocket/arguments_parser.rb', line 80

def ssl_private_key
  @parser.on('-k', '--ssl-private-key=file', 'Path to private key file') do |v|
    @options[:ssl_private_key_file_path] = v
  end
end

#telnet_proxy_hostObject



56
57
58
59
60
# File 'lib/websocket/arguments_parser.rb', line 56

def telnet_proxy_host
  @parser.on('--telnet-proxy-host=host', 'Remote telnet proxy host') do |v|
    @options[:telnet_proxy_host] = v
  end
end

#telnet_proxy_portObject



62
63
64
65
66
# File 'lib/websocket/arguments_parser.rb', line 62

def telnet_proxy_port
  @parser.on('--telnet-proxy-port=port', 'Remote telnet proxy port') do |v|
    @options[:telnet_proxy_port] = v.to_i
  end
end

#uriObject



462
463
464
465
466
# File 'lib/websocket_client.rb', line 462

def uri
  @parser.on_head('-u', '--uri=<uri>', 'Fully qualified connection string') do |v|
    @options[:uri] = java.net.URI.new(v)
  end
end

#use_jdk_ssl_providerObject



86
87
88
89
90
# File 'lib/websocket/arguments_parser.rb', line 86

def use_jdk_ssl_provider
  @parser.on('--use-jdk-ssl-provider', 'Use the JDK SSL provider') do
    @options[:use_jdk_ssl_provider] = true
  end
end

#validated_port(val, integer_pattern = /^\d+$/) ⇒ Object

Raises:

  • (OptionParser::InvalidArgument)


42
43
44
45
46
47
# File 'lib/websocket/arguments_parser.rb', line 42

def validated_port(val, integer_pattern = /^\d+$/)
  raise OptionParser::InvalidArgument, "Invalid port: #{v}" unless \
    integer_pattern.match?(val.to_s) && val.positive? && val < 65_536

  val
end

#verboseObject



122
123
124
125
126
127
# File 'lib/websocket/arguments_parser.rb', line 122

def verbose
  @parser.on_tail('-v', '--verbose', 'Increase verbosity') do
    @options[:log_level] ||= 0
    @options[:log_level] -= 1
  end
end

#versionObject



482
483
484
485
486
487
# File 'lib/websocket_client.rb', line 482

def version
  @parser.on_tail('--version', 'Show version') do
    puts "#{File.basename($PROGRAM_NAME)} version #{::WebSocket::VERSION}"
    exit
  end
end

#web_rootObject



116
117
118
119
120
# File 'lib/websocket/arguments_parser.rb', line 116

def web_root
  @parser.on('-w', '--web-root=path', 'Set the web root to a specific path') do |v|
    @options[:web_root] = v
  end
end