-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathapp_server.rb
More file actions
67 lines (56 loc) · 1.18 KB
/
app_server.rb
File metadata and controls
67 lines (56 loc) · 1.18 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
require 'sinatra'
require 'json'
require './key_server'
include KeyServer
keyserver = KeyServerClass.new
Thread.new do
while true
keyserver.freeup_keys
sleep 1
end
end
get '/' do
'Welcome to Key Server'
end
post '/keys' do
# generate set of 10 keys for every call
# checks to ensure doesn't exceed server
# key size limit
content_type :json
keyserver.create_keys(10)
{status: "success"}.to_json
end
head '/keys/:id' do
content_type :json
k = keyserver.get_key_info(params["id"])
halt 404 if k == nil
k.each { |key,val|
response.headers["X-#{key}"] = val.to_s
}
end
get '/keys' do
content_type :json
free_key = keyserver.get_free_key
if free_key == nil
halt 404, "No keys available"
end
{key: free_key}.to_json
end
delete '/keys/:id' do
content_type :json
k = params["id"]
halt 404 if keyserver.delete_key(k) == false
{status: "success"}.to_json
end
put '/keys/:id' do
content_type :json
k = params["id"]
halt 404 if keyserver.release_key(k) == false
{status: "success"}.to_json
end
put '/keepalive/:id' do
content_type :json
k = params["id"]
halt 404 if keyserver.keepalive(k) == false
{status: "success"}.to_json
end