Module: Multimeter::Http
- Defined in:
- lib/multimeter.rb
Defined Under Namespace
Classes: BadRequest
Constant Summary collapse
- COMMON_HEADERS =
{'Connection' => 'close'}.freeze
- JSON_HEADERS =
COMMON_HEADERS.merge('Content-Type' => 'application/json').freeze
- JSONP_HEADERS =
COMMON_HEADERS.merge('Content-Type' => 'application/javascript').freeze
- ERROR_HEADERS =
COMMON_HEADERS.merge('Content-Type' => 'text/plain').freeze
Class Method Summary collapse
Class Method Details
.create_app(registry) ⇒ Object
124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 |
# File 'lib/multimeter.rb', line 124 def self.create_app(registry) proc do |env| begin body = registry.to_h.to_json headers = JSON_HEADERS if (callback_name = env['QUERY_STRING'][/callback=([^$&]+)/, 1]) if callback_name =~ /^[\w\d.]+$/ body = "#{callback_name}(#{body});" headers = JSONP_HEADERS else raise BadRequest end else headers = headers.merge('Access-Control-Allow-Origin' => '*') end [200, headers, [body]] rescue BadRequest => e [400, ERROR_HEADERS, ['Bad Request']] rescue => e [500, ERROR_HEADERS, ["Internal Server Error\n\n", e., "\n\t", *e.backtrace.join("\n\t")]] end end end |