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