Mercurial Hosting > disearch
diff src/bump.html.luan @ 16:552d6f944acb
add bump
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Wed, 01 Nov 2023 17:34:15 -0600 |
parents | src/choose_server.html.luan@af2b95854072 |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/bump.html.luan Wed Nov 01 17:34:15 2023 -0600 @@ -0,0 +1,110 @@ +local Luan = require "luan:Luan.luan" +local error = Luan.error +local stringify = Luan.stringify or error() +local ipairs = Luan.ipairs or error() +local Table = require "luan:Table.luan" +local sort = Table.sort or error() +local Time = require "luan:Time.luan" +local time_now = Time.now or error() +local Parsers = require "luan:Parsers.luan" +local json_parse = Parsers.json_parse or error() +local Html = require "luan:Html.luan" +local html_encode = Html.encode or error() +local url_encode = Html.url_encode or error() +local Io = require "luan:Io.luan" +local uri = Io.uri or error() +local Http = require "luan:http/Http.luan" +local Shared = require "site:/lib/Shared.luan" +local head = Shared.head or error() +local header = Shared.header or error() +local footer = Shared.footer or error() +local ago = Shared.ago or error() +local Config = require "site:/lib/Config.luan" +local Server = require "site:/lib/Server.luan" +local get_server = Server.get_by_discord_id or error() +local bumped_sort = Server.bumped_sort or error() +local Logging = require "luan:logging/Logging.luan" +local logger = Logging.logger "bump.html" + + +local function get_access_token() + local url = "https://discord.com/api/oauth2/token" + local config = Config.get() + local options = { + method = "POST" + headers = { + ["User-Agent"] = "Disboard" -- for retarded Cloudflare + } + authorization = { + username = config.discord.client_id + password = config.discord.client_secret + type = "basic" + } + parameters = { + grant_type = "refresh_token" + refresh_token = Http.request.cookies.refresh_token or error() + } + } + -- logger.info(stringify(options)) + local result = uri(url,options).read_text() + -- logger.info(result) + result = json_parse(result) + local access_token = result.access_token or error() + local refresh_token = result.refresh_token or error() + -- logger.info("access_token = "..access_token) + Http.response.set_persistent_cookie("refresh_token",refresh_token) + return access_token +end + +return function() + local access_token = get_access_token() + local url = "https://discord.com/api/users/@me/guilds" + local options = { + headers = { + ["User-Agent"] = "Disboard" -- for retarded Cloudflare + Authorization = "Bearer "..access_token + } + } + local result = uri(url,options).read_text() + -- logger.info(result) + result = json_parse(result) + -- logger.info(stringify(result)) + + local servers = {} + for _, server in ipairs(result) do + servers[#servers+1] = get_server(server.id) + end + sort(servers,bumped_sort) + -- logger.info(stringify(servers)) + + Io.stdout = Http.response.text_writer() +%> +<!doctype html> +<html> + <head> +<% head() %> + <title>Disearch</title> + </head> + <body> +<% header() %> + + <h1>Bump Servers</h1> +<% + local now = time_now() + for _, server in ipairs(servers) do +%> + <p> + <%=html_encode(server.name)%> + <% server.write_img_html() %> + <a href="<%=server.invite_url()%>">invite</a> + <a href="javascript:ajax('/bump.js?server=<%=server.id%>')">bump</a> + bumped <% ago( now - server.bumped ) %> + </p> +<% + end +%> +<% footer() %> + </body> +</html> +<% +end