Diff

mod_conversejs/mod_conversejs.lua @ 2657:6f5c99c9f6cc

mod_conversejs: Simple demo module for serving converse.js from internal http server
author Kim Alvefur <zash@zash.se>
date Thu, 30 Mar 2017 23:41:09 +0200
child 2658:b0f4014cb5b4
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mod_conversejs/mod_conversejs.lua	Thu Mar 30 23:41:09 2017 +0200
@@ -0,0 +1,35 @@
+-- mod_conversejs
+-- Copyright (C) 2017 Kim Alvefur
+
+local json_encode = require"util.json".encode;
+
+module:depends"bosh";
+
+local has_ws = pcall(function ()
+	module:depends("websocket");
+end);
+
+local serve = module:depends"http_files".serve;
+
+local template = [[
+<!DOCTYPE html>
+<meta charset="utf-8">
+<link rel="stylesheet" type="text/css" media="screen" href="https://cdn.conversejs.org/css/converse.min.css">
+<script src="https://cdn.conversejs.org/dist/converse.min.js"></script>
+<script>converse.initialize(%s);</script>
+]]
+
+module:provides("http", {
+	route = {
+		GET = function (event)
+			event.response.headers.content_type = "text/html";
+			return template:format(json_encode({
+				-- debug = true,
+				bosh_service_url = module:http_url("bosh","/http-bind");
+				websocket_url = has_ws and module:http_url("websocket","xmpp-websocket"):gsub("^http", "ws") or nil;
+				authentication = module:get_option_string("authentication") == "anonymous" and "anonymous" or "login";
+			}));
+		end;
+	}
+});
+