yup 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- 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"
|