diff options
author | tv <tv@krebsco.de> | 2021-08-31 20:06:03 +0200 |
---|---|---|
committer | tv <tv@krebsco.de> | 2021-08-31 20:06:03 +0200 |
commit | 20e358043546482acfa8c6134f095c1a64ef144d (patch) | |
tree | 11a83ba19ead657d71002dd7924579cbd4ad3dbd /tv | |
parent | e97a29678c097a9ea43bac340bec3fd3226001b5 (diff) |
tv elm-package-proxy: add DELETE
Diffstat (limited to 'tv')
-rw-r--r-- | tv/2configs/elm-packages-proxy.nix | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/tv/2configs/elm-packages-proxy.nix b/tv/2configs/elm-packages-proxy.nix index 265289bbf..1df8c7b70 100644 --- a/tv/2configs/elm-packages-proxy.nix +++ b/tv/2configs/elm-packages-proxy.nix @@ -197,6 +197,36 @@ in { exit ;; + 'DELETE /packages/'*) + + author=$req_x_author + pname=$req_x_package + user=$req_x_user + version=$req_x_version + + zipball=${cfg.packageDir}/$author/$pname/$version/zipball + elmjson=$HOME/cache/$author%2F$pname%2F$version%2Felm.json + endpointjson=$HOME/cache/$author%2F$pname%2F$version%2Fendpoint.json + + if test -e "$zipball"; then + zipball_owner=$(attr -q -g X-User "$zipball" || :) + if test "$zipball_owner" = "$req_x_user"; then + echo "user $user is deleting package $author/$pname@$version" >&2 + rm -f "$elmjson" + rm -f "$endpointjson" + rm "$zipball" + string_response 200 OK \ + "package deleted: $author/$pname@$version" \ + text/plain + exit + else + string_response 403 Forbidden \ + "package already exists: $author/$pname@$version" \ + text/plain + exit + fi + fi + ;; 'GET /all-packages'|'POST /all-packages') response=$(mktemp -t htgen.$$.elm-packages-proxy.all-packages.XXXXXXXX) |