class Backframe::Response

Constants

FIELDS_REGEX
PAGE_REGEX

Public Class Methods

failure(message, status) click to toggle source
# File lib/backframe/response.rb, line 43
def failure(message, status)
  {
    json: {
      error: {
        message: message,
        status: status
      }
    },
    content_type: 'application/json',
    status: status
  }
end
render(records, params = {}) click to toggle source
# File lib/backframe/response.rb, line 12
def render(records, params = {})
  begin
    fields = Backframe::Response::Fields.new(records, params[:fields])
    collection = Backframe::Response::Collection.new(records, params[:page], params[:per_page])
    if params[:format] == 'json'
      data = Backframe::Response::Adapter::Json.render(collection, fields)
      success(json: data, content_type: 'application/json')
    elsif params[:format] == 'xml'
      data = Backframe::Response::Adapter::Xml.render(collection, fields)
      success(xml: data, content_type: 'application/xhtml+xml')
    elsif params[:format] == 'csv'
      data = Backframe::Response::Adapter::Csv.render(collection, fields, ",")
      success(text: data, content_type: 'text/plain')
    elsif params[:format] == 'tsv'
      data = Backframe::Response::Adapter::Csv.render(collection, fields, "\t")
      success(text: data, content_type: 'text/plain')
    elsif params[:format] == 'xlsx'
      data = Backframe::Response::Adapter::Xlsx.render(collection, fields)
      success(text: data, content_type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')
    else
      failure('Unknown Format', 404)
    end
  rescue Exception => e
    failure('Application Error', 500)
  end
end
success(*response) click to toggle source
# File lib/backframe/response.rb, line 39
def success(*response)
  response[0].merge(status: 200)
end