mirror of
https://github.com/Open-Argon/isotope-server.git
synced 2026-10-28 09:43:51 +00:00
add order versions by last updated and add 404 page
This commit is contained in:
1 parent
c48f568789
commit
30a4ee3add
8 files changed
+95
-6
No files matched your search
@@ -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
@@ -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"}]
|
||||
@@ -0,0 +1,6 @@
|
||||
import "../server" as *
|
||||
|
||||
let err404(req, res) = do
|
||||
res.code = 404
|
||||
res.renderTemplate("404.html", {})
|
||||
app.use(err404)
|
||||
@@ -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)
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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>
|
||||
@@ -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"
|
||||
|
||||
Reference in new issue
Block a user