add order versions by last updated and add 404 page

This commit is contained in:
William Bell committed 2023-07-29 23:19:19 +02:00
1 parent c48f568789
commit 30a4ee3add
8 files changed
+95 -6

No files matched your search

+5
View File
@@ -1,3 +1,4 @@
term.time("load")
import "server" as *
import "config" as *
import "save"
@@ -12,4 +13,8 @@ import "routes/isotope/push"
import "routes/isotope/search"
import "routes/isotope/download"
import "routes/404"
term.timeEnd("load")
app.run()
+1 -1
View File
@@ -1 +1 @@
[{"Name":"bleach.ar","Version":"1.0.0","URL":"http://isotope.wbell.dev/isotope-download?name=bleach.ar\u0026version=1.0.0"},{"Name":"url.ar","Version":"1.0.0","URL":"http://isotope.wbell.dev/isotope-download?name=url.ar\u0026version=1.0.0"},{"Name":"shlex.ar","Version":"1.0.0","URL":"http://isotope.wbell.dev/isotope-download?name=shlex.ar\u0026version=1.0.0"},{"Name":"http.ar","Version":"1.0.3","URL":"http://isotope.wbell.dev/isotope-download?name=http.ar\u0026version=1.0.3"}]
[{"Name":"bleach.ar","Version":"1.0.0","URL":"http://isotope.wbell.dev/isotope-download?name=bleach.ar\u0026version=1.0.0"},{"Name":"url.ar","Version":"1.0.0","URL":"http://isotope.wbell.dev/isotope-download?name=url.ar\u0026version=1.0.0"},{"Name":"shlex.ar","Version":"1.0.0","URL":"http://isotope.wbell.dev/isotope-download?name=shlex.ar\u0026version=1.0.0"},{"Name":"http.ar","Version":"1.0.3","URL":"http://isotope.wbell.dev/isotope-download?version=1.0.3\u0026name=http.ar"},{"Name":"neon.ar","Version":"beta1.0.2","URL":"http://isotope.wbell.dev/isotope-download?name=neon.ar\u0026version=beta1.0.2"}]
+6
View File
@@ -0,0 +1,6 @@
import "../server" as *
let err404(req, res) = do
res.code = 404
res.renderTemplate("404.html", {})
app.use(err404)
+4 -1
View File
@@ -9,14 +9,16 @@ let push(req, res) = do
let latest = req.formdata.latest
let package = packages.get(name)
if (package == null) do
package = {versions:{}, name:name}
package = {versions:{}, order:{}, name:name}
latest = "true"
packages[name] = package
if ("order" not in package) package.order = {}
let currentVersion = package.versions.get(version)
let directory = path.join([program.cwd, "packages", name])
if (currentVersion == null) do
currentVersion = {name:name, version:version}
package.versions[version] = currentVersion
package.order[version] = time.now()
let filename = version+".tar.gz"
let p = path.join([directory, filename])
term.log(directory)
@@ -25,6 +27,7 @@ let push(req, res) = do
currentVersion.filename = filename
if (latest == "true") do
package.versions['latest'] = {redirect: version}
package.order['latest'] = time.now()
changes.n = changes.n + 1
res.send("OK")
app.route("/isotope-push", ['POST'], push)
+6 -3
View File
@@ -13,15 +13,18 @@ let package(req, res) = do
let package = packages.get(name)
if (package == null) do
res.code = 404
res.send("Package not found")
res.renderTemplate("404.html", {})
return
if ("order" not in package) do
package.order = {}
changes.n = changes.n + 1
if (version not in package.versions) do
res.code = 404
res.send("Version not found")
res.renderTemplate("404.html", {})
return
let versions = []
let keys = package.versions.keys()
keys.sort(true)
keys.sort(true, (v)=package.order.get(v, 0))
for (i from 0 to keys.length) do
let versioni = keys[i]
if (version == versioni) continue
+7
View File
@@ -159,4 +159,11 @@ pre {
border: 1px solid var(--primary);
overflow-x: auto;
cursor: pointer;
/* disable text highlighting */
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
+65
View File
@@ -0,0 +1,65 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>404 - Isotope</title>
<link rel="stylesheet" type="text/css" href="/styles.css" />
<meta
name="viewport"
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"
/>
<link
rel="apple-touch-icon"
sizes="180x180"
href="/apple-touch-icon.png"
/>
<link
rel="icon"
type="image/png"
sizes="32x32"
href="/favicon-32x32.png"
/>
<link
rel="icon"
type="image/png"
sizes="194x194"
href="/favicon-194x194.png"
/>
<link
rel="icon"
type="image/png"
sizes="192x192"
href="/android-chrome-192x192.png"
/>
<link
rel="icon"
type="image/png"
sizes="16x16"
href="/favicon-16x16.png"
/>
<link rel="manifest" href="/site.webmanifest" />
<link rel="mask-icon" href="/safari-pinned-tab.svg" color="#0b1d28" />
<meta name="apple-mobile-web-app-title" content="Isotope" />
<meta name="application-name" content="Isotope" />
<meta name="msapplication-TileColor" content="#0b1d28" />
<meta name="msapplication-TileImage" content="/mstile-144x144.png" />
<meta name="theme-color" content="#0b1d28" />
</head>
<body>
<div class="content">
<ul class="navbar">
<li>
<a href="/"><div class="logo"></div></a>
</li>
<li>
<a href="https://github.com/open-argon/Isotope">Github</a>
</li>
</ul>
<div>
<h1>Error 404</h1>
<p>Page not found</p>
</div>
</div>
</body>
</html>
+1 -1
View File
@@ -2,7 +2,7 @@
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Isotope</title>
<title>{{name}}@{{version}} - Isotope</title>
<link rel="stylesheet" type="text/css" href="/styles.css" />
<meta
name="viewport"