Change summary
getlinks.go | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++
main.go | 1 +
2 files changed, 52 insertions(+)
Detailed changes
@@ -0,0 +1,51 @@
+package main
+
+import (
+ "encoding/json"
+ "log"
+ "net/http"
+ "strings"
+
+ "github.com/dgraph-io/badger/v3"
+)
+
+func (m model) getLinks(writer http.ResponseWriter, request *http.Request) {
+ token := request.Header.Get("Authorization")
+ token = strings.TrimPrefix(token, "Bearer ")
+ cookie, _ := request.Cookie("access_token")
+
+ if token != m.AccessToken && cookie.Value != m.AccessToken {
+ http.Error(writer, "401 Unauthorized: You do not have permission to view shortlinks", 403)
+ return
+ }
+
+ links := make(map[string]string)
+
+ err := m.database.View(func(txn *badger.Txn) error {
+ opts := badger.DefaultIteratorOptions
+ opts.PrefetchSize = 10
+ iterator := txn.NewIterator(opts)
+ defer iterator.Close()
+ for iterator.Rewind(); iterator.Valid(); iterator.Next() {
+ item := iterator.Item()
+ k := item.Key()
+ err := item.Value(func(v []byte) error {
+ links[string(k)] = string(v)
+ return nil
+ })
+ if err != nil {
+ return err
+ }
+ }
+ return nil
+ })
+ if err != nil {
+ log.Println(err)
+ }
+
+ json, err := json.Marshal(links)
+ if err != nil {
+ log.Println(err)
+ }
+ writer.Write(json)
+}
@@ -58,6 +58,7 @@ func main() {
mux.HandleFunc("/create", m.create)
mux.HandleFunc("/delete", m.delete)
mux.HandleFunc("/edit", m.edit)
+ mux.HandleFunc("/get", m.getLinks)
if err = httpServer.ListenAndServe(); err == http.ErrServerClosed {
log.Println("Web server closed")