/
foult080
/
hackaton-app
Обзор
Документация
Войти
/
foult080
/
hackaton-app
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
internal/handler/response.go
51 строка
1 KB
Foult080
refactor(): migrate to golang
07 июл 2026, 09:37
07 июл 2026, 09:37
dc52ff5
Код
Авторство
О чём код?
package handler import ( "encoding/json" "net/http" "github.com/kkrit/hackaton/pkg/apperror" ) type envelope struct { Success bool `json:"success"` Data interface{} `json:"data,omitempty"` Error *errBody `json:"error,omitempty"` } type errBody struct { Message string `json:"message"` Details []string `json:"details,omitempty"` } func JSON(w http.ResponseWriter, status int, data interface{}) { w.Header().Set("Content-Type", "application/json") w.WriteHeader(status) json.NewEncoder(w).Encode(envelope{Success: status >= 200 && status < 300, Data: data}) } func Error(w http.ResponseWriter, err error) { w.Header().Set("Content-Type", "application/json") var status int msg := err.Error() var details []string if err != nil { if a, ok := err.(*apperror.AppError); ok { status = a.StatusCode msg = a.Message details = a.Details } } if status == 0 { status = http.StatusInternalServerError msg = "Internal server error" } w.WriteHeader(status) json.NewEncoder(w).Encode(envelope{ Success: false, Error: &errBody{Message: msg, Details: details}, }) }