Class: Carnivore::Http::App::Response
- Inherits:
-
Rack::Response
- Object
- Rack::Response
- Carnivore::Http::App::Response
- Defined in:
- lib/carnivore-http/app.rb
Overview
Customized response
Constant Summary collapse
- STATUS_CODES =
Lazy status mapping
Smash.new( "continue" => 100, "switching_protocols" => 101, "processing" => 102, "ok" => 200, "created" => 201, "accepted" => 202, "non_authoritative_information" => 203, "no_content" => 204, "reset_content" => 205, "partial_content" => 206, "multi_status" => 207, "already_reported" => 208, "im_used" => 226, "multiple_choices" => 300, "moved_permanently" => 301, "found" => 302, "see_other" => 303, "not_modified" => 304, "use_proxy" => 305, "temporary_redirect" => 307, "permanent_redirect" => 308, "bad_request" => 400, "unauthorized" => 401, "payment_required" => 402, "forbidden" => 403, "not_found" => 404, "method_not_allowed" => 405, "not_acceptable" => 406, "proxy_authentication_required" => 407, "request_timeout" => 408, "conflict" => 409, "gone" => 410, "length_required" => 411, "precondition_failed" => 412, "payload_too_large" => 413, "uri_too_long" => 414, "unsupported_media_type" => 415, "range_not_satisfiable" => 416, "expectation_failed" => 417, "misdirected_request" => 421, "unprocessable_entity" => 422, "locked" => 423, "failed_dependency" => 424, "upgrade_required" => 426, "precondition_required" => 428, "too_many_requests" => 429, "request_header_fields_too_large" => 431, "internal_server_error" => 500, "not_implemented" => 501, "bad_gateway" => 502, "service_unavailable" => 503, "gateway_timeout" => 504, "http_version_not_supported" => 505, "variant_also_negotiates" => 506, "insufficient_storage" => 507, "loop_detected" => 508, "not_extended" => 510, "network_authentication_required" => 511 )
Instance Method Summary collapse
-
#initialize(code, string_or_args, &block) ⇒ self
constructor
Create a new response.
Constructor Details
#initialize(code, string_or_args, &block) ⇒ self
Create a new response
84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
# File 'lib/carnivore-http/app.rb', line 84 def initialize(code, string_or_args, &block) status = STATUS_CODES.fetch(code, code).to_i case string_or_args when String body = string_or_args headers = {} when Hash headers = string_or_args.fetch(:headers, {}) if(string_or_args[:body]) body = string_or_args[:body] unless(headers['Content-Type']) headers['Content-Type'] = 'text/plain' end elsif(string_or_args[:json]) body = MultiJson.dump(string_or_args[:json]) unless(headers['Content-Type']) headers['Content-Type'] = 'application/json' end elsif(string_or_args[:form]) body = dump_query_string(string_or_args[:form]) unless(headers['Content-Type']) headers['Content-Type'] = 'application/x-www-form-urlencoded' end end else raise TypeError.new "Invalid type provided. Expected `String` or `Hash` but got `#{string_or_args.class}`" end super(body, status, headers, &block) end |