changeset 933:5a975ba6a845

mod_candy: Example of how easy it is to serve files from a prosody module
author Kim Alvefur <zash@zash.se>
date Sun, 24 Mar 2013 23:58:40 +0100
parents 4e235e565693
children 15e2c4fd26a0
files mod_candy/mod_candy.lua mod_candy/www_files/index.html
diffstat 2 files changed, 59 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mod_candy/mod_candy.lua	Sun Mar 24 23:58:40 2013 +0100
@@ -0,0 +1,27 @@
+-- mod_candy.lua
+-- Copyright (C) 2013 Kim Alvefur
+--
+-- Run this in www_files
+-- curl -L http://github.com/candy-chat/candy/tarball/master | tar xzfv - --strip-components=1
+
+local json_encode = require"util.json".encode;
+
+local serve = module:depends"http_files".serve;
+
+module:provides("http", {
+	route = {
+		["GET /prosody.js"] = function(event)
+			event.response.headers.content_type = "text/javascript";
+			return ("// Generated by Prosody\n"
+				.."var Prosody = %s;\n")
+					:format(json_encode({
+						bosh_path = module:http_url("bosh","/http-bind");
+						version = prosody.version;
+						host = module:get_host();
+						anonymous = module:get_option_string("authentication") == "anonymous";
+					}));
+		end;
+		["GET /*"] = serve(module:get_directory().."/www_files");
+	}
+});
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mod_candy/www_files/index.html	Sun Mar 24 23:58:40 2013 +0100
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+	<meta charset="utf-8">
+	<title>Candy - Powered by Prosŏdy</title>
+	<link rel="shortcut icon" href="res/img/favicon.png" type="image/gif" />
+	<link rel="stylesheet" type="text/css" href="res/default.css" />
+
+	<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"></script>
+	<script type="text/javascript" src="libs/libs.min.js"></script>
+	<script type="text/javascript" src="candy.min.js"></script>
+	<script type="text/javascript" src="prosody.js"></script>
+	<script type="text/javascript">
+		$(document).ready(function() {
+			Candy.init(Prosody.bosh_path, {
+				core: { debug: false },
+				view: { resources: 'res/' }
+			});
+
+			if(Prosody.anonymous) {
+				Candy.Core.connect(Prosody.host);
+			} else {
+				Candy.Core.connect();
+			}
+			document.title += " " + Prosody.version;
+		});
+	</script>
+</head>
+<body>
+	<div id="candy"></div>
+</body>
+</html>