173 lines
3.1 KiB
Go
173 lines
3.1 KiB
Go
package response
|
|
|
|
import (
|
|
"fmt"
|
|
"io"
|
|
"net/http"
|
|
|
|
"ruben/inventory2/server/redirect"
|
|
)
|
|
|
|
type (
|
|
statusRes struct {
|
|
code int
|
|
res Response
|
|
}
|
|
)
|
|
|
|
var _ Response = statusRes{}
|
|
|
|
func Status(code int) Response {
|
|
return statusRes{
|
|
code: code,
|
|
}
|
|
}
|
|
|
|
func StatusOK() Response {
|
|
return Status(http.StatusOK)
|
|
}
|
|
|
|
func StatusCreated() Response {
|
|
return Status(http.StatusCreated)
|
|
}
|
|
|
|
func StatusAccepted() Response {
|
|
return Status(http.StatusAccepted)
|
|
}
|
|
|
|
func StatusNoContent() Response {
|
|
return Status(http.StatusNoContent)
|
|
}
|
|
|
|
func (s statusRes) String() string {
|
|
if s.res != nil {
|
|
return fmt.Sprintf(`{"status": %d, "nested": %s}`, s.code, s.res)
|
|
}
|
|
return fmt.Sprintf(`{"status": %d}`, s.code)
|
|
}
|
|
|
|
func (s statusRes) wrap(res Response) Response {
|
|
s.res = res
|
|
return s
|
|
}
|
|
|
|
func (s statusRes) Status(code int) Response {
|
|
s.code = code
|
|
return s
|
|
}
|
|
|
|
func (s statusRes) Redirect(code redirect.Code, to string) Response {
|
|
return Redirect(code, to).wrap(s)
|
|
}
|
|
|
|
func (s statusRes) HTML(body []byte) Response {
|
|
return HTML(body).wrap(s)
|
|
}
|
|
|
|
func (s statusRes) HTMLReader(body io.Reader) Response {
|
|
return HTMLReader(body).wrap(s)
|
|
}
|
|
|
|
func (s statusRes) JSON(body any) Response {
|
|
return JSON(body).wrap(s)
|
|
}
|
|
|
|
func (s statusRes) Body(body io.ReadCloser) Response {
|
|
return Body(body).wrap(s)
|
|
}
|
|
|
|
func (s statusRes) Cookie(ck http.Cookie) Response {
|
|
return Cookie(ck).wrap(s)
|
|
}
|
|
|
|
func (s statusRes) HXPushURL(v string) Response {
|
|
return HXPushURL(v).wrap(s)
|
|
}
|
|
|
|
func (s statusRes) HXLocation(v string) Response {
|
|
return HXLocation(v).wrap(s)
|
|
}
|
|
|
|
func (s statusRes) HXPushUrl(v string) Response {
|
|
return HXPushUrl(v).wrap(s)
|
|
}
|
|
|
|
func (s statusRes) HXRedirect(v string) Response {
|
|
return HXRedirect(v).wrap(s)
|
|
}
|
|
|
|
func (s statusRes) HXRefresh(v string) Response {
|
|
return HXRefresh(v).wrap(s)
|
|
}
|
|
|
|
func (s statusRes) HXReplaceUrl(v string) Response {
|
|
return HXReplaceUrl(v).wrap(s)
|
|
}
|
|
|
|
func (s statusRes) HXReswap(v string) Response {
|
|
return HXReswap(v).wrap(s)
|
|
}
|
|
|
|
func (s statusRes) HXRetarget(v string) Response {
|
|
return HXRetarget(v).wrap(s)
|
|
}
|
|
|
|
func (s statusRes) HXReselect(v string) Response {
|
|
return HXReselect(v).wrap(s)
|
|
}
|
|
|
|
func (s statusRes) HXTrigger(v string) Response {
|
|
return HXTrigger(v).wrap(s)
|
|
}
|
|
|
|
func (s statusRes) HXTriggerAfterSettle(v string) Response {
|
|
return HXTriggerAfterSettle(v).wrap(s)
|
|
}
|
|
|
|
func (s statusRes) HXTriggerAfterSwap(v string) Response {
|
|
return HXTriggerAfterSwap(v).wrap(s)
|
|
}
|
|
|
|
func (s statusRes) GetStatus() (int, bool) {
|
|
return s.code, true
|
|
}
|
|
|
|
func (s statusRes) getHeaders() [][2]string {
|
|
if s.res != nil {
|
|
return s.res.getHeaders()
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (s statusRes) GetRedirect() (code redirect.Code, to string, ok bool) {
|
|
if s.res == nil {
|
|
return 0, "", false
|
|
}
|
|
|
|
return s.res.GetRedirect()
|
|
}
|
|
|
|
func (s statusRes) getBody() (body io.ReadCloser, ok bool, err error) {
|
|
if s.res == nil {
|
|
return nil, false, nil
|
|
}
|
|
|
|
return s.res.getBody()
|
|
}
|
|
|
|
func (s statusRes) getCookies() []http.Cookie {
|
|
if s.res != nil {
|
|
return s.res.getCookies()
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (s statusRes) getContentType() (contentType string, ok bool) {
|
|
if s.res != nil {
|
|
return s.res.getContentType()
|
|
}
|
|
|
|
return "", false
|
|
}
|