class Blacksheep::ActionResult

Attributes

render_http_status[RW]
data[R]
status[R]

Public Class Methods

error(title: 'Error', message:, status: :internal_server_error, pointer: 'unspecified') click to toggle source
# File lib/blacksheep/action_result.rb, line 26
def error(title: 'Error', message:, status: :internal_server_error, pointer: 'unspecified')
  json = {
    errors: [
      pointer: {
        source: pointer
      },
      title: title,
      detail: message,
    ]
  }
  status = :internal_server_error

  new(json, status)
end
new(data, status) click to toggle source
# File lib/blacksheep/action_result.rb, line 8
def initialize(data, status)
  @data = data
  @status = status
end
success(message) click to toggle source
# File lib/blacksheep/action_result.rb, line 16
def success(message)
  json = {
    _meta: {
      message: message
    }
  }

  new(json, :ok)
end

Public Instance Methods

render_http_status() click to toggle source
# File lib/blacksheep/action_result.rb, line 58
def render_http_status
  self.class.render_http_status
end
render_json(json_wrap: 'data', render_http_status: self.render_http_status, to: nil) click to toggle source
# File lib/blacksheep/action_result.rb, line 62
def render_json(json_wrap: 'data', render_http_status: self.render_http_status, to: nil)
  if to.nil?
    return {
      json: wrap_json(json_wrap)
    }
  end

  if to.respond_to?(:render)
    if render_http_status
      to.render json: wrap_json(json_wrap), status: status
    else
      to.render json: wrap_json(json_wrap)
    end
  else
    raise ArgumentError, "render target #{to.class} does not respond to #render"
  end
end
set_data(value) click to toggle source
# File lib/blacksheep/action_result.rb, line 42
def set_data(value)
  @data = value

  self
end
set_status(value) click to toggle source
# File lib/blacksheep/action_result.rb, line 48
def set_status(value)
  @status = value

  self
end
success?() click to toggle source
# File lib/blacksheep/action_result.rb, line 54
def success?
  @status == :ok
end

Private Instance Methods

wrap_json(json_wrap) click to toggle source
# File lib/blacksheep/action_result.rb, line 82
def wrap_json(json_wrap)
  json_wrap.present? && success? ? { json_wrap => @data } : @data
end