56 lines
1.3 KiB
Go
56 lines
1.3 KiB
Go
package app
|
|
|
|
import (
|
|
"net/http"
|
|
"strings"
|
|
)
|
|
|
|
func handleTransportClients(w http.ResponseWriter, r *http.Request) {
|
|
switch r.Method {
|
|
case http.MethodGet:
|
|
handleTransportClientsGet(w, r)
|
|
case http.MethodPost:
|
|
handleTransportClientsPost(w, r)
|
|
default:
|
|
http.Error(w, "method not allowed", http.StatusMethodNotAllowed)
|
|
}
|
|
}
|
|
|
|
func handleTransportClientByID(w http.ResponseWriter, r *http.Request) {
|
|
const prefix = "/api/v1/transport/clients/"
|
|
rest := strings.TrimPrefix(r.URL.Path, prefix)
|
|
if rest == "" || rest == r.URL.Path {
|
|
http.NotFound(w, r)
|
|
return
|
|
}
|
|
parts := strings.Split(strings.Trim(rest, "/"), "/")
|
|
if len(parts) == 0 || strings.TrimSpace(parts[0]) == "" {
|
|
http.NotFound(w, r)
|
|
return
|
|
}
|
|
id := sanitizeID(parts[0])
|
|
if id == "" {
|
|
http.Error(w, "invalid client id", http.StatusBadRequest)
|
|
return
|
|
}
|
|
|
|
if len(parts) == 1 {
|
|
handleTransportClientCard(w, r, id)
|
|
return
|
|
}
|
|
handleTransportClientAction(w, r, id, strings.ToLower(strings.TrimSpace(parts[1])))
|
|
}
|
|
|
|
func handleTransportClientCard(w http.ResponseWriter, r *http.Request, id string) {
|
|
switch r.Method {
|
|
case http.MethodGet:
|
|
handleTransportClientCardGet(w, r, id)
|
|
case http.MethodPatch:
|
|
handleTransportClientCardPatch(w, r, id)
|
|
case http.MethodDelete:
|
|
handleTransportClientCardDelete(w, r, id)
|
|
default:
|
|
http.Error(w, "method not allowed", http.StatusMethodNotAllowed)
|
|
}
|
|
}
|