Module: Belt::HttpStatus

Defined in:
lib/belt/http_status.rb

Overview

Rails/Rack-style symbolic HTTP status codes. Mirrors the common subset of Rack::Utils::SYMBOL_TO_STATUS_CODE so apps can write head :created / success_response(body, :created) without taking a rack dependency.

Constant Summary collapse

SYMBOL_TO_STATUS_CODE =
{
  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,
  unprocessable_entity: 422,
  locked: 423,
  failed_dependency: 424,
  upgrade_required: 426,
  precondition_required: 428,
  too_many_requests: 429,
  request_header_fields_too_large: 431,
  unavailable_for_legal_reasons: 451,
  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
}.freeze

Class Method Summary collapse

Class Method Details

.resolve(status) ⇒ Object

Resolve a status to an integer code. Accepts Integer (200), String ("201"), or Symbol (:created).



74
75
76
77
78
79
80
81
82
83
84
85
86
87
# File 'lib/belt/http_status.rb', line 74

def resolve(status)
  case status
  when Integer
    status
  when String
    Integer(status)
  when Symbol
    SYMBOL_TO_STATUS_CODE.fetch(status) do
      raise ArgumentError, "Unknown HTTP status symbol: #{status.inspect}"
    end
  else
    raise ArgumentError, "status must be Integer, String, or Symbol (got #{status.class})"
  end
end