rc-1
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
package routes
|
||||
|
||||
import (
|
||||
"gifuu/tools"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
func POST_Art_ID_Reports(w http.ResponseWriter, r *http.Request) {
|
||||
ctx := r.Context()
|
||||
|
||||
var Body struct {
|
||||
ReasonType int `json:"type"`
|
||||
ReasonText string `json:"reason"`
|
||||
}
|
||||
|
||||
paramID := tools.ParseSnowflake(r.PathValue("id"))
|
||||
if paramID == 0 {
|
||||
tools.SendClientError(w, r, tools.ERROR_BODY_INVALID_FIELD)
|
||||
return
|
||||
}
|
||||
|
||||
if err := tools.ParseJSON(r.Body, &Body); err != nil {
|
||||
tools.SendClientError(w, r, tools.ERROR_BODY_INVALID_DATA)
|
||||
return
|
||||
}
|
||||
|
||||
if Body.ReasonType < REPORT_REASON_EXPLICIT || Body.ReasonType > REPORT_REASON_ILLEGAL {
|
||||
tools.SendClientError(w, r, tools.ERROR_BODY_INVALID_FIELD)
|
||||
return
|
||||
}
|
||||
|
||||
if str, ok := tools.NormalizeComment(Body.ReasonText); !ok {
|
||||
tools.SendClientError(w, r, tools.ERROR_BODY_INVALID_FIELD)
|
||||
return
|
||||
} else {
|
||||
Body.ReasonText = str
|
||||
}
|
||||
|
||||
// Attempt to store the users report. It may be discarded if another moderator
|
||||
// has previously review this item and deemed it didn't violate any rules.
|
||||
|
||||
if _, err := tools.Database.Exec(ctx,
|
||||
`INSERT INTO gifuu.mod_report (upload_id, reason_type, reason_text, report_address_hash)
|
||||
SELECT $1, $2, $3, $4 FROM gifuu.upload WHERE id = $1 AND flag_bypass = FALSE`,
|
||||
paramID,
|
||||
Body.ReasonType,
|
||||
Body.ReasonText,
|
||||
tools.RequestAddressHash(r),
|
||||
); err != nil {
|
||||
tools.SendServerError(w, r, err)
|
||||
return
|
||||
}
|
||||
|
||||
w.WriteHeader(http.StatusNoContent)
|
||||
}
|
||||
Reference in New Issue
Block a user