Class: Gaptool::Server

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

Class Attribute Summary collapse

Instance Method Summary collapse

Class Attribute Details

.versionsObject (readonly)

Returns the value of attribute versions.



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

def versions
  @versions
end

Instance Method Details

#check_versionObject



57
58
59
60
61
62
63
# File 'lib/app.rb', line 57

def check_version
  server = settings.version_parsed
  client_version.major >= server.major && \
    client_version.minor >= server.minor
rescue
  false
end

#client_versionObject



50
51
52
53
54
55
# File 'lib/app.rb', line 50

def client_version
  client = env['HTTP_X_GAPTOOL_VERSION']
  versions[client] ||= Versionomy.parse(client)
rescue
  nil
end

#error_response(msg = '') ⇒ Object



30
31
32
33
34
# File 'lib/app.rb', line 30

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_versionObject



65
66
67
# File 'lib/app.rb', line 65

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

#require_parameters(required_keys, data) ⇒ Object



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

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

#unauthenticatedObject



46
47
48
# File 'lib/app.rb', line 46

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

#versionsObject



23
24
25
# File 'lib/app.rb', line 23

def versions
  self.class.versions
end