twink/vendor/sourcery.dny.nu/longdistance/loader.go

35 lines
1.3 KiB
Go
Raw Permalink Normal View History

2025-12-05 12:20:05 +01:00
package longdistance
import (
"context"
"sourcery.dny.nu/longdistance/internal/json"
)
// RemoteContextLoaderFunc is called to retrieve a remote context.
//
// It returns a Document, and an error in case retrieval failed.
//
// When building your own loader, please remember that:
// - [Document.URL] is the URL the context was retrieved from after having
// followed any redirects.
// - [Document.Context] is the value of the [KeywordContext] in the returned
// document, or the empty JSON map if the context was absent.
// - Request a context with [ApplicationLDJSON] and profile [ProfileContext].
// You can use [mime.FormatMediaType] to build the value for the Accept
// header.
// - Have proper timeouts, retry handling and request deduplication.
// - Make sure to cache the resulting [Document] to avoid unnecessary future
// requests. Contexts should not change for the lifetime of the application.
type RemoteContextLoaderFunc func(context.Context, string) (Document, error)
// Document holds a retrieved context.
//
// - URL holds the final URL a context was retrieved from, after following
// redirects.
// - Context holds the value of the @context element, or the empty map.
type Document struct {
URL string
Context json.RawMessage
}