updateHandler.go

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