Changeset

1536:8214458eacc8

net.httpserver: Add helper function to set up HTTP server according to given config options
author Matthew Wild <mwild1@gmail.com>
date Sun, 12 Jul 2009 15:20:43 +0100
parents 1535:0afc8ae01515
children 1537:6670af04aeb6
files net/httpserver.lua
diffstat 1 files changed, 21 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/net/httpserver.lua	Sun Jul 12 15:18:53 2009 +0100
+++ b/net/httpserver.lua	Sun Jul 12 15:20:43 2009 +0100
@@ -17,7 +17,7 @@
 
 local t_insert, t_concat = table.insert, table.concat;
 local s_match, s_gmatch = string.match, string.gmatch;
-local tonumber, tostring, pairs = tonumber, tostring, pairs;
+local tonumber, tostring, pairs, ipairs, type = tonumber, tostring, pairs, ipairs, type;
 
 local urlencode = function (s) return s and (s:gsub("%W", function (c) return string.format("%%%02x", c:byte()); end)); end
 
@@ -250,6 +250,26 @@
 	end
 end
 
+function new_from_config(ports, handle_request)
+	for _, options in ipairs(ports) do
+		local port, base, ssl, interface = 5280, "http-bind", false, nil;
+		if type(options) == "number" then
+			port = options;
+		elseif type(options) == "table" then
+			port, base, ssl, interface = options.port or 5280, options.path or "http-bind", options.ssl or false, options.interface;
+		elseif type(options) == "string" then
+			base = options;
+		end
+		
+		if ssl then
+			ssl.mode = "server";
+			ssl.protocol = "sslv23";
+		end
+		
+		new{ port = port, base = base, handler = handle_request, ssl = ssl, type = (ssl and "ssl") or "tcp" }
+	end
+end
+
 _M.request_reader = request_reader;
 _M.send_response = send_response;
 _M.urlencode = urlencode;