From 398758a72790f8ebdf9e1b5276e8a0ed8d5b57a7 Mon Sep 17 00:00:00 2001 From: Jef Roosens Date: Mon, 21 Feb 2022 22:32:54 +0100 Subject: [PATCH 1/2] Fixed segfault All together now: thank you spytheman --- src/env.v | 2 +- src/server/git.v | 10 ++++------ src/util.v | 1 - 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/env.v b/src/env.v index 1e601bd..26919f8 100644 --- a/src/env.v +++ b/src/env.v @@ -17,7 +17,7 @@ pub: download_dir string api_key string repo_dir string - repos_file string + repos_file string } pub struct BuildConfig { diff --git a/src/server/git.v b/src/server/git.v index 6a1d929..8c569e6 100644 --- a/src/server/git.v +++ b/src/server/git.v @@ -20,13 +20,14 @@ fn read_repos(path string) ?[]GitRepo { f.close() } - f.write_string('{}') ? + f.write_string('[]') ? return [] } content := os.read_file(path) ? - return json.decode([]GitRepo, content) + res := json.decode([]GitRepo, content) ? + return res } fn write_repos(path string, repos []GitRepo) ? { @@ -36,7 +37,6 @@ fn write_repos(path string, repos []GitRepo) ? { f.close() } - dump(repos) value := json.encode(repos) f.write_string(value) ? } @@ -91,9 +91,7 @@ pub fn (mut app App) post_repo() web.Result { repos << new_repo lock app.git_mutex { - write_repos(app.conf.repos_file, repos) or { - return app.server_error(500) - } + write_repos(app.conf.repos_file, repos) or { return app.server_error(500) } } return app.ok('Repo added successfully.') diff --git a/src/util.v b/src/util.v index 65d5294..24d33fc 100644 --- a/src/util.v +++ b/src/util.v @@ -88,4 +88,3 @@ pub fn pretty_bytes(bytes int) string { return '${n:.2}${util.prefixes[i]}' } - From fe98112f796d39bb14175386f6e0a0b29e94500b Mon Sep 17 00:00:00 2001 From: Jef Roosens Date: Mon, 21 Feb 2022 22:40:59 +0100 Subject: [PATCH 2/2] Added repos delete route --- src/server/git.v | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/server/git.v b/src/server/git.v index 8c569e6..d506c7e 100644 --- a/src/server/git.v +++ b/src/server/git.v @@ -96,3 +96,34 @@ pub fn (mut app App) post_repo() web.Result { return app.ok('Repo added successfully.') } + +['/api/repos'; delete] +pub fn (mut app App) delete_repo() web.Result { + if !app.is_authorized() { + return app.text('Unauthorized.') + } + + if !('url' in app.query && 'branch' in app.query) { + return app.server_error(400) + } + + repo_to_remove := GitRepo{ + url: app.query['url'] + branch: app.query['branch'] + } + + mut repos := rlock app.git_mutex { + read_repos(app.conf.repos_file) or { + app.lerror('Failed to read repos file.') + + return app.server_error(500) + } + } + filtered := repos.filter(it != repo_to_remove) + + lock app.git_mutex { + write_repos(app.conf.repos_file, filtered) or { return app.server_error(500) } + } + + return app.ok('Repo removed successfully.') +}