Change summary
delete.go | 34 ++++++++++++++++++++++++++++++++--
1 file changed, 32 insertions(+), 2 deletions(-)
Detailed changes
@@ -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)
}