@@ -15,18 +15,17 @@ import (
1515
1616func HandleBan (w http.ResponseWriter , r * http.Request ) {
1717 var user * database.User
18- var success bool
19- var err string
2018 var statusCode int
19+ var err error
2120
2221 if r .Method == http .MethodPost {
23- user , success , err , statusCode = handleBanImpl (r )
22+ user , statusCode , err = handleBanImpl (r )
2423 } else if r .Method == http .MethodOptions {
2524 statusCode = http .StatusNoContent
2625 w .Header ().Set ("Access-Control-Allow-Methods" , "POST" )
2726 w .Header ().Set ("Access-Control-Allow-Headers" , "Content-Type" )
2827 } else {
29- err = "Incorrect request. POST only."
28+ err = ErrPostOnly
3029 statusCode = http .StatusMethodNotAllowed
3130 w .Header ().Set ("Allow" , "POST" )
3231 }
@@ -41,7 +40,7 @@ func HandleBan(w http.ResponseWriter, r *http.Request) {
4140
4241 if statusCode != http .StatusNoContent {
4342 w .Header ().Set ("Content-Type" , "application/json" )
44- jsonData , _ = json .Marshal (UserActionResponse {* user , success , err })
43+ jsonData , _ = json .Marshal (UserActionResponse {* user , err == nil , resolveError ( err ) })
4544 }
4645
4746 w .Header ().Set ("Content-Length" , strconv .Itoa (len (jsonData )))
@@ -61,30 +60,30 @@ type BanRequestSpec struct {
6160 Moderator string `json:"moderator"`
6261}
6362
64- func handleBanImpl (r * http.Request ) (* database.User , bool , string , int ) {
63+ func handleBanImpl (r * http.Request ) (* database.User , int , error ) {
6564 // TODO: Actual authentication rather than a fixed secret
6665
6766 body , err := io .ReadAll (r .Body )
6867 if err != nil {
69- return nil , false , "Unable to read request body" , http .StatusBadRequest
68+ return nil , http .StatusBadRequest , ErrRequestBody
7069 }
7170
7271 var req BanRequestSpec
7372 err = json .Unmarshal (body , & req )
7473 if err != nil {
75- return nil , false , err . Error (), http .StatusBadRequest
74+ return nil , http .StatusBadRequest , err
7675 }
7776
7877 if apiSecret == "" || req .Secret != apiSecret {
79- return nil , false , "Invalid API secret in request" , http .StatusUnauthorized
78+ return nil , http .StatusUnauthorized , ErrInvalidSecret
8079 }
8180
8281 if req .ProfileID == 0 {
83- return nil , false , "Profile ID missing or 0 in request" , http .StatusBadRequest
82+ return nil , http .StatusBadRequest , ErrPIDMissing
8483 }
8584
8685 if req .Reason == "" {
87- return nil , false , "Missing ban reason in request" , http .StatusBadRequest
86+ return nil , http .StatusBadRequest , ErrReason
8887 }
8988
9089 moderator := req .Moderator
@@ -94,27 +93,24 @@ func handleBanImpl(r *http.Request) (*database.User, bool, string, int) {
9493
9594 minutes := req .Days * 24 * 60 + req .Hours * 60 + req .Minutes
9695 if minutes == 0 {
97- return nil , false , "Ban length missing or 0" , http .StatusBadRequest
96+ return nil , http .StatusBadRequest , ErrLength
9897 }
9998
10099 length := time .Duration (minutes ) * time .Minute
101100
102101 logging .Notice ("API:" + moderator , "Ban profile:" , aurora .Cyan (req .ProfileID ), "TOS:" , aurora .Cyan (req .Tos ), "Length:" , aurora .Cyan (length ), "Reason:" , aurora .BrightCyan (req .Reason ), "Reason (Hidden):" , aurora .BrightCyan (req .ReasonHidden ))
103102
104103 if ! database .BanUser (pool , ctx , req .ProfileID , req .Tos , length , req .Reason , req .ReasonHidden , moderator ) {
105- return nil , false , "Failed to ban user" , http .StatusInternalServerError
104+ return nil , http .StatusInternalServerError , ErrTransaction
106105 }
107106
108107 gpcm .KickPlayerCustomMessage (req .ProfileID , req .Reason , gpcm .WWFCMsgProfileRestrictedCustom )
109108
110- var message string
111109 user , success := database .GetProfile (pool , ctx , req .ProfileID )
112110
113- if success {
114- message = ""
115- } else {
116- message = "Unable to query user data from the database"
111+ if ! success {
112+ return nil , http .StatusInternalServerError , ErrUserQueryTransaction
117113 }
118114
119- return & user , success , message , http .StatusOK
115+ return & user , http .StatusOK , nil
120116}
0 commit comments