add: Proper set response

This commit is contained in:
minoplhy 2024-04-15 01:33:06 +07:00
parent 362641a436
commit f28f2fb72a
Signed by: minoplhy
GPG Key ID: 41D406044E2434BF
2 changed files with 23 additions and 16 deletions

25
main.go
View File

@ -25,11 +25,8 @@ func uploadHandler(w http.ResponseWriter, r *http.Request) {
maxUploadSize = 10 * 1024 * 1024 // 10 MB maxUploadSize = 10 * 1024 * 1024 // 10 MB
} }
// Set Response Content-Type
w.Header().Set("Content-Type", "application/json")
if r.Method != "POST" { if r.Method != "POST" {
http.Error(w, handler.ErrorResponseBuild(http.StatusMethodNotAllowed, "Method not allowed"), http.StatusMethodNotAllowed) handler.ErrorResponseBuild(w, http.StatusMethodNotAllowed, "Method not allowed")
handler.ErrorLogBuilder([]string{r.RemoteAddr}, "Method not allowed") handler.ErrorLogBuilder([]string{r.RemoteAddr}, "Method not allowed")
return return
} }
@ -37,14 +34,14 @@ func uploadHandler(w http.ResponseWriter, r *http.Request) {
// Check for x-api-key header // Check for x-api-key header
API_Key := r.Header.Get("x-api-key") API_Key := r.Header.Get("x-api-key")
if API_Key == "" { if API_Key == "" {
http.Error(w, handler.ErrorResponseBuild(http.StatusBadRequest, "X-api-key is empty!"), http.StatusBadRequest) handler.ErrorResponseBuild(w, http.StatusBadRequest, "X-api-key is empty!")
handler.ErrorLogBuilder([]string{r.RemoteAddr}, "X-api-key is empty!") handler.ErrorLogBuilder([]string{r.RemoteAddr}, "X-api-key is empty!")
return return
} }
// Validate x-api-key // Validate x-api-key
if !handler.Check_API_Key(Chibisafe_basepath, API_Key) { if !handler.Check_API_Key(Chibisafe_basepath, API_Key) {
http.Error(w, handler.ErrorResponseBuild(http.StatusUnauthorized, "Failure to validate X-API-Key"), http.StatusUnauthorized) handler.ErrorResponseBuild(w, http.StatusUnauthorized, "Failure to validate X-API-Key")
handler.ErrorLogBuilder([]string{r.RemoteAddr}, "Failure to validate X-API-Key") handler.ErrorLogBuilder([]string{r.RemoteAddr}, "Failure to validate X-API-Key")
return return
} }
@ -60,10 +57,10 @@ func uploadHandler(w http.ResponseWriter, r *http.Request) {
if err != nil { if err != nil {
switch err.Error() { switch err.Error() {
case "http: request body too large": case "http: request body too large":
http.Error(w, handler.ErrorResponseBuild(http.StatusRequestEntityTooLarge, "Request Body is too large!"), http.StatusRequestEntityTooLarge) handler.ErrorResponseBuild(w, http.StatusRequestEntityTooLarge, "Request Body is too large!")
handler.ErrorLogBuilder([]string{r.RemoteAddr}, "Request Body is too large!") handler.ErrorLogBuilder([]string{r.RemoteAddr}, "Request Body is too large!")
default: default:
http.Error(w, handler.ErrorResponseBuild(http.StatusInternalServerError, "Something went wrong!"), http.StatusInternalServerError) handler.ErrorResponseBuild(w, http.StatusInternalServerError, "Something went wrong!")
handler.ErrorLogBuilder([]string{r.RemoteAddr}, err.Error()) handler.ErrorLogBuilder([]string{r.RemoteAddr}, err.Error())
} }
return return
@ -98,7 +95,7 @@ func uploadHandler(w http.ResponseWriter, r *http.Request) {
if err != nil { if err != nil {
switch err.Error() { switch err.Error() {
default: default:
http.Error(w, handler.ErrorResponseBuild(http.StatusBadRequest, "Something went wrong!"), http.StatusBadRequest) handler.ErrorResponseBuild(w, http.StatusBadRequest, "Something went wrong!")
handler.ErrorLogBuilder([]string{r.RemoteAddr, tempfilepath}, err.Error()) handler.ErrorLogBuilder([]string{r.RemoteAddr, tempfilepath}, err.Error())
} }
return return
@ -109,7 +106,7 @@ func uploadHandler(w http.ResponseWriter, r *http.Request) {
if err != nil { if err != nil {
switch err.Error() { switch err.Error() {
default: default:
http.Error(w, handler.ErrorResponseBuild(http.StatusInternalServerError, "Something went wrong!"), http.StatusInternalServerError) handler.ErrorResponseBuild(w, http.StatusInternalServerError, "Something went wrong!")
handler.ErrorLogBuilder([]string{}, err.Error()) handler.ErrorLogBuilder([]string{}, err.Error())
} }
return return
@ -121,7 +118,7 @@ func uploadHandler(w http.ResponseWriter, r *http.Request) {
if err != nil { if err != nil {
switch err.Error() { switch err.Error() {
default: default:
http.Error(w, handler.ErrorResponseBuild(http.StatusInternalServerError, "Something went wrong!"), http.StatusInternalServerError) handler.ErrorResponseBuild(w, http.StatusInternalServerError, "Something went wrong!")
handler.ErrorLogBuilder([]string{r.RemoteAddr, chibisafe_Response_Metadata.Identifier, tempfilepath}, err.Error()) handler.ErrorLogBuilder([]string{r.RemoteAddr, chibisafe_Response_Metadata.Identifier, tempfilepath}, err.Error())
} }
return return
@ -154,7 +151,7 @@ func uploadHandler(w http.ResponseWriter, r *http.Request) {
if err != nil { if err != nil {
switch err.Error() { switch err.Error() {
default: default:
http.Error(w, handler.ErrorResponseBuild(http.StatusInternalServerError, "Something went wrong!"), http.StatusInternalServerError) handler.ErrorResponseBuild(w, http.StatusInternalServerError, "Something went wrong!")
handler.ErrorLogBuilder([]string{r.RemoteAddr, chibisafe_Response_Metadata.Identifier, tempfilepath}, err.Error()) handler.ErrorLogBuilder([]string{r.RemoteAddr, chibisafe_Response_Metadata.Identifier, tempfilepath}, err.Error())
} }
return return
@ -165,7 +162,7 @@ func uploadHandler(w http.ResponseWriter, r *http.Request) {
if err != nil { if err != nil {
switch err.Error() { switch err.Error() {
default: default:
http.Error(w, handler.ErrorResponseBuild(http.StatusInternalServerError, "Something went wrong!"), http.StatusInternalServerError) handler.ErrorResponseBuild(w, http.StatusInternalServerError, "Something went wrong!")
handler.ErrorLogBuilder([]string{}, err.Error()) handler.ErrorLogBuilder([]string{}, err.Error())
} }
return return
@ -185,7 +182,7 @@ func uploadHandler(w http.ResponseWriter, r *http.Request) {
// Response JSON to client // Response JSON to client
JsonResponse, _ := json.Marshal(PostProcessResponse) JsonResponse, _ := json.Marshal(PostProcessResponse)
fmt.Fprintf(w, "%s", JsonResponse) handler.ResponseBuild(w, "application/json", JsonResponse)
} }
func main() { func main() {

View File

@ -2,18 +2,28 @@ package handler
import ( import (
"encoding/json" "encoding/json"
"net/http"
"strings" "strings"
"github.com/rs/zerolog/log" "github.com/rs/zerolog/log"
) )
func ErrorResponseBuild(StatusCode int64, Message string) string { func ResponseBuild(w http.ResponseWriter, ContentType string, ContentData []byte) {
w.Header().Set("Content-Type", ContentType)
w.WriteHeader(http.StatusOK)
w.Write(ContentData)
}
func ErrorResponseBuild(w http.ResponseWriter, StatusCode int64, Message string) {
ErrorResponse := ErrorResponse{ ErrorResponse := ErrorResponse{
StatusCode: StatusCode, StatusCode: StatusCode,
Message: Message, Message: Message,
} }
Response, _ := json.Marshal(ErrorResponse) Response, _ := json.Marshal(ErrorResponse)
return string(Response)
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(int(StatusCode))
w.Write(Response)
} }
func InfoLogBuilder(headers []string, message string) { func InfoLogBuilder(headers []string, message string) {