upstream

package
v0.9.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 24, 2026 License: MIT Imports: 22 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrURLRequired is returned if the given URL to New is not given.
	ErrURLRequired = errors.New("the URL is required")

	// ErrURLMustContainScheme is returned if the given URL to New did not contain a scheme.
	ErrURLMustContainScheme = errors.New("the URL must contain scheme")

	// ErrInvalidURL is returned if the given hostName to New is not valid.
	ErrInvalidURL = errors.New("the URL is not valid")

	// ErrNotFound is returned if the nar or narinfo were not found.
	ErrNotFound = errors.New("not found")

	// ErrInvalidNarInfo is returned if the given narinfo is invalid.
	ErrInvalidNarInfo = errors.New("invalid narinfo")

	// ErrUnexpectedHTTPStatusCode is returned if the response has an unexpected status code.
	ErrUnexpectedHTTPStatusCode = errors.New("unexpected HTTP status code")

	// ErrSignatureValidationFailed is returned if the signature validation of the narinfo has failed.
	ErrSignatureValidationFailed = errors.New("signature validation has failed")

	// ErrTransportCastError is returned if it was not possible to cast http.DefaultTransport to *http.Transport.
	ErrTransportCastError = errors.New("unable to cast http.DefaultTransport to *http.Transport")
)

Functions

This section is empty.

Types

type Cache

type Cache struct {
	// contains filtered or unexported fields
}

Cache represents the upstream cache service.

func New

func New(ctx context.Context, u *url.URL, opts *Options) (*Cache, error)

New creates a new upstream cache with the given URL and options. Pass nil for opts to use default values.

func (*Cache) GetHostname

func (c *Cache) GetHostname() string

GetHostname returns the hostname.

func (*Cache) GetNar

func (c *Cache) GetNar(ctx context.Context, narURL nar.URL, mutators ...func(*http.Request)) (*http.Response, error)

GetNar returns the NAR archive from the cache server. It always sends Accept-Encoding: zstd to request compressed transfer when possible. If the response has Content-Encoding: zstd, the body is transparently decompressed so the caller always receives raw (uncompressed) NAR bytes. NOTE: It's the caller responsibility to close the body.

func (*Cache) GetNarInfo

func (c *Cache) GetNarInfo(ctx context.Context, hash string) (*narinfo.NarInfo, error)

GetNarInfo returns a parsed NarInfo from the cache server.

func (*Cache) GetPriority

func (c *Cache) GetPriority() uint64

GetPriority returns the priority of this upstream cache.

func (*Cache) HasNar added in v0.0.20

func (c *Cache) HasNar(ctx context.Context, narURL nar.URL, mutators ...func(*http.Request)) (bool, error)

HasNar returns true if the NAR exists upstream.

func (*Cache) HasNarInfo added in v0.0.20

func (c *Cache) HasNarInfo(ctx context.Context, hash string) (bool, error)

HasNarInfo returns true if the narinfo exists upstream.

func (*Cache) IsHealthy added in v0.3.0

func (c *Cache) IsHealthy() bool

IsHealthy returns true if the upstream is healthy.

func (*Cache) ParsePriority added in v0.3.0

func (c *Cache) ParsePriority(ctx context.Context) (uint64, error)

ParsePriority parses the priority from the upstream.

func (*Cache) SetHealthy added in v0.3.0

func (c *Cache) SetHealthy(isHealthy bool)

SetHealthy sets the health status of the upstream.

func (*Cache) SetPriority added in v0.3.0

func (c *Cache) SetPriority(priority uint64)

SetPriority sets the priority of the upstream.

type NetrcCredentials added in v0.4.0

type NetrcCredentials struct {
	Username string
	Password string
}

NetrcCredentials holds authentication credentials.

type Options added in v0.5.1

type Options struct {
	// PublicKeys is a list of public keys for verifying signatures.
	// If empty, signature verification will be skipped.
	PublicKeys []string

	// NetrcCredentials holds authentication credentials for the upstream cache.
	// If nil, no authentication will be used.
	NetrcCredentials *NetrcCredentials

	// DialerTimeout is the timeout for establishing a TCP connection.
	// If zero, defaults to defaultHTTPTimeout (3s).
	DialerTimeout time.Duration

	// ResponseHeaderTimeout is the timeout for waiting for the server's response headers.
	// If zero, defaults to defaultHTTPTimeout (3s).
	ResponseHeaderTimeout time.Duration

	// Transport is the HTTP transport to use.
	// If nil, a default transport will be created.
	Transport http.RoundTripper
}

Options contains optional configuration for creating an upstream cache.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL