Change summary
create.go | 48 ++++++++++++++++++++++++++++++------------------
1 file changed, 30 insertions(+), 18 deletions(-)
Detailed changes
@@ -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)
}
}