Documentation
¶
Overview ¶
Package loading provides tools to load a file from http or from a local file system.
Index ¶
- Constants
- func LoadFromFileOrHTTP(pth string, opts ...Option) ([]byte, error)
- func LoadStrategy(pth string, local, remote func(string) ([]byte, error), _ ...Option) func(string) ([]byte, error)
- func YAMLData(path string, opts ...Option) (interface{}, error)
- func YAMLDoc(path string, opts ...Option) (json.RawMessage, error)
- func YAMLMatcher(path string) bool
- type Option
Constants ¶
const (
// ErrLoader is an error raised by the file loader utility
ErrLoader loadingError = "loader error"
)
Variables ¶
This section is empty.
Functions ¶
func LoadFromFileOrHTTP ¶
LoadFromFileOrHTTP loads the bytes from a file or a remote http server based on the path passed in
func LoadStrategy ¶
func LoadStrategy(pth string, local, remote func(string) ([]byte, error), _ ...Option) func(string) ([]byte, error)
LoadStrategy returns a loader function for a given path or URI.
The load strategy returns the remote load for any path starting with `http`. So this works for any URI with a scheme `http` or `https`.
The fallback strategy is to call the local loader.
The local loader takes a local file system path (absolute or relative) as argument, or alternatively a `file://...` URI, **without host** (see also below for windows).
There are a few liberalities, initially intended to be tolerant regarding the URI syntax, especially on windows.
Before the local loader is called, the given path is transformed:
- percent-encoded characters are unescaped
- simple paths (e.g. `./folder/file`) are passed as-is
- on windows, occurrences of `/` are replaced by `\`, so providing a relative path such a `folder/file` works too.
For paths provided as URIs with the "file" scheme, please note that:
- `file://` is simply stripped. This means that the host part of the URI is not parsed at all. For example, `file:///folder/file" becomes "/folder/file`, but `file://localhost/folder/file` becomes `localhost/folder/file` on unix systems. Similarly, `file://./folder/file` yields `./folder/file`.
- on windows, `file://...` can take a host so as to specify an UNC share location.
Reminder about windows-specifics: - `file://host/folder/file` becomes an UNC path like `\\host\folder\file` (no port specification is supported) - `file:///c:/folder/file` becomes `C:\folder\file` - `file://c:/folder/file` is tolerated (without leading `/`) and becomes `c:\folder\file`
Types ¶
type Option ¶
type Option func(*options)
Option provides options for loading a file over HTTP or from a file.
func WithBasicAuth ¶
WithBasicAuth sets a basic authentication scheme for the remote file loader.
func WithCustomHeaders ¶
WithCustomHeaders sets custom headers for the remote file loader.
func WithFS ¶
func WithFS(fs fs.ReadFileFS) Option
WithFS sets a file system for the local file loader.
By default, the file system is the one provided by the os package.
For example, this may be set to consume from an embedded file system, or a rooted FS.
func WithHTTPClient ¶
WithHTTClient overrides the default HTTP client used to fetch a remote file.
By default, http.DefaultClient is used.
func WithTimeout ¶
WithTimeout sets a timeout for the remote file loader.
The default timeout is 30s.