// Package request...
//
// Description : 解析请求
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021-07-24 8:53 下午
package request

import (
	"net/url"
	"strings"

	"github.com/gin-gonic/gin"
)

// ParseGetRequestURI 解析URL请求参数
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 9:03 下午 2021/7/24
func ParseGetRequestURI(url *url.URL) map[string][]string {
	url.RawQuery = strings.TrimSpace(url.RawQuery)
	parseResult := make(map[string][]string)
	if len(url.RawQuery) == 0 {
		return parseResult
	}
	requestURIArr := strings.Split(url.RawQuery, "&")
	for _, kvPair := range requestURIArr {
		kvPair = strings.TrimSpace(kvPair)
		if len(kvPair) == 0 {
			continue
		}
		kvArr := strings.Split(kvPair, "=")
		_, keyExist := parseResult[kvArr[0]]
		if len(kvArr) == 1 {
			// 识别到 ?a=1&b=2&c 这种格式,默认补齐成 ?a=1&b=2&c=
			if keyExist {
				parseResult[kvPair] = append(parseResult[kvPair], "")
			} else {
				parseResult[kvPair] = []string{""}
			}
			continue
		}
		// 兼容参数值中包含=的情况
		if keyExist {
			parseResult[kvArr[0]] = append(parseResult[kvArr[0]], strings.Join(kvArr[1:], "="))
		} else {
			parseResult[kvArr[0]] = []string{strings.Join(kvArr[1:], "=")}
		}
	}
	return parseResult
}

// ParseGetRequestBody 解析get请求的body
//
// Author : zhangdeman001@ke.com<白茶清欢>
//
// Date : 9:07 下午 2021/7/24
func ParseGetRequestBody(ctx *gin.Context) {

}