List tokens via GET /token

This commit is contained in:
Scott Schneider 2015-08-18 18:44:27 -07:00
parent 4e7dc236b9
commit 492cfb06a3
2 changed files with 38 additions and 0 deletions

View file

@ -15,6 +15,10 @@ module Vmpooler
call env.merge("PATH_INFO" => "/api/v#{api_version}/summary/#{params[:route]}/#{params[:key]}") call env.merge("PATH_INFO" => "/api/v#{api_version}/summary/#{params[:route]}/#{params[:key]}")
end end
get '/token/?' do
call env.merge("PATH_INFO" => "/api/v#{api_version}/token")
end
post '/token/?' do post '/token/?' do
call env.merge("PATH_INFO" => "/api/v#{api_version}/token") call env.merge("PATH_INFO" => "/api/v#{api_version}/token")
end end

View file

@ -162,6 +162,40 @@ module Vmpooler
JSON.pretty_generate(result) JSON.pretty_generate(result)
end end
get "#{api_prefix}/token/?" do
content_type :json
status 404
result = { 'ok' => false }
if Vmpooler::API.settings.config[:auth]
status 401
need_auth!
backend.keys('vmpooler__token__*').each do |key|
data = backend.hgetall(key)
if data['user'] == Rack::Auth::Basic::Request.new(request.env).username
token = key.split('__').last
result[token] ||= {}
result[token]['created'] = data['timestamp']
result['ok'] = true
end
end
if result['ok']
status 200
else
status 404
end
end
JSON.pretty_generate(result)
end
get "#{api_prefix}/token/:token/?" do get "#{api_prefix}/token/:token/?" do
content_type :json content_type :json