This repository was archived by the owner on May 6, 2018. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathwaitress.rb
More file actions
57 lines (48 loc) · 1.3 KB
/
Copy pathwaitress.rb
File metadata and controls
57 lines (48 loc) · 1.3 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
require 'sinatra/base'
require 'sinatra/redis'
require 'haml'
class Waitress < Sinatra::Base
def self.redis
return @redis if @redis
@redis = Redis.new(:host => '127.0.0.1', :port => 6379, :thread_safe => true)
end
def self.redis=(redis)
@redis = redis
end
def redis
Waitress.redis
end
get '/' do
content_type 'text/html', :charset => 'utf-8'
haml :list, :locals => {:orders => redis.keys}
end
get '/usage' do
content_type 'text/plain', :charset => 'utf-8'
erb :usage
end
get '/:mac_address' do
content_type 'application/json'
find_order( params[:mac_address] )
end
post '/' do
content_type 'application/json'
if params[:mac_address] and params[:node]
take_order params[:mac_address], params[:node]
erb "{\"Status\": \"Order up for #{params[:mac_address]}.\"}"
else
halt 500, "{\"Status\": \"Malformed order. I need a mac_address and a node JSON to take your order.\"}"
end
end
def find_order( mac_address )
order = redis.get( mac_address )
if order
redis.del( mac_address )
return order
else
halt 404, "{\"Status\": \"Are you sure you have an order up? I can\'t seem to find it.\"}"
end
end
def take_order( mac_address, node )
redis.set(mac_address, node)
end
end