Class: Pragma::Operation::Response

Inherits:
Object
  • Object
show all
Defined in:
lib/pragma/operation/response.rb,
lib/pragma/operation/response/ok.rb,
lib/pragma/operation/response/created.rb,
lib/pragma/operation/response/conflict.rb,
lib/pragma/operation/response/forbidden.rb,
lib/pragma/operation/response/not_found.rb,
lib/pragma/operation/response/no_content.rb,
lib/pragma/operation/response/bad_request.rb,
lib/pragma/operation/response/unauthorized.rb,
lib/pragma/operation/response/payment_required.rb,
lib/pragma/operation/response/service_unavailable.rb,
lib/pragma/operation/response/unprocessable_entity.rb,
lib/pragma/operation/response/internal_server_error.rb

Overview

Represents an HTTP response. Provides utilities to deal with status codes and such.

Defined Under Namespace

Classes: BadRequest, Conflict, Created, Forbidden, InternalServerError, NoContent, NotFound, Ok, PaymentRequired, ServiceUnavailable, Unauthorized, UnprocessableEntity

Constant Summary collapse

STATUSES =
{
  100 => :continue,
  101 => :switching_protocols,
  102 => :processing,
  200 => :ok,
  201 => :created,
  202 => :accepted,
  203 => :non_authoritative_information,
  204 => :no_content,
  205 => :reset_content,
  206 => :partial_content,
  207 => :multi_status,
  208 => :already_reported,
  300 => :multiple_choices,
  301 => :moved_permanently,
  302 => :found,
  303 => :see_other,
  304 => :not_modified,
  305 => :use_proxy,
  307 => :temporary_redirect,
  400 => :bad_request,
  401 => :unauthorized,
  402 => :payment_required,
  403 => :forbidden,
  404 => :not_found,
  405 => :method_not_allowed,
  406 => :not_acceptable,
  407 => :proxy_authentication_required,
  408 => :request_timeout,
  409 => :conflict,
  410 => :gone,
  411 => :length_required,
  412 => :precondition_failed,
  413 => :request_entity_too_large,
  414 => :request_uri_too_large,
  415 => :unsupported_media_type,
  416 => :request_range_not_satisfiable,
  417 => :expectation_failed,
  418 => :im_a_teapot,
  422 => :unprocessable_entity,
  423 => :locked,
  424 => :failed_dependency,
  425 => :unordered_collection,
  426 => :upgrade_required,
  428 => :precondition_required,
  429 => :too_many_requests,
  431 => :request_header_fields_too_large,
  449 => :retry_with,
  500 => :internal_server_error,
  501 => :not_implemented,
  502 => :bad_gateway,
  503 => :service_unavailable,
  504 => :gateway_timeout,
  505 => :http_version_not_supported,
  506 => :variant_also_negotiates,
  507 => :insufficient_storage,
  509 => :bandwidth_limit_exceeded,
  510 => :not_extended,
  511 => :network_authentication_required
}.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(status: 200, entity: nil, headers: {}) ⇒ Response

Initializes the response.

Parameters:

  • status (Integer|Symbol) (defaults to: 200)

    the HTTP status code of the response

  • entity (Object) (defaults to: nil)

    the entity/body of the response

  • headers (Hash) (defaults to: {})

    the headers of the response



84
85
86
87
88
# File 'lib/pragma/operation/response.rb', line 84

def initialize(status: 200, entity: nil, headers: {})
  self.status = status
  self.entity = entity
  self.headers = headers
end

Instance Attribute Details

#entityObject

Returns the entity/body of the response.

Returns:

  • (Object)

    the entity/body of the response



73
74
75
# File 'lib/pragma/operation/response.rb', line 73

def entity
  @entity
end

#headersHash

Returns the headers of the response.

Returns:

  • (Hash)

    the headers of the response



73
# File 'lib/pragma/operation/response.rb', line 73

attr_accessor :entity, :headers

#statusObject

Returns the value of attribute status.



77
78
79
# File 'lib/pragma/operation/response.rb', line 77

def status
  @status
end

Instance Method Details

#decorate_with(decorator) ⇒ Response

Applies a decorator to the response’s entity.

Examples:

Applying a decorator

response = Pragma::Operation::Response::Ok.new(entity: user).decorate_with(UserDecorator)

Parameters:

  • decorator (Class)

    the decorator to apply

Returns:

  • (Response)

    returns itself for chaining



132
133
134
135
136
# File 'lib/pragma/operation/response.rb', line 132

def decorate_with(decorator)
  tap do
    self.entity = decorator.represent(entity)
  end
end

#failure?Boolean

Returns whether the response has a failed HTTP status code, by checking whether the status code is 4xx or 5xx.

Returns:

  • (Boolean)


102
103
104
# File 'lib/pragma/operation/response.rb', line 102

def failure?
  !success?
end

#success?Boolean

Returns whether the response has a successful HTTP status code, by checking whether the status code is 1xx, 2xx or 3xx.

Returns:

  • (Boolean)


94
95
96
# File 'lib/pragma/operation/response.rb', line 94

def success?
  %w[1 2 3].include?(@status.to_s[0])
end