package api import ( "encoding/base64" "sync" "git.solsynth.dev/hypernet/reader/pkg/internal/services" "github.com/gofiber/fiber/v2" ) var expandInProgress sync.Map func getLinkMeta(c *fiber.Ctx) error { targetEncoded := c.Params("*1") targetRaw, _ := base64.StdEncoding.DecodeString(targetEncoded) if ch, loaded := expandInProgress.LoadOrStore(targetEncoded, make(chan struct{})); loaded { // If the request is already in progress, wait for it to complete <-ch.(chan struct{}) } else { // If this is the first request, process it and signal others defer func() { close(ch.(chan struct{})) expandInProgress.Delete(targetEncoded) }() } if meta, err := services.ScrapLink(string(targetRaw)); err != nil { return fiber.NewError(fiber.StatusBadRequest, err.Error()) } else { return c.JSON(meta) } }