class Jerakia::Server::Rest

Public Class Methods

jerakia() click to toggle source
# File lib/jerakia/server/rest.rb, line 12
def self.jerakia
  Jerakia::Server.jerakia
end
new() click to toggle source
Calls superclass method
# File lib/jerakia/server/rest.rb, line 16
def initialize
  @authorized_tokens={}
  super
end

Public Instance Methods

auth_denied() click to toggle source
# File lib/jerakia/server/rest.rb, line 25
def auth_denied
  request_failed('unauthorized', 401)
end
authenticate!() click to toggle source
# File lib/jerakia/server/rest.rb, line 38
def authenticate!
  token = env['HTTP_X_AUTHENTICATION']
  auth_denied if token.nil?
  return true if token_valid?(token)
  unless Jerakia::Server::Auth.authenticate(token)
    auth_denied
  end
  @authorized_tokens[token] = Time.now
end
determine_content_type!() click to toggle source
# File lib/jerakia/server/rest.rb, line 57
def determine_content_type!
  if not env.key?('CONTENT_TYPE') or env['CONTENT_TYPE'] == "application/json"
    content_type 'application/json'
    @content_type = :json
  elsif env['CONTENT_TYPE'] == "application/x-msgpack"
    content_type 'application/x-msgpack'
    @content_type = :msgpack
  else
    wrong_media_type("Content type #{env['CONTENT_TYPE']} not supported", 415)
  end
end
encode_result(data) click to toggle source
# File lib/jerakia/server/rest.rb, line 48
def encode_result(data)
  case @content_type
  when :json
    return data.to_json
  when :msgpack
    return data.to_msgpack
  end
end
jerakia() click to toggle source
# File lib/jerakia/server/rest.rb, line 21
def jerakia
  self.class.jerakia
end
mandatory_params(mandatory, params) click to toggle source
# File lib/jerakia/server/rest.rb, line 88
def mandatory_params(mandatory, params)
  mandatory.each do |m|
    unless params.include?(m)
      request_failed("Must include parameter #{m} in request", 400)
    end
  end
end
request_failed(message, status_code=501) click to toggle source
# File lib/jerakia/server/rest.rb, line 82
def request_failed(message, status_code=501)
  halt(status_code, 
       encode_result({ :status => 'failed', 
                       :message => message }))
end
token_ttl() click to toggle source
# File lib/jerakia/server/rest.rb, line 29
def token_ttl
  Jerakia::Server.config["token_ttl"]
end
token_valid?(token) click to toggle source
# File lib/jerakia/server/rest.rb, line 33
def token_valid?(token)
  return false unless @authorized_tokens[token].is_a?(Time)
  (Time.now - @authorized_tokens[token]) < token_ttl.to_i
end
wrong_media_type(message, status_code=415) click to toggle source
# File lib/jerakia/server/rest.rb, line 78
def wrong_media_type(message, status_code=415)
  halt(status_code, {'Content-Type' => 'text/plain'}, message)
end