aboutsummaryrefslogtreecommitdiff
path: root/api/v1.js
diff options
context:
space:
mode:
Diffstat (limited to 'api/v1.js')
-rw-r--r--api/v1.js67
1 files changed, 39 insertions, 28 deletions
diff --git a/api/v1.js b/api/v1.js
index 75509ad..7358d3b 100644
--- a/api/v1.js
+++ b/api/v1.js
@@ -1,52 +1,63 @@
const express = require("express");
const git = require("./git");
const sanitization = require("./sanitization");
-const fs = require('fs');
const router = express.Router();
-const base_dir="/home/hampus/Projects/"
+
+router.get("/info", function(req, res)
+{
+ res.json({ "data": req.settings });
+ return;
+});
router.get("/repos", async function(req, res)
{
- fs.readdir(base_dir, async (err, repo_dirs) =>
- {
- if(err) {
- throw err;
- }
- repo_dirs = repo_dirs.filter(repo => repo.endsWith(".git"));
+ let repo_dirs = await git.getRepos(req.settings["base_dir"]);
- console.log("Repo dirs: " + repo_dirs);
+ if(repo_dirs["error"]) {
+ res.status(500).send("Internal server error!");
+ return;
+ }
- const repos = await git.getBasicRepoInfo(base_dir, repo_dirs);
+ repo_dirs = repo_dirs["data"].filter(repo => repo.endsWith(".git"));
+ const repos = await git.getBasicRepoInfo(req.settings["base_dir"], repo_dirs);
+ res.json({ "data": repos });
+});
- console.log("I v1.js\n" + JSON.stringify(repos) + "\n");
+router.get("/repos/:repo", async function(req, res)
+{
+ if(!sanitization.sanitizeRepoName(req.params.repo)) {
+ res.status(400).json({ "error": "Unacceptable git repository name!" });
+ return;
+ }
+ const repo = `${req.params.repo}.git`;
+ const desc = await git.getRepoFile(req.settings["base_dir"], repo, "description");
- res.json({ "data": repos });
- });
+ res.json({ "data": { "name": req.params.repo, "description": desc } });
});
router.get("/repos/:repo/log", async function(req, res)
{
- if(sanitization.sanitizeRepoName(req.params.repo)) {
- const repo = `${req.params.repo}.git`;
- const log = await git.getLog(`${base_dir}/${repo}`);
+ if(!sanitization.sanitizeRepoName(req.params.repo)) {
+ res.status(400).json({ "error": "Unacceptable git repository name!" });
+ return;
+ }
+ const repo = `${req.params.repo}.git`;
+ const log = await git.getLog(req.settings["base_dir"], repo);
- if(log["error"]) {
- if(typeof log["error"] === "string") {
- res.status(500).json({ "error": log["error"] });
- return;
- }
- switch(log["error"]) {
- case 404:
- res.status(404).json({ "error": "Git repository doesn't exist!" });
- return;
- }
+ if(log["error"]) {
+ if(typeof log["error"] === "string") {
+ res.status(500).json({ "error": log["error"] });
return;
}
- res.json(log);
+ switch(log["error"]) {
+ case 404:
+ res.status(404).json({ "error": "Git repository doesn't exist!" });
+ return;
+ }
return;
}
- res.status(400).json({ "error": "Unacceptable git repository name!" });
+ res.json(log);
});
module.exports = router; \ No newline at end of file