Class: GaptoolServer

Inherits:
Sinatra::Application
  • Object
show all
Defined in:
lib/app.rb,
lib/routes.rb

Instance Method Summary collapse

Instance Method Details

#check_version(server, client) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/app.rb', line 40

def check_version(server, client)
  @@client_versions ||= {}
  cl_v = @@client_versions[client]
  if cl_v.nil?
    begin
      @@client_versions[client] = Versionomy.parse(client)
      cl_v = @@client_versions[client]
    rescue
      return false
    end
  end
  cl_v.major == server.major && cl_v.minor == server.minor
end

#error_response(msg = '') ⇒ Object



20
21
22
23
24
# File 'lib/app.rb', line 20

def error_response msg=''
  message = env['sinatra_error'].nil? ? "" : " #{env['sinatra.error'].message}"
  message = "#{msg}#{message}" unless msg.empty?
  json result: 'error', message: message
end

#invalid_version(server, client) ⇒ Object



54
55
56
# File 'lib/app.rb', line 54

def invalid_version(server, client)
  halt(400, error_response("Invalid version #{client} (server: #{server})"))
end

#require_parameters(required_keys, data) ⇒ Object



8
9
10
11
12
13
14
15
16
# File 'lib/routes.rb', line 8

def require_parameters(required_keys, data)
  data = data.delete_if { |k,v| v.nil? }
  required_keys = [*required_keys].to_set unless required_keys.is_a? Set
  keys = data.keys.to_set
  unless keys >= required_keys
    raise BadRequest, "Missing required_parameters: #{(required_keys - keys).to_a.join(" ")}"
  end
  data
end

#unauthenticated ⇒ Object



36
37
38
# File 'lib/app.rb', line 36

def unauthenticated
  halt(401, error_response("Unauthenticated"))
end