36 lines
860 B
Ruby
Executable File
36 lines
860 B
Ruby
Executable File
require "webrick"
|
|
|
|
#
|
|
# Dummy asset server
|
|
#
|
|
|
|
class AssetServlet < WEBrick::HTTPServlet::AbstractServlet
|
|
def do_GET(req, res)
|
|
uuid = req.path.split("/")[2].downcase.gsub(/[^0-9a-f]+/, "")
|
|
if uuid.length == 32
|
|
# length is correct
|
|
File.open("assets/#{uuid}/data") do |f|
|
|
res.body = f.read
|
|
end
|
|
end
|
|
# res["content-type"] = "text/plain" # or what do we set it to ?
|
|
end
|
|
def do_POST(req, res)
|
|
uuid = req.path.split("/")[2].downcase.gsub(/[^0-9a-f]+/, "")
|
|
if uuid.length == 32
|
|
Dir.mkdir("assets/#{uuid}")
|
|
File.open("assets/#{uuid}/data", "wb") do |f|
|
|
f.write req.body
|
|
STDERR.print "Written #{req.body.length} bytes for uuid #{uuid}\n\n"
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
svr = WEBrick::HTTPServer.new(:Port=>8003)
|
|
svr.mount("/assets", AssetServlet, 5000000)
|
|
trap(:INT){ svr.shutdown }
|
|
svr.start
|
|
|