-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcontroller.rb
More file actions
79 lines (69 loc) · 1.21 KB
/
controller.rb
File metadata and controls
79 lines (69 loc) · 1.21 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
67
68
69
70
71
72
73
74
75
76
77
78
79
require 'sinatra'
require 'json'
require_relative 'key_server'
key_server = KeyServer.new
Thread.new do
loop do
sleep 1
key_server.cleanup
end
end
get '/' do
'OK'
end
# generate keys
get '/keys/generate' do
keys = key_server.generate_key(5)
keys.join('<br/>')
end
# get available keys
get '/keys/available/all' do
content_type :json
key_server.available_keys.to_json
end
# get all keyss
get '/keys/all' do
content_type :json
key_server.keys.to_json
end
# get an available key
get '/keys/available' do
key = key_server.get_key
if key.nil?
status 404
body 'No key is available'
else
status 200
body key
end
end
# unblock a key
get '/keys/unblock/:id' do |key|
if !key_server.unblock_key(key)
status 404
"No key #{key} found"
else
status 200
"Key: #{key} Unblocked"
end
end
# delete a key
get '/keys/delete/:id' do |key|
if !key_server.delete_key(key)
status 404
"No key #{key} found"
else
status 200
"Key : #{key} Deleted"
end
end
# keep alive key
get '/keys/keepalive/:id' do |key|
if !key_server.keep_alive_key(key)
status 404
"No key #{key} found"
else
status 200
"Keep alive successful for #{key}"
end
end