class RestBase::Application

Attributes

errored[R]
forensics[R]
request_body[R]
request_version[R]

Public Instance Methods

add_forensics_to_response?() click to toggle source
# File lib/rest_base/application_helper.rb, line 48
def add_forensics_to_response?
  !@env['Forensics'].nil? && @env['Forensics'].downcase == 'true'
end
authenticated?() click to toggle source
# File lib/rest_base/application_helper.rb, line 3
def authenticated?
  authorized = true
  authorized = settings.authentication.authorized?(request, @env['HTTP_AUTHORIZATION']) unless settings.authentication.nil?
  authorized
end
create_response() click to toggle source
# File lib/rest_base/application_helper.rb, line 52
def create_response()
  content_type :json
  content_type :xml if !request.accept?('*/*') && request.accept?('text/xml')
  
  if (response.status >= 400)
    error_hash = response.body
    error_hash = [error_hash] unless error_hash.is_a?(Array)

    response.body = nil
  end
  
  response_hash = { }
  response_hash[:errors] = error_hash unless error_hash.nil? || error_hash.empty?
  response_hash[:result] = response.body unless response.body.nil? || response.body.empty?
  response_hash[:forensics] = @forensics if add_forensics_to_response? && !(@forensics.nil? || @forensics.empty?)
  
  return '' if empty_body_status_code? && (response.body.empty?)
  return response_hash.to_xml(:root => :response) if response.headers['Content-Type'].start_with? 'application/xml;'
  response_hash.to_json
end
empty_body_status_code?() click to toggle source
# File lib/rest_base/application_helper.rb, line 73
def empty_body_status_code?
  empty_body_status_codes = [201, 204, 304]
  response != nil && empty_body_status_codes.include?(response.status)
end
get_version() click to toggle source
# File lib/rest_base/application_helper.rb, line 15
def get_version
  matchdata = @env['HTTP_ACCEPT'].to_s.scan(/(version)=(\d*)/)
  matchdata[0][1].delete(',').to_f
end
has_version?(version) click to toggle source
# File lib/rest_base/application_helper.rb, line 9
def has_version?(version)
  return true unless settings.header_versioning
  @env['HTTP_ACCEPT'] = "*/*" if @env['HTTP_ACCEPT'].nil?
  @env['HTTP_ACCEPT'].include?(version)
end
set_api_version() click to toggle source
# File lib/rest_base/application_helper.rb, line 20
def set_api_version
  @env['HTTP_ACCEPT'] += ";version=#{settings.api_version}" unless has_version?("version=")
  @env['sinatra.accept'] = nil
  @request_version = get_version
end
set_request_body() click to toggle source
# File lib/rest_base/application_helper.rb, line 26
def set_request_body
  read_body = request.body.read

  begin
    if read_body.empty?
      @request_body = {}
    elsif request.media_type.downcase == 'text/xml'
      @request_body = Hash.from_xml(read_body)
      @request_body = Hash[@request_body.map{ |k, v| [k.to_sym, v] }]
      @request_body = @request_body[:request]
    else
      @request_body = JSON.parse(read_body, :symbolize_names => true)
    end
  rescue
    raise StandardError.new("Invalid Request Body")
  end
end
setup_forensics() click to toggle source
# File lib/rest_base/application_helper.rb, line 44
def setup_forensics
  @forensics = []
end