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}