-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.rb
49 lines (40 loc) · 1.13 KB
/
main.rb
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
require 'webrick'
class ControlMessage
attr_accessor :text, :number
def initialize(text, number)
@text = text.force_encoding('UTF-8')
@number = number
end
def [](key)
send(key)
end
end
# Process the control message
def process_message(message)
puts "Accepted Control message, Text: #{message[:text]}, Number: #{message[:number]}"
end
# Start the server and listen for incoming requests
port = 3040
hostname = 'localhost'
puts "Server is started at http://#{hostname}:#{port}"
server = WEBrick::HTTPServer.new(Port: port)
server.mount_proc('/admin') do |req, res|
if req.request_method == 'POST'
text = req.query['text'].force_encoding('UTF-8')
number = req.query['number'].to_i
if text.nil? || number.zero?
res.status = 400
res.body = 'Bad Request'
else
message = ControlMessage.new(text, number)
process_message(message)
res.status = 200
res.body = "OK, Accepted Control message, Text: #{text}, Number: #{number}"
end
else
res.status = 200
res.body = "OK: It's a GET method or url not in \"/admin\""
end
end
trap('INT') { server.shutdown }
server.start