214 lines
3.9 KiB
Go
214 lines
3.9 KiB
Go
package response
|
|
|
|
import (
|
|
"fmt"
|
|
"io"
|
|
"net/http"
|
|
|
|
"ruben/inventory2/server/redirect"
|
|
)
|
|
|
|
type (
|
|
headerRes struct {
|
|
name string
|
|
value string
|
|
res Response
|
|
}
|
|
)
|
|
|
|
var _ Response = headerRes{}
|
|
|
|
func header(name, value string) Response {
|
|
return headerRes{
|
|
name: name,
|
|
value: value,
|
|
}
|
|
}
|
|
|
|
func HXPushURL(v string) Response {
|
|
return header("HX-Push-Url", v)
|
|
}
|
|
|
|
func HXLocation(v string) Response {
|
|
return header("HX-Location", v)
|
|
}
|
|
|
|
func HXPushUrl(v string) Response {
|
|
return header("HX-Push-Url", v)
|
|
}
|
|
|
|
func HXRedirect(v string) Response {
|
|
return header("HX-Redirect", v)
|
|
}
|
|
|
|
func HXRefresh(v string) Response {
|
|
return header("HX-Refresh", v)
|
|
}
|
|
|
|
func HXReplaceUrl(v string) Response {
|
|
return header("HX-Replace-Url", v)
|
|
}
|
|
|
|
func HXReswap(v string) Response {
|
|
return header("HX-Reswap", v)
|
|
}
|
|
|
|
func HXRetarget(v string) Response {
|
|
return header("HX-Retarget", v)
|
|
}
|
|
|
|
func HXReselect(v string) Response {
|
|
return header("HX-Reselect", v)
|
|
}
|
|
|
|
func HXTrigger(v string) Response {
|
|
return header("HX-Trigger", v)
|
|
}
|
|
|
|
func HXTriggerAfterSettle(v string) Response {
|
|
return header("HX-Trigger-After-Settle", v)
|
|
}
|
|
|
|
func HXTriggerAfterSwap(v string) Response {
|
|
return header("HX-Trigger-After-Swap", v)
|
|
}
|
|
|
|
func (h headerRes) String() string {
|
|
if h.res != nil {
|
|
return fmt.Sprintf(`{"header": {"name": %q, "value": %q}, "nested": %s}`, h.name, h.value, h.res)
|
|
}
|
|
return fmt.Sprintf(`{"header": {"name": %q, "value": %q}}`, h.name, h.value)
|
|
}
|
|
|
|
func (h headerRes) wrap(res Response) Response {
|
|
h.res = res
|
|
return h
|
|
}
|
|
|
|
func (h headerRes) Status(code int) Response {
|
|
return Status(code).wrap(h)
|
|
}
|
|
|
|
func (h headerRes) Header(name, value string) Response {
|
|
h.name = name
|
|
h.value = value
|
|
return h
|
|
}
|
|
|
|
func (h headerRes) Redirect(code redirect.Code, to string) Response {
|
|
return Redirect(code, to).wrap(h)
|
|
}
|
|
|
|
func (h headerRes) HTML(body []byte) Response {
|
|
return HTML(body).wrap(h)
|
|
}
|
|
|
|
func (h headerRes) JSON(body any) Response {
|
|
return JSON(body).wrap(h)
|
|
}
|
|
|
|
func (h headerRes) Body(body io.ReadCloser) Response {
|
|
return Body(body).wrap(h)
|
|
}
|
|
|
|
func (h headerRes) Cookie(ck http.Cookie) Response {
|
|
return Cookie(ck).wrap(h)
|
|
}
|
|
|
|
func (h headerRes) HXPushURL(v string) Response {
|
|
return HXPushURL(v).wrap(h)
|
|
}
|
|
|
|
func (h headerRes) HXLocation(v string) Response {
|
|
return HXLocation(v).wrap(h)
|
|
}
|
|
|
|
func (h headerRes) HXPushUrl(v string) Response {
|
|
return HXPushUrl(v).wrap(h)
|
|
}
|
|
|
|
func (h headerRes) HXRedirect(v string) Response {
|
|
return HXRedirect(v).wrap(h)
|
|
}
|
|
|
|
func (h headerRes) HXRefresh(v string) Response {
|
|
return HXRefresh(v).wrap(h)
|
|
}
|
|
|
|
func (h headerRes) HXReplaceUrl(v string) Response {
|
|
return HXReplaceUrl(v).wrap(h)
|
|
}
|
|
|
|
func (h headerRes) HXReswap(v string) Response {
|
|
return HXReswap(v).wrap(h)
|
|
}
|
|
|
|
func (h headerRes) HXRetarget(v string) Response {
|
|
return HXRetarget(v).wrap(h)
|
|
}
|
|
|
|
func (h headerRes) HXReselect(v string) Response {
|
|
return HXReselect(v).wrap(h)
|
|
}
|
|
|
|
func (h headerRes) HXTrigger(v string) Response {
|
|
return HXTrigger(v).wrap(h)
|
|
}
|
|
|
|
func (h headerRes) HXTriggerAfterSettle(v string) Response {
|
|
return HXTriggerAfterSettle(v).wrap(h)
|
|
}
|
|
|
|
func (h headerRes) HXTriggerAfterSwap(v string) Response {
|
|
return HXTriggerAfterSwap(v).wrap(h)
|
|
}
|
|
|
|
func (h headerRes) GetStatus() (int, bool) {
|
|
if h.res == nil {
|
|
return 0, false
|
|
}
|
|
|
|
return h.res.GetStatus()
|
|
}
|
|
|
|
func (h headerRes) getHeaders() [][2]string {
|
|
hdr := [2]string{h.name, h.value}
|
|
if h.res == nil {
|
|
return [][2]string{hdr}
|
|
}
|
|
|
|
return append(h.res.getHeaders(), hdr)
|
|
}
|
|
|
|
func (h headerRes) GetRedirect() (code redirect.Code, to string, ok bool) {
|
|
if h.res == nil {
|
|
return 0, "", false
|
|
}
|
|
|
|
return h.res.GetRedirect()
|
|
}
|
|
|
|
func (h headerRes) getBody() (body io.ReadCloser, ok bool, err error) {
|
|
if h.res == nil {
|
|
return nil, false, nil
|
|
}
|
|
|
|
return h.res.getBody()
|
|
}
|
|
|
|
func (h headerRes) getCookies() []http.Cookie {
|
|
if h.res != nil {
|
|
return h.res.getCookies()
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (h headerRes) getContentType() (contentType string, ok bool) {
|
|
if h.res != nil {
|
|
return h.res.getContentType()
|
|
}
|
|
|
|
return "", false
|
|
}
|