Files
isotope-server/routes/isotope/push.ar
T

40 lines
1.3 KiB
Plaintext

import "server" as *
import "randstr" as *
import "database" as *
let push(req, res) = do
let name = req.formdata.get("name", null)
if (name == null) do
res.code = 400
res.send("Missing name")
return
let version = req.formdata.get("version", null)
if (version == null) do
res.code = 400
res.send("Missing version")
return
let file = req.files.file
let latest = req.formdata.latest
let package = packages.get(name)
if (package == null) do
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
let filename = version+".tar.gz"
let p = path.join([directory, filename])
term.log(directory)
path.mkAllDir(directory)
file.save(p)
currentVersion.filename = filename
package.order[version] = time.now().unix()
if (latest == "true") do
package.versions['latest'] = {redirect: version}
makeChange()
res.send("OK")
app.route("/isotope-push", ['POST'], push)