-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdebug_app.rb
More file actions
67 lines (55 loc) · 1.55 KB
/
Copy pathdebug_app.rb
File metadata and controls
67 lines (55 loc) · 1.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
###
# log requests that hopefully send some readable data
#
# RACK_ENV=development bundle exec unicorn --config-file unicorn_conf.rb config.ru
#
require 'json'
require 'logger'
require 'sinatra/base'
require 'sinatra/multi_route'
require 'rack'
require 'rack/contrib'
require 'active_support/all'
class DebugApp < Sinatra::Base
register Sinatra::MultiRoute
configure do
set :raise_errors, true
set :dump_errors, false
set :show_exceptions, false
use Rack::BounceFavicon
end
get '/health-check' do
set_response_headers
[200, {}, ['this is the debug app']]
end
route :patch, :post, :put, :delete, '/*' do
set_response_headers
puts("#{request.url}#{request.query_string}")
puts("## headers")
request.env.slice(*header_keys_to_display).map do |k, v|
puts("#{k}: #{v}")
end
puts("## body")
body = request.body.read; request.body.rewind
print_body(body)
puts("\n")
[200, {}, ['']]
end
private
def header_keys_to_display
@good_keys ||= [
"HTTP_USER_AGENT",
"HTTP_X_TASK_SCHEDULER_SECRET_TOKEN",
]
end
def print_body(body)
begin puts(JSON.pretty_generate(JSON.parse(body))); return nil; rescue StandardError; nil; end
begin puts(URI.decode_www_form(body)); return nil; rescue StandardError; nil; end
begin puts(XML.parse(body)); return nil; rescue StandardError; nil; end
begin puts(body); return nil; rescue StandardError; nil; end
puts("???") if body.present?
end
def set_response_headers
response.headers['X-app-name'] = 'debug_app'
end
end