Mercurial > prosody-modules
comparison mod_register_apps/mod_register_apps.lua @ 4091:354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Thu, 10 Sep 2020 16:47:59 +0100 |
parents | |
children | ae2699f1cba9 |
comparison
equal
deleted
inserted
replaced
4090:e77122025080 | 4091:354dc1e7977a |
---|---|
1 module:depends("http"); | |
2 local http_files = module:depends("http_files"); | |
3 | |
4 local app_config = module:get_option("site_apps", { | |
5 { | |
6 name = "Conversations"; | |
7 text = [[Conversations is a Jabber/XMPP client for Android 4.0+ smartphones that has been optimized to provide a unique mobile experience.]]; | |
8 image = "assets/logos/conversations.svg"; | |
9 link = "https://play.google.com/store/apps/details?id=eu.siacs.conversations"; | |
10 platforms = { "Android" }; | |
11 supports_preauth_uri = true; | |
12 magic_link_format = "{app.link!}&referrer={invite.uri}"; | |
13 download = { | |
14 buttons = { | |
15 { | |
16 image = "https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png"; | |
17 url = "https://play.google.com/store/apps/details?id=eu.siacs.conversations"; | |
18 }; | |
19 }; | |
20 }; | |
21 }; | |
22 { | |
23 name = "yaxim"; | |
24 text = [[A lean Jabber/XMPP client for Android. It aims at usability, low overhead and security, and works on low-end Android devices starting with Android 4.0.]]; | |
25 image = "assets/logos/yaxim.svg"; | |
26 link = "https://play.google.com/store/apps/details?id=org.yaxim.androidclient"; | |
27 platforms = { "Android" }; | |
28 supports_preauth_uri = true; | |
29 magic_link_format = "{app.link!}&referrer={invite.uri}"; | |
30 download = { | |
31 buttons = { | |
32 { | |
33 image = "https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png"; | |
34 url = "https://play.google.com/store/apps/details?id=org.yaxim.androidclient"; | |
35 }; | |
36 }; | |
37 }; | |
38 }; | |
39 { | |
40 name = "Siskin IM"; | |
41 text = [[A lightweight and powerful XMPP client for iPhone and iPad. It provides an easy way to talk and share moments with your friends.]]; | |
42 image = "assets/logos/siskin-im.png"; | |
43 link = "https://apps.apple.com/us/app/siskin-im/id1153516838"; | |
44 platforms = { "iOS" }; | |
45 supports_preauth_uri = true; | |
46 download = { | |
47 buttons = { | |
48 { | |
49 image = "https://linkmaker.itunes.apple.com/en-us/badge-lrg.svg?releaseDate=2017-05-31&kind=iossoftware&bubble=ios_apps"; | |
50 url = "https://apps.apple.com/us/app/siskin-im/id1153516838"; | |
51 target = "_blank"; | |
52 }; | |
53 }; | |
54 }; | |
55 }; | |
56 { | |
57 name = "Beagle IM"; | |
58 text = [[Beagle IM by Tigase, Inc. is a lightweight and powerful XMPP client for macOS.]]; | |
59 image = "assets/logos/beagle-im.png"; | |
60 link = "https://apps.apple.com/us/app/beagle-im/id1445349494"; | |
61 platforms = { "macOS" }; | |
62 download = { | |
63 buttons = { | |
64 { | |
65 text = "Download from Mac App Store"; | |
66 url = "https://apps.apple.com/us/app/beagle-im/id1445349494"; | |
67 target = "_blank"; | |
68 }; | |
69 }; | |
70 }; | |
71 }; | |
72 { | |
73 name = "Dino"; | |
74 text = [[A modern open-source chat client for the desktop. It focuses on providing a clean and reliable Jabber/XMPP experience while having your privacy in mind.]]; | |
75 image = "assets/logos/dino.svg"; | |
76 link = "https://dino.im/"; | |
77 platforms = { "Linux" }; | |
78 download = { | |
79 text = "Click the button to open the Dino website where you can download and install it on your PC."; | |
80 buttons = { | |
81 { text = "Download Dino for Linux", url = "https://dino.im/#download", target="_blank" }; | |
82 }; | |
83 }; | |
84 }; | |
85 { | |
86 name = "Gajim"; | |
87 text = [[A fully-featured desktop chat client for Windows and Linux.]]; | |
88 image = "assets/logos/gajim.svg"; | |
89 link = "https://gajim.org/"; | |
90 platforms = { "Windows", "Linux" }; | |
91 download = { | |
92 buttons = { | |
93 { | |
94 text = "Download Gajim"; | |
95 url = "https://gajim.org/download/"; | |
96 target = "_blank"; | |
97 }; | |
98 }; | |
99 }; | |
100 }; | |
101 }); | |
102 | |
103 local base_url = module.http_url and module:http_url(); | |
104 local function relurl(s) | |
105 if s:match("^%w+://") then | |
106 return s; | |
107 end | |
108 return base_url.."/"..s; | |
109 end | |
110 | |
111 local site_apps = module:shared("apps"); | |
112 | |
113 for _, app_info in ipairs(app_config) do | |
114 local app_id = app_info.id or app_info.name:gsub("%W+", "-"):lower(); | |
115 app_info.id = app_id; | |
116 app_info.image = relurl(app_info.image); | |
117 site_apps[app_id] = app_info; | |
118 table.insert(site_apps, app_info); | |
119 end | |
120 | |
121 local mime_map = { | |
122 png = "image/png"; | |
123 svg = "image/svg+xml"; | |
124 }; | |
125 | |
126 module:provides("http", { | |
127 route = { | |
128 ["GET /assets/*"] = http_files and http_files.serve({ | |
129 path = module:get_directory().."/assets"; | |
130 mime_map = mime_map; | |
131 }); | |
132 }; | |
133 }); |