aboutsummaryrefslogtreecommitdiff
path: root/packages/server/src/api/util.js
diff options
context:
space:
mode:
authorHampusM <hampus@hampusmat.com>2021-06-05 19:37:52 +0200
committerHampusM <hampus@hampusmat.com>2021-06-05 19:37:52 +0200
commit4da3272bf7893760f6710c9a1ec7de02358136e6 (patch)
tree92eb961bf20a7ef9f7c0650ba288baf512986fca /packages/server/src/api/util.js
parent4e3074dfd752dd52951d300090c642aee76cfaac (diff)
Reorganized into a monorepo, refactored the frontend again, goodbye Parcel
Diffstat (limited to 'packages/server/src/api/util.js')
-rw-r--r--packages/server/src/api/util.js45
1 files changed, 45 insertions, 0 deletions
diff --git a/packages/server/src/api/util.js b/packages/server/src/api/util.js
new file mode 100644
index 0000000..aa31296
--- /dev/null
+++ b/packages/server/src/api/util.js
@@ -0,0 +1,45 @@
+const fs = require("fs");
+const git = require("./git");
+
+function verifyRepoName(dirty, base_dir)
+{
+ return new Promise((resolve) =>
+ {
+ const is_valid_repo_name = /^[a-zA-Z0-9\\.\-_]+$/.test(dirty);
+ if(!is_valid_repo_name) {
+ resolve("ERR_REPO_REGEX");
+ }
+
+ fs.readdir(base_dir, (err, dir_content) =>
+ {
+ if(err) {
+ resolve("ERR_REPO_NOT_FOUND");
+ }
+
+ dir_content = dir_content.filter(repo => repo.endsWith(".git"));
+ if(!dir_content.includes(dirty + ".git")) {
+ resolve("ERR_REPO_NOT_FOUND");
+ }
+
+ resolve(true);
+ });
+ });
+}
+
+async function verifyCommitID(base_dir, repo, dirty)
+{
+ if(!/^[a-fA-F0-9]+$/.test(dirty)) {
+ return "ERR_COMMIT_REGEX";
+ }
+
+ const commit_exists = await git.doesCommitExist(base_dir, repo, dirty);
+
+ if(!commit_exists) {
+ return "ERR_COMMIT_NOT_FOUND";
+ }
+
+ return true;
+}
+
+module.exports.verifyRepoName = verifyRepoName;
+module.exports.verifyCommitID = verifyCommitID; \ No newline at end of file