1// SPDX-FileCopyrightText: 2022 Amolith <amolith@secluded.site>
2//
3// SPDX-License-Identifier: BSD-2-Clause
4
5package main
6
7import (
8 "encoding/json"
9 "log"
10 "net/http"
11 "strconv"
12 "strings"
13)
14
15func (m model) readHandler(writer http.ResponseWriter, request *http.Request) {
16 token := request.Header.Get("Authorization")
17 token = strings.TrimPrefix(token, "Bearer ")
18
19 if token != m.AccessToken {
20 http.Error(writer, "403 Forbidden: You do not have permission to view shortlinks", 403)
21 return
22 }
23
24 query := request.URL.Query()
25
26 start := query.Get("start")
27 end := query.Get("end")
28 countQuery := query.Get("count")
29 if countQuery == "" {
30 http.Error(writer, "400 Bad Request: Count parameter is required", 400)
31 }
32
33 count, err := strconv.Atoi(countQuery)
34 if err != nil {
35 http.Error(writer, err.Error(), 400)
36 return
37 }
38
39 links, err := m.read(start, end, count)
40 if err != nil {
41 http.Error(writer, err.Error(), 400)
42 return
43 }
44
45 json, err := json.Marshal(links)
46 if err != nil {
47 log.Println(err)
48 }
49
50 _, err = writer.Write(json)
51 if err != nil {
52 log.Println(err)
53 }
54}