package http3

import (
	"net/http"
	"strings"

	mdata "github.com/go-gost/core/metadata"
	mdutil "github.com/go-gost/x/metadata/util"
)

type metadata struct {
	probeResistance *probeResistance
	header          http.Header
	hash            string
}

func (h *http3Handler) parseMetadata(md mdata.Metadata) error {
	if m := mdutil.GetStringMapString(md, "header"); len(m) > 0 {
		hd := http.Header{}
		for k, v := range m {
			hd.Add(k, v)
		}
		h.md.header = hd
	}

	pr := mdutil.GetString(md, "probeResistance", "probe_resist")
	if pr != "" {
		if ss := strings.SplitN(pr, ":", 2); len(ss) == 2 {
			h.md.probeResistance = &probeResistance{
				Type:  ss[0],
				Value: ss[1],
				Knock: mdutil.GetString(md, "knock"),
			}
		}
	}
	h.md.hash = mdutil.GetString(md, "hash")

	return nil
}

type probeResistance struct {
	Type  string
	Value string
	Knock string
}
