knative-env/env.rb

48 lines
1.3 KiB
Ruby

require 'rubygems'
require 'sinatra'
require 'json'
get '/' do
puts "Current env keys: #{ENV.keys.sort.inspect}"
res = "<html><body style=\"margin:0px auto; width:80%; font-family:monospace\">"
res << "<head><title>Knative Environment</title><meta name=\"viewport\" content=\"width=device-width\"></head>"
res << "<h2>Knative Environment</h2>"
res << "<div><table>"
ENV.keys.sort.each do |key|
value = begin
"<pre>" + JSON.pretty_generate(JSON.parse(ENV[key])) + "</pre>"
rescue
ENV[key]
end
res << "<tr><td><strong>#{key}</strong></td><td>#{value}</tr>"
end
res << "</table></div>"
res << "<h2>HTTP Request Headers</h2>"
res << "<div><table>"
env.inject({}){|acc, (k,v)| acc[$1.downcase] = v if k =~ /^http_(.*)/i; acc}.sort.each do |k,v|
res << "<tr><td><strong>#{k}</strong></td><td>#{v}</tr>"
end
res << "</table></div></body></html>"
end
get '/some-error' do
$stderr.puts "This is an error log"
end
get '/v1/:var' do
res = ENV[params['var'] + "\n"]
end
get '/v1/:var/:json_path' do
var = ENV[params['var']]
obj = JSON.parse(var)
params['json_path'].split(".").each do |k|
if obj.is_a?(Array)
obj = obj[k.to_i]
else
obj = obj[k]
end
end
res = obj.to_json + "\n"
end