From 1610d6e545069e597cd988748ef90e96137eed88 Mon Sep 17 00:00:00 2001 From: Amolith Date: Wed, 12 Jan 2022 03:47:49 -0500 Subject: [PATCH] Finish up link creation route --- create.go | 48 ++++++++++++++++++++++++++++++------------------ 1 file changed, 30 insertions(+), 18 deletions(-) diff --git a/create.go b/create.go index ca1fd7587005f6c01c0aee878d6ab2e3a21d47ff..e46ad4b6d3637df2a516a8c6bbf432041bc72d94 100644 --- a/create.go +++ b/create.go @@ -1,32 +1,44 @@ package main import ( + "fmt" "log" "net/http" + "strings" "github.com/dchest/uniuri" "github.com/dgraph-io/badger/v3" ) -func create(writer http.ResponseWriter, request *http.Request) { - var url string - if request.URL.Query().Get("url") == "" { - http.Error(writer, "Bad request - URL parameter is required", 400) - } else { - url = request.URL.Query().Get("url") - } +func (m *model) create(writer http.ResponseWriter, request *http.Request) { + query := request.URL.Query() - var name string - if request.URL.Query().Get("name") == "" { - name = request.URL.Query().Get("name") - } else { - name = uniuri.NewLen(4) - } + token := request.Header.Get("Authorization") + token = strings.TrimPrefix(token, "Bearer ") - err := db.Update(func(txn *badger.Txn) error { - return txn.Set([]byte(name), []byte(url)) - }) - if err != nil { - log.Fatal(err) + if token == m.AccessToken { + url := query.Get("url") + if len(url) == 0 { + http.Error(writer, "400 Bad Request: URL parameter is required", 400) + } else { + name := query.Get("name") + if len(name) == 0 { + name = uniuri.NewLen(4) + } + + log.Println("Saving \"" + url + "\" mapped to \"" + name + "\"") + + if len(name) != 0 && len(url) != 0 { + err := m.database.Update(func(txn *badger.Txn) error { + return txn.Set([]byte(name), []byte(url)) + }) + if err != nil { + log.Fatal(err) + } + http.Error(writer, fmt.Sprint("URL mapped to "+name), 200) + } + } + } else { + http.Error(writer, "401 Unauthorized: You do not have permission to create shortlinks", 403) } }