From 6d57b1b2ac89e54521618b913e417c1404019e82 Mon Sep 17 00:00:00 2001 From: Amolith Date: Sat, 5 Feb 2022 01:29:51 -0500 Subject: [PATCH] Implement delete function --- delete.go | 34 ++++++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/delete.go b/delete.go index a70def996d1ee4f12526ae020d64877884f8f347..a94ce58db206954ce3677c25d1026def17b139ed 100644 --- a/delete.go +++ b/delete.go @@ -1,6 +1,36 @@ package main -import "net/http" +import ( + "fmt" + "log" + "net/http" + "strings" -func (m model) delete(writer http.ResponseWriter, request *http.Request) { + "github.com/dgraph-io/badger/v3" +) + +func (m *model) delete(writer http.ResponseWriter, request *http.Request) { + query := request.URL.Query() + + token := request.Header.Get("Authorization") + token = strings.TrimPrefix(token, "Bearer ") + + if token != m.AccessToken { + http.Error(writer, "401 Unauthorized: You do not have permission to delete shortlinks", 403) + return + } + + name := query.Get("name") + if len(name) == 0 { + http.Error(writer, "400 Bad Request: name parameter is required", 400) + } + + err := m.database.Update(func(txn *badger.Txn) error { + return txn.Delete([]byte(name)) + }) + if err != nil { + log.Println(err) + } + + http.Error(writer, fmt.Sprint("\"", name, "\" has been deleted"), 200) }