// Package util ...
//
// Description : util ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2025-08-09 13:10
package util

import (
	"context"
	"fmt"

	"git.zhangdeman.cn/zhangdeman/consts"
	"github.com/gin-gonic/gin"
)

// GinCtxToContext gin.Cotext 转换为 context.Context
func GinCtxToContext(ctx *gin.Context) context.Context {
	if nil == ctx {
		return context.Background()
	}
	newGinContext := ctx.Copy()
	// 复制gin request 基本数据
	requestData := map[string]any{
		consts.GinContextField: ctx,
	}
	for k, v := range newGinContext.Keys {
		requestData[fmt.Sprintf("%v", k)] = v
	}
	if nil != ctx.Request {
		requestData[consts.GinRequestURIField] = ctx.Request.URL.Path
		requestData[consts.GinRequestMethodField] = ctx.Request.Method
	}

	return context.WithValue(context.Background(), consts.GinContextDataField, requestData)
}
