res.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package srv
  2. import (
  3. "fmt"
  4. "net/http"
  5. "time"
  6. )
  7. type Res struct {
  8. w http.ResponseWriter
  9. r *http.Request
  10. status int
  11. }
  12. func (res *Res) Construct(w http.ResponseWriter, r *http.Request) {
  13. res.w = w
  14. res.r = r
  15. res.status = 200
  16. }
  17. func (res *Res) Send(txt string) {
  18. res.w.WriteHeader(res.status)
  19. fmt.Fprint(res.w, txt)
  20. }
  21. func (res *Res) Redirect(url string) {
  22. http.Redirect(res.w, res.r, url, http.StatusTemporaryRedirect)
  23. }
  24. func (res *Res) Status(code int) *Res {
  25. res.status = code
  26. return res
  27. }
  28. func (res *Res) Header(k string, v string) *Res {
  29. res.w.Header().Add(k, v)
  30. return res
  31. }
  32. func (res *Res) JSON(json string) {
  33. res.Header("Content-type", "application/json").Send(json)
  34. res.w.WriteHeader(res.status)
  35. }
  36. func (res *Res) Cookie(name string, val string, expires ...time.Time) *Res {
  37. Expires := time.Now().Add(365 * 24 * time.Hour)
  38. for _, v := range expires {
  39. Expires = v
  40. }
  41. cookie := &http.Cookie{
  42. Name: name,
  43. Value: val,
  44. Expires: Expires,
  45. Path: "/",
  46. Secure: true,
  47. HttpOnly: true,
  48. SameSite: http.SameSiteStrictMode,
  49. }
  50. http.SetCookie(res.w, cookie)
  51. return res
  52. }