package processor

import (
	"context"
	"net/http"

	"git.optclblast.xyz/draincloud/draincloud-core/internal/handler"
	"github.com/gin-gonic/gin"
)

type ginWriter struct {
	ctx *gin.Context
}

func wrapGin(ctx *gin.Context) ginWriter {
	return ginWriter{
		ctx: ctx,
	}
}

func (w ginWriter) Write(ctx context.Context, resp any, opts ...handler.WriteOption) {
	params := &handler.WriteOptions{
		Code: http.StatusOK,
	}
	for _, o := range opts {
		o(params)
	}

	w.ctx.JSON(params.Code, resp)
}

func (w ginWriter) SetCookie(name string, value string, maxAge int, path string, domain string, secure bool, httpOnly bool) {
	w.ctx.SetCookie(name, value, maxAge, path, domain, secure, httpOnly)
}
