package converters

import (
	"net/url"
	"regexp"
	"strings"

	"github.com/gofiber/fiber/v2"
)

var r = regexp.MustCompile(`[\/\-]([0-9a-f]+)\/?$`)

func ConvertId(c *fiber.Ctx) string {
	path := c.Path()
	postId := idFromParams(c)
	if postId == "" {
		return idFromPath(path)
	}
	return ""
}

func idFromPath(path string) string {
	if strings.HasPrefix(path, "/tag/") {
		return ""
	}

	matches := r.FindStringSubmatch(path)
	if len(matches) != 2 {
		return ""
	}

	return matches[1]
}

func idFromParams(c *fiber.Ctx) string {
	ru := c.Query("redirectUrl", "")
	if ru != "" {
		pu, err := url.Parse(ru)
		if err != nil {
			return ""
		}

		return idFromPath(pu.Path)
	}
	return ""
}