mod_conversejs/mod_conversejs.lua
changeset 5875 1c8197075d04
parent 5215 079ca766193b
equal deleted inserted replaced
5874:1ac4a59ac575 5875:1c8197075d04
   116 	return converse_options;
   116 	return converse_options;
   117 end
   117 end
   118 
   118 
   119 local add_tags = module:get_option_array("conversejs_tags", {});
   119 local add_tags = module:get_option_array("conversejs_tags", {});
   120 
   120 
       
   121 local service_name = module:get_option_string("name", "Prosody IM and Converse.js");
       
   122 local service_short_name = module:get_option_string("short_name", "Converse");
       
   123 local service_description = module:get_option_string("description", "Messaging Freedom")
       
   124 local pwa_color = module:get_option_string("pwa_color", "#397491")
       
   125 
   121 module:provides("http", {
   126 module:provides("http", {
   122 	title = "Converse.js";
   127 	title = "Converse.js";
   123 	route = {
   128 	route = {
   124 		GET = function (event)
   129 		GET = function (event)
   125 			local converse_options = get_converse_options();
   130 			local converse_options = get_converse_options();
   126 
   131 
   127 			event.response.headers.content_type = "text/html";
   132 			event.response.headers.content_type = "text/html";
   128 			return render(html_template, {
   133 			return render(html_template, {
   129 					service_name = module:get_option_string("name");
   134 					service_name = service_name;
       
   135 					-- note that using a relative path won’t work as this URL doesn’t end in a /
       
   136 					manifest_url = module:http_url().."/manifest.json",
   130 					header_scripts = { js_url };
   137 					header_scripts = { js_url };
   131 					header_style = { css_url };
   138 					header_style = { css_url };
   132 					header_tags = add_tags;
   139 					header_tags = add_tags;
   133 					conversejs = {
   140 					conversejs = {
   134 						options = converse_options;
   141 						options = converse_options;
   140 		["GET /prosody-converse.js"] = function (event)
   147 		["GET /prosody-converse.js"] = function (event)
   141 			local converse_options = get_converse_options();
   148 			local converse_options = get_converse_options();
   142 
   149 
   143 			event.response.headers.content_type = "application/javascript";
   150 			event.response.headers.content_type = "application/javascript";
   144 			return js_template:format(json_encode(converse_options));
   151 			return js_template:format(json_encode(converse_options));
       
   152 		end;
       
   153 		["GET /manifest.json"] = function (event)
       
   154 			-- See manifest.json in the root of Converse.js’s git repository
       
   155 			local data = {
       
   156 				short_name = service_short_name,
       
   157 				name = service_name,
       
   158 				description = service_description,
       
   159 				categories = {"social"},
       
   160 				icons = module:get_option_array("manifest_icons", {
       
   161 					{
       
   162 						src = cdn_url..version.."/dist/images/logo/conversejs-filled-512.png",
       
   163 						sizes = "512x512",
       
   164 					},
       
   165 					{
       
   166 						src = cdn_url..version.."/dist/images/logo/conversejs-filled-192.png",
       
   167 						sizes = "192x192",
       
   168 					},
       
   169 					{
       
   170 						src = cdn_url..version.."/dist/images/logo/conversejs-filled-192.svg",
       
   171 						sizes = "192x192",
       
   172 					},
       
   173 					{
       
   174 						src = cdn_url..version.."/dist/images/logo/conversejs-filled-512.svg",
       
   175 						sizes = "512x512",
       
   176 					},
       
   177 				}),
       
   178 				start_url = module:http_url(),
       
   179 				background_color = pwa_color,
       
   180 				display = "standalone",
       
   181 				scope = module:http_url().."/",
       
   182 				theme_color = pwa_color,
       
   183 			}
       
   184 			return {
       
   185 				headers = { content_type = "application/schema+json" },
       
   186 				body = json_encode(data),
       
   187 			}
   145 		end;
   188 		end;
   146 		["GET /dist/*"] = serve_dist;
   189 		["GET /dist/*"] = serve_dist;
   147 	}
   190 	}
   148 });
   191 });
   149 
   192