updateHandler.go

 1// SPDX-FileCopyrightText: 2022 Amolith <amolith@secluded.site>
 2//
 3// SPDX-License-Identifier: BSD-2-Clause
 4
 5package main
 6
 7import (
 8	"fmt"
 9	"net/http"
10	"strings"
11)
12
13func (m *model) updateHandler(writer http.ResponseWriter, request *http.Request) {
14	query := request.URL.Query()
15
16	token := request.Header.Get("Authorization")
17	token = strings.TrimPrefix(token, "Bearer ")
18
19	if token != m.AccessToken {
20		http.Error(writer, "401 Unauthorized: You do not have permission to edit shortlinks", 403)
21		return
22	}
23
24	oldName := query.Get("oldName")
25	name := query.Get("name")
26	destination := query.Get("url")
27
28	if len(oldName) == 0 {
29		http.Error(writer, "400 Bad Request: oldName parameter is required", 400)
30		return
31	}
32
33	if len(name) == 0 {
34		http.Error(writer, "400 Bad Request: name parameter is required", 400)
35		return
36	}
37
38	if len(destination) == 0 {
39		http.Error(writer, "400 Bad Request: url parameter is required", 400)
40		return
41	}
42
43	if len(name) != 0 && oldName != name {
44		if m.nameExists(name) {
45			http.Error(writer, "406 Not Acceptable: A shortened URL with this name already exists", 406)
46			return
47		}
48	}
49
50	response := m.update(name, destination, oldName)
51
52	writer.Write([]byte(response))
53}