diff options
Diffstat (limited to 'share/ruby/aserv.rb')
-rw-r--r-- | share/ruby/aserv.rb | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/share/ruby/aserv.rb b/share/ruby/aserv.rb new file mode 100644 index 0000000..1ac3d60 --- /dev/null +++ b/share/ruby/aserv.rb | |||
@@ -0,0 +1,35 @@ | |||
1 | require "webrick" | ||
2 | |||
3 | # | ||
4 | # Dummy asset server | ||
5 | # | ||
6 | |||
7 | class AssetServlet < WEBrick::HTTPServlet::AbstractServlet | ||
8 | def do_GET(req, res) | ||
9 | uuid = req.path.split("/")[2].downcase.gsub(/[^0-9a-f]+/, "") | ||
10 | if uuid.length == 32 | ||
11 | # length is correct | ||
12 | File.open("assets/#{uuid}/data") do |f| | ||
13 | res.body = f.read | ||
14 | end | ||
15 | end | ||
16 | # res["content-type"] = "text/plain" # or what do we set it to ? | ||
17 | end | ||
18 | def do_POST(req, res) | ||
19 | uuid = req.path.split("/")[2].downcase.gsub(/[^0-9a-f]+/, "") | ||
20 | if uuid.length == 32 | ||
21 | Dir.mkdir("assets/#{uuid}") | ||
22 | File.open("assets/#{uuid}/data", "wb") do |f| | ||
23 | f.write req.body | ||
24 | STDERR.print "Written #{req.body.length} bytes for uuid #{uuid}\n\n" | ||
25 | end | ||
26 | end | ||
27 | end | ||
28 | end | ||
29 | |||
30 | |||
31 | svr = WEBrick::HTTPServer.new(:Port=>8003) | ||
32 | svr.mount("/assets", AssetServlet, 5000000) | ||
33 | trap(:INT){ svr.shutdown } | ||
34 | svr.start | ||
35 | |||