Mercurial > prosody-modules
changeset 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 |
parents | 83fb61fa476e |
children | b0f4014cb5b4 |
files | mod_conversejs/mod_conversejs.lua |
diffstat | 1 files changed, 35 insertions(+), 0 deletions(-) [+] |
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; + } +}); +