package utils import ( "net/http" "github.com/gin-gonic/gin" "golang.org/x/oauth2" ) type Sender func(c *gin.Context, s string) func SendStringAsOAuth2State(config *oauth2.Config) Sender { return func(c *gin.Context, s string) { c.Redirect(302, config.AuthCodeURL(s)) } } func SendStringAsBody() Sender { return func(c *gin.Context, s string) { c.Set("send.body", s) c.Next() if !c.Writer.Written() { c.String(200, s) } } } func SendStringAsCookie(settings http.Cookie) Sender { return func(c *gin.Context, s string) { settings.Value = s http.SetCookie(c.Writer, &settings) c.Next() if !c.Writer.Written() { c.Status(200) } } } func SendStringAsHeader(k string) Sender { return func(c *gin.Context, v string) { c.Header(k, v) c.Next() if !c.Writer.Written() { c.Status(200) } } }