merge token and uuid lookups to reduce roundtrips

pull/13/merge
Up 2024-05-12 19:44:04 +02:00
parent 81853b1863
commit f0c283af42
No known key found for this signature in database
GPG Key ID: 3B75CD7439FEB388
2 changed files with 10 additions and 18 deletions

View File

@ -82,17 +82,22 @@ func tokenFromRequest(r *http.Request) ([]byte, error) {
} }
func uuidFromRequest(r *http.Request) ([]byte, error) { func uuidFromRequest(r *http.Request) ([]byte, error) {
_, uuid, err := tokenAndUuidFromRequest(r)
return uuid, err
}
func tokenAndUuidFromRequest(r *http.Request) ([]byte, []byte, error) {
token, err := tokenFromRequest(r) token, err := tokenFromRequest(r)
if err != nil { if err != nil {
return nil, err return nil, nil, err
} }
uuid, err := db.FetchUUIDFromToken(token) uuid, err := db.FetchUUIDFromToken(token)
if err != nil { if err != nil {
return nil, fmt.Errorf("failed to validate token: %s", err) return nil, nil, fmt.Errorf("failed to validate token: %s", err)
} }
return uuid, nil return token, uuid, nil
} }
func httpError(w http.ResponseWriter, r *http.Request, err error, code int) { func httpError(w http.ResponseWriter, r *http.Request, err error, code int) {

View File

@ -163,7 +163,7 @@ func handleGameClassicSessionCount(w http.ResponseWriter, r *http.Request) {
} }
func handleSaveData(w http.ResponseWriter, r *http.Request) { func handleSaveData(w http.ResponseWriter, r *http.Request) {
uuid, err := uuidFromRequest(r) token, uuid, err := tokenAndUuidFromRequest(r)
if err != nil { if err != nil {
httpError(w, r, err, http.StatusBadRequest) httpError(w, r, err, http.StatusBadRequest)
return return
@ -212,13 +212,6 @@ func handleSaveData(w http.ResponseWriter, r *http.Request) {
} }
} }
var token []byte
token, err = tokenFromRequest(r)
if err != nil {
httpError(w, r, err, http.StatusBadRequest)
return
}
var active bool var active bool
if r.URL.Path == "/savedata/get" { if r.URL.Path == "/savedata/get" {
if datatype == 0 { if datatype == 0 {
@ -337,13 +330,7 @@ type CombinedSaveData struct {
// TODO wrap this in a transaction // TODO wrap this in a transaction
func handleSaveData2(w http.ResponseWriter, r *http.Request) { func handleSaveData2(w http.ResponseWriter, r *http.Request) {
var token []byte var token []byte
token, err := tokenFromRequest(r) token, uuid, err := tokenAndUuidFromRequest(r)
if err != nil {
httpError(w, r, err, http.StatusBadRequest)
return
}
uuid, err := uuidFromRequest(r)
if err != nil { if err != nil {
httpError(w, r, err, http.StatusBadRequest) httpError(w, r, err, http.StatusBadRequest)
return return