Class: Jerakia::Server::Rest

Inherits:
Sinatra::Base
  • Object
show all
Defined in:
lib/jerakia/server/rest.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeRest

Returns a new instance of Rest.



15
16
17
18
# File 'lib/jerakia/server/rest.rb', line 15

def initialize
  @authorized_tokens={}
  super
end

Class Method Details

.jerakiaObject



11
12
13
# File 'lib/jerakia/server/rest.rb', line 11

def self.jerakia
  Jerakia::Server.jerakia
end

Instance Method Details

#auth_deniedObject



24
25
26
# File 'lib/jerakia/server/rest.rb', line 24

def auth_denied
  request_failed('unauthorized', 401)
end

#authenticate!Object



37
38
39
40
41
42
43
44
45
# File 'lib/jerakia/server/rest.rb', line 37

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

#jerakiaObject



20
21
22
# File 'lib/jerakia/server/rest.rb', line 20

def jerakia
  self.class.jerakia
end

#mandatory_params(mandatory, params) ⇒ Object



63
64
65
66
67
68
69
# File 'lib/jerakia/server/rest.rb', line 63

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) ⇒ Object



56
57
58
59
60
61
# File 'lib/jerakia/server/rest.rb', line 56

def request_failed(message, status_code=501)
  halt(status_code, {
    :status => 'failed',
    :message => message,
  }.to_json)
end

#token_ttlObject



28
29
30
# File 'lib/jerakia/server/rest.rb', line 28

def token_ttl
  Jerakia::Server.config["token_ttl"]
end

#token_valid?(token) ⇒ Boolean

Returns:

  • (Boolean)


32
33
34
35
# File 'lib/jerakia/server/rest.rb', line 32

def token_valid?(token)
  return false unless @authorized_tokens[token].is_a?(Time)
  (Time.now - @authorized_tokens[token]) < token_ttl.to_i
end