class OnappMarket::API::Response

A resposne class for all API calls, may be inherited for more specific errors cases

Constants

BAD_REQUEST

A bad request, e.g. bad parameters

NOT_AUTHENTICATED

User / pass not ok

NOT_AUTHORIZED

User / pass ok, but this action is not permitted

NOT_FOUND

The resource could not be found

NOT_IMPLEMENTED

Code has not yet been implemented or this is not supported

NOT_PERMITTED

This operation is not permitted at the current time

OK

All ok e.g. 200

OK_SCHEDULED

API request acknowledged, but not completed, akin to 201

SERVER_ERROR

There was a server error

TIMEOUT_ERROR

There was a timeout

UNKNOWN

An unknown result e.g. 500

Attributes

data[R]

The data object to return (on success or failure)

errors[R]

An Array of errors

http_code[R]

HTTP Code

Public Class Methods

new(ok, data = nil, errors = nil, http_code = 500) click to toggle source

Create a new API response

Attributes

  • ok true or false

  • data the response object

  • errors An initial array of errors

  • http_code The #http_code (when generated server side)

# File lib/onapp_market/api/response.rb, line 58
def initialize(ok, data = nil, errors = nil, http_code = 500)
  @ok = ok
  @ok = @ok.to_bool if @ok.is_a? String
  @data = data
  errors = {} if errors == nil
  @errors = errors
  @http_code = http_code
end
render_200(data = nil) click to toggle source

Server side render of 200

Attribtues

  • data - Any data

Returns

  • Hash suitable for rails render

# File lib/onapp_market/api/response.rb, line 156
def self.render_200(data = nil)
  self.new(true, data, {OK => "ok"}, 200).render
end
render_201(data = nil) click to toggle source

Server side render of 201

Attribtues

  • data - Any data

Returns

  • Hash suitable for rails render

# File lib/onapp_market/api/response.rb, line 166
def self.render_201(data = nil)
  self.new(true, data, {OK_SCHEDULE => "ok"}, 201).render
end
render_401(errors, data = nil) click to toggle source

Server side render of 401

Attribtues

  • errors - Array of errors

  • data - Any data

Returns

  • Hash suitable for rails render

# File lib/onapp_market/api/response.rb, line 97
def self.render_401(errors, data = nil)
  errors = {errors => errors} if errors.is_a? String
  self.new(false, data, errors, 401).render
end
render_404(errors = NOT_FOUND, data = nil) click to toggle source

Server side render of 404

Attribtues

  • errors - Array of errors

  • data - Any data

Returns

  • Hash suitable for rails render

# File lib/onapp_market/api/response.rb, line 109
def self.render_404(errors = NOT_FOUND, data = nil)
  errors = {errors => errors } if errors.is_a? String
  self.new(false, data, errors, 404).render
end
render_422(errors = BAD_REQUEST, data = nil) click to toggle source

Server side render of 422

Attribtues

  • errors - Array of errors

  • data - Any data

Returns

  • Hash suitable for rails render

# File lib/onapp_market/api/response.rb, line 121
def self.render_422(errors = BAD_REQUEST, data = nil)
  errors = {errors => errors } if errors.is_a? String
  self.new(false, data, errors, 422).render
end
render_500(errors = SERVER_ERROR, data = nil) click to toggle source

Server side render of 501

Attribtues

  • errors - Array of errors

  • data - Any data

Returns

  • Hash suitable for rails render

# File lib/onapp_market/api/response.rb, line 145
def self.render_500(errors = SERVER_ERROR, data = nil)
  errors = {errors => errors} if errors.is_a? String
  self.new(false, data, errors, 500).render
end
render_501(errors = SERVER_ERROR, data = nil) click to toggle source

Server side render of 500

Attribtues

  • errors - Array of errors

  • data - Any data

Returns

  • Hash suitable for rails render

# File lib/onapp_market/api/response.rb, line 133
def self.render_501(errors = SERVER_ERROR, data = nil)
  errors = {errors => errors} if errors.is_a? String
  self.new(false, data, errors, 501).render
end

Public Instance Methods

add_error(code, error) click to toggle source

Add an error code

Attributes

  • code The code

  • error A textual description of the error

# File lib/onapp_market/api/response.rb, line 78
def add_error(code, error)
  @errors.push(error)
end
has_error?(code) click to toggle source

Does this repsonse have the specified error code?

Attributes

  • code The error code

# File lib/onapp_market/api/response.rb, line 86
def has_error?(code)
  @errors.inlude?(code)
end
is_ok?() click to toggle source

Was this response OK?

# File lib/onapp_market/api/response.rb, line 69
def is_ok?
  @ok
end
render() click to toggle source

Render an API status as a hash (suitable for Rails render). No dependencies

Returns

  • Hash suitable for rails render

# File lib/onapp_market/api/response.rb, line 174
def render
  {:json => {:ok => @ok, :errors => @errors, :data => @data}, :status => @http_code}
end