Generalise create helper/function

Amolith created

Change summary

create.go      | 30 ++++--------------------------
helperfuncs.go | 33 +++++++++++++++++++++++++++++++++
main.go        |  2 +-
3 files changed, 38 insertions(+), 27 deletions(-)

Detailed changes

create.go 🔗

@@ -1,23 +1,20 @@
 package main
 
 import (
-	"fmt"
 	"log"
 	"net/http"
 	"strings"
 
 	"github.com/dchest/uniuri"
-	"github.com/dgraph-io/badger/v3"
 )
 
-func (m *model) create(writer http.ResponseWriter, request *http.Request) {
+func (m *model) createHandler(writer http.ResponseWriter, request *http.Request) {
 	query := request.URL.Query()
 
 	token := request.Header.Get("Authorization")
 	token = strings.TrimPrefix(token, "Bearer ")
-	cookie, err := request.Cookie("access_token")
 
-	if token != m.AccessToken && cookie.Value != m.AccessToken {
+	if token != m.AccessToken {
 		http.Error(writer, "401 Unauthorized: You do not have permission to create shortlinks", 403)
 		return
 	}
@@ -42,26 +39,7 @@ func (m *model) create(writer http.ResponseWriter, request *http.Request) {
 
 	log.Println("Saving \"" + url + "\" mapped to \"" + name + "\"")
 
-	err = m.database.Update(func(txn *badger.Txn) error {
-		return txn.Set([]byte(name), []byte(url))
-	})
-	if err != nil {
-		log.Fatal(err)
-	}
-
-	writer.Write([]byte(fmt.Sprint("URL mapped to ", name, "\n")))
-}
+	response := m.create(name, url)
 
-func (m model) nameExists(name string) bool {
-	err := m.database.View(func(txn *badger.Txn) error {
-		_, err := txn.Get([]byte(name))
-		if err != nil {
-			return err
-		}
-		return nil
-	})
-	if err != nil {
-		return true
-	}
-	return false
+	writer.Write([]byte(response))
 }

helperfuncs.go 🔗

@@ -0,0 +1,33 @@
+package main
+
+import (
+	"fmt"
+	"log"
+
+	"github.com/dgraph-io/badger/v3"
+)
+
+func (m model) create(name string, url string) string {
+	err := m.database.Update(func(txn *badger.Txn) error {
+		return txn.Set([]byte(name), []byte(url))
+	})
+	if err != nil {
+		log.Fatal(err)
+	}
+
+	return fmt.Sprint("URL mapped to ", name, "\n")
+}
+
+func (m model) nameExists(name string) bool {
+	err := m.database.View(func(txn *badger.Txn) error {
+		_, err := txn.Get([]byte(name))
+		if err != nil {
+			return err
+		}
+		return nil
+	})
+	if err != nil {
+		return true
+	}
+	return false
+}

main.go 🔗

@@ -55,7 +55,7 @@ func main() {
 	mux.HandleFunc("/", m.root)
 	mux.HandleFunc("/login", m.login)
 	mux.HandleFunc("/logout", m.logout)
-	mux.HandleFunc("/create", m.create)
+	mux.HandleFunc("/create", m.createHandler)
 	mux.HandleFunc("/delete", m.delete)
 	mux.HandleFunc("/edit", m.edit)
 	mux.HandleFunc("/get", m.getLinks)