yup 0.0.2 → 0.0.3
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.
- data/README.rdoc +0 -1
- data/VERSION +1 -1
- data/bin/yupd +16 -10
- data/lib/yup.rb +5 -4
- data/lib/yup/request_forwarder.rb +9 -7
- data/lib/yup/request_handler.rb +9 -7
- data/yup.gemspec +2 -2
- metadata +4 -4
data/README.rdoc
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.3
|
data/bin/yupd
CHANGED
@@ -16,7 +16,8 @@ Options:
|
|
16
16
|
--status-code <code> Send status code to a client on request (default 200)
|
17
17
|
--resend-delay <seconds> Resend failed requests in seconds (default 5.0)
|
18
18
|
--watermark <number> Maximum of concurrent requests (default 100)
|
19
|
-
--loglevel <level> Logging severity (default
|
19
|
+
--loglevel <level> Logging severity (default fatal).
|
20
|
+
Available log levels: fatal, error, warn, info, debug.
|
20
21
|
|
21
22
|
Examples:
|
22
23
|
yupd --listen 0.0.0.0:8081 --status-code 201 errbit.host.somewhere
|
@@ -24,6 +25,14 @@ Examples:
|
|
24
25
|
EOF
|
25
26
|
end
|
26
27
|
|
28
|
+
LEVELS = {
|
29
|
+
"fatal" => Logger::FATAL,
|
30
|
+
"error" => Logger::ERROR,
|
31
|
+
"warn" => Logger::WARN,
|
32
|
+
"info" => Logger::INFO,
|
33
|
+
"debug" => Logger::DEBUG
|
34
|
+
}.freeze
|
35
|
+
|
27
36
|
opts = GetoptLong.new(*[['--help', '-h', GetoptLong::NO_ARGUMENT],
|
28
37
|
['--listen', '-l', GetoptLong::REQUIRED_ARGUMENT],
|
29
38
|
['--status-code', GetoptLong::REQUIRED_ARGUMENT],
|
@@ -31,12 +40,8 @@ opts = GetoptLong.new(*[['--help', '-h', GetoptLong::NO_ARGUMENT],
|
|
31
40
|
['--watermark', GetoptLong::REQUIRED_ARGUMENT],
|
32
41
|
['--loglevel', GetoptLong::REQUIRED_ARGUMENT],
|
33
42
|
])
|
34
|
-
config = {}
|
35
|
-
|
36
|
-
"info" => Logger::INFO,
|
37
|
-
"warn" => Logger::WARN,
|
38
|
-
"debug" => Logger::DEBUG
|
39
|
-
}
|
43
|
+
config = {:loglevel => LEVELS["fatal"]}
|
44
|
+
|
40
45
|
opts.each do |opt, arg|
|
41
46
|
case opt
|
42
47
|
when '--help', '-h'
|
@@ -51,12 +56,12 @@ opts.each do |opt, arg|
|
|
51
56
|
when '--watermark'
|
52
57
|
config[:watermark] = arg.to_i
|
53
58
|
when '--loglevel'
|
54
|
-
if
|
55
|
-
config[:loglevel] =
|
59
|
+
if LEVELS.has_key?(arg)
|
60
|
+
config[:loglevel] = LEVELS[arg]
|
56
61
|
else
|
57
62
|
puts "ERROR: Wrong log level"
|
58
63
|
usage
|
59
|
-
exit
|
64
|
+
exit 1
|
60
65
|
end
|
61
66
|
end
|
62
67
|
end
|
@@ -69,6 +74,7 @@ end
|
|
69
74
|
|
70
75
|
config[:forward_to] = ARGV.shift
|
71
76
|
|
77
|
+
Yup.logger.level = config[:loglevel]
|
72
78
|
Yup.watermark = config[:watermark] if config.has_key?(:watermark)
|
73
79
|
Yup.resend_delay = config[:resend_delay] if config.has_key?(:resend_delay)
|
74
80
|
Yup.run(config)
|
data/lib/yup.rb
CHANGED
@@ -14,19 +14,20 @@ module Yup
|
|
14
14
|
def self.watermark; @@watermark end
|
15
15
|
def self.watermark=(seconds); @@watermark = seconds end
|
16
16
|
|
17
|
+
@@logger = Logger.new(STDOUT)
|
18
|
+
def self.logger; @@logger end
|
19
|
+
def self.logger=(logger); @@logger = logger end
|
20
|
+
|
17
21
|
def self.run(config)
|
18
22
|
host = config[:listen_host] || 'localhost'
|
19
23
|
port = config[:listen_port] || 8080
|
20
24
|
status_code = config[:status_code] || 200
|
21
25
|
forward_to = config[:forward_to]
|
22
26
|
|
23
|
-
logger = Logger.new(STDOUT)
|
24
|
-
logger.level = config[:loglevel]
|
25
|
-
|
26
27
|
EventMachine::run do
|
27
28
|
EventMachine::start_server(host, port, RequestHandler,
|
28
29
|
forward_to, status_code)
|
29
|
-
logger.info "listening on #{host}:#{port}"
|
30
|
+
logger.info { "listening on #{host}:#{port}" }
|
30
31
|
end
|
31
32
|
end
|
32
33
|
end
|
@@ -6,6 +6,8 @@ module Yup
|
|
6
6
|
@parser = parser
|
7
7
|
@body = body
|
8
8
|
@forward_to = forward_to
|
9
|
+
|
10
|
+
@logger = Yup.logger
|
9
11
|
end
|
10
12
|
|
11
13
|
def run
|
@@ -21,18 +23,18 @@ module Yup
|
|
21
23
|
Yup.watermark += 1
|
22
24
|
|
23
25
|
if http.response_header.status / 100 == 2
|
24
|
-
logger.info '--- SUCCESS'
|
26
|
+
@logger.info '--- SUCCESS'
|
25
27
|
else
|
26
|
-
logger.info '--- FAIL'
|
27
|
-
|
28
|
-
|
29
|
-
logger.debug http
|
28
|
+
@logger.info '--- FAIL'
|
29
|
+
@logger.debug { http.inspect }
|
30
|
+
@logger.debug { http.response_header.inspect }
|
31
|
+
@logger.debug { http.response.inspect }
|
30
32
|
end
|
31
33
|
end
|
32
34
|
|
33
35
|
http.errback do
|
34
|
-
logger.info '--- ERROR'
|
35
|
-
logger.debug http
|
36
|
+
@logger.info '--- ERROR'
|
37
|
+
@logger.debug { http.inspect }
|
36
38
|
|
37
39
|
EventMachine.add_timer(Yup.resend_delay) { self.run }
|
38
40
|
end
|
data/lib/yup/request_handler.rb
CHANGED
@@ -8,7 +8,9 @@ module Yup
|
|
8
8
|
def initialize(forward_to, status_code)
|
9
9
|
@forward_to = forward_to
|
10
10
|
@status_code = status_code
|
11
|
-
|
11
|
+
|
12
|
+
@logger = Yup.logger
|
13
|
+
@chunks = []
|
12
14
|
end
|
13
15
|
|
14
16
|
def post_init
|
@@ -28,11 +30,11 @@ module Yup
|
|
28
30
|
end
|
29
31
|
|
30
32
|
def on_message_complete
|
31
|
-
logger.info "-- got request"
|
32
|
-
logger.info "HTTP version: "
|
33
|
-
logger.info "HTTP method : " + @parser.http_method
|
34
|
-
logger.info "HTTP request_url : " + @parser.request_url
|
35
|
-
logger.debug "HTTP headers : " + @parser.headers
|
33
|
+
@logger.info "-- got request"
|
34
|
+
@logger.info { "HTTP version : " + @parser.http_version.join('.') }
|
35
|
+
@logger.info { "HTTP method : " + @parser.http_method }
|
36
|
+
@logger.info { "HTTP request_url : " + @parser.request_url }
|
37
|
+
@logger.debug { "HTTP headers : " + @parser.headers.inspect }
|
36
38
|
|
37
39
|
resp = WEBrick::HTTPResponse.new(:HTTPVersion => '1.1')
|
38
40
|
resp.status = @status_code
|
@@ -46,7 +48,7 @@ module Yup
|
|
46
48
|
RequestForwarder.new(@parser, @body, @forward_to).run
|
47
49
|
end
|
48
50
|
else
|
49
|
-
logger.error "-- watermark is reached, drop"
|
51
|
+
@logger.error "-- watermark is reached, drop"
|
50
52
|
end
|
51
53
|
end
|
52
54
|
end
|
data/yup.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{yup}
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.3"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Denis Sukhonin"]
|
12
|
-
s.date = %q{2011-08-
|
12
|
+
s.date = %q{2011-08-17}
|
13
13
|
s.default_executable = %q{yupd}
|
14
14
|
s.description = %q{Just answers 200 (or specified) to a client and asynchronously forwards HTTP request to a configured host}
|
15
15
|
s.email = %q{d.sukhonin@gmail.com}
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: 0.0.
|
8
|
+
- 3
|
9
|
+
version: 0.0.3
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Denis Sukhonin
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2011-08-
|
17
|
+
date: 2011-08-17 00:00:00 +04:00
|
18
18
|
default_executable: yupd
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -165,7 +165,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
165
165
|
requirements:
|
166
166
|
- - ">="
|
167
167
|
- !ruby/object:Gem::Version
|
168
|
-
hash: -
|
168
|
+
hash: -3474122509911024601
|
169
169
|
segments:
|
170
170
|
- 0
|
171
171
|
version: "0"
|