package web

import (
	"net"
	"strings"

	"github.com/valyala/fasthttp"
)

func ClientIP(ctx *fasthttp.RequestCtx) string {
	xForwardedFor := string(ctx.Request.Header.Peek("X-Forwarded-For"))
	ip := strings.TrimSpace(strings.Split(xForwardedFor, ",")[0])
	if ip != "" {
		return ip
	}

	ip = strings.TrimSpace(string(ctx.Request.Header.Peek("X-Real-Ip")))
	if ip != "" {
		return ip
	}

	if ip, _, err := net.SplitHostPort(strings.TrimSpace(ctx.RemoteAddr().String())); err == nil {
		return ip
	}

	return ""
}
