@@ -13,15 +13,14 @@ import (
1313type APIErrorString string
1414
1515const (
16- APIErrorAuthenticationFailed APIErrorString = "AuthenticationFailed"
17- APIErrorInvalidQuery APIErrorString = "InvalidQuery"
18- APIErrorInvalidProfileID APIErrorString = "InvalidProfileID"
19- APIErrorInvalidBanReason APIErrorString = "InvalidBanReason"
20- APIErrorInvalidBanLength APIErrorString = "InvalidBanLength"
21- APIErrorBanFailed APIErrorString = "BanFailed"
22- APIErrorUnbanFailed APIErrorString = "UnbanFailed"
23- APIErrorInvalidBanQuery APIErrorString = "InvalidBanQuery"
24- APIErrorBanNotFound APIErrorString = "BanNotFound"
16+ APIErrorFailedAuthentication APIErrorString = "failed_authentication"
17+ APIErrorInvalidQuery APIErrorString = "invalid_query"
18+ APIErrorInvalidProfileID APIErrorString = "invalid_profile_id"
19+ APIErrorInvalidReason APIErrorString = "invalid_reason"
20+ APIErrorInvalidBanLength APIErrorString = "invalid_ban_length"
21+ APIErrorBanFailed APIErrorString = "ban_failed"
22+ APIErrorUnbanFailed APIErrorString = "unban_failed"
23+ APIErrorBanNotFound APIErrorString = "ban_not_found"
2524)
2625
2726type APIError struct {
@@ -80,7 +79,7 @@ func parseGet(r *http.Request, w http.ResponseWriter, requiredRole Role) (query
8079
8180 authInfo := makeAuthInfo (query )
8281 if ! authenticate (authInfo , requiredRole ) {
83- replyError (w , http .StatusUnauthorized , APIErrorAuthenticationFailed )
82+ replyError (w , http .StatusUnauthorized , APIErrorFailedAuthentication )
8483 return nil , errAuthFailed
8584 }
8685 return query , nil
@@ -127,7 +126,7 @@ func parsePost(r *http.Request, w http.ResponseWriter, parsed any, requiredRole
127126 return errNoAuthInfo
128127 }
129128 if ! authenticate (authInfo , requiredRole ) {
130- replyError (w , http .StatusUnauthorized , APIErrorAuthenticationFailed )
129+ replyError (w , http .StatusUnauthorized , APIErrorFailedAuthentication )
131130 return errAuthFailed
132131 }
133132 return nil
@@ -159,11 +158,19 @@ func replyOK(w http.ResponseWriter, data any) {
159158 }
160159
161160 w .Header ().Set ("Content-Type" , "application/json" )
162- jsonData , err := json .Marshal (data )
163- if err != nil {
164- w .WriteHeader (http .StatusInternalServerError )
165- return
161+ var jsonData []byte
162+ if reflect .ValueOf (data ).Kind () == reflect .String {
163+ // Assume it's already JSON
164+ jsonData = []byte (data .(string ))
165+ } else {
166+ var err error
167+ jsonData , err = json .Marshal (data )
168+ if err != nil {
169+ w .WriteHeader (http .StatusInternalServerError )
170+ return
171+ }
166172 }
173+
167174 w .Header ().Set ("Content-Length" , strconv .Itoa (len (jsonData )))
168175 _ , _ = w .Write (jsonData )
169176}
0 commit comments