loading

package module
v0.0.0-...-fbcb5d8 Latest Latest
Warning

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

Go to latest
Published: Apr 2, 2025 License: Apache-2.0 Imports: 15 Imported by: 0

Documentation

Overview

Package loading provides tools to load a file from http or from a local file system.

Index

Constants

View Source
const (
	// ErrLoader is an error raised by the file loader utility
	ErrLoader loadingError = "loader error"
)

Variables

This section is empty.

Functions

func LoadFromFileOrHTTP

func LoadFromFileOrHTTP(pth string, opts ...Option) ([]byte, error)

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`

func YAMLData

func YAMLData(path string, opts ...Option) (interface{}, error)

YAMLData loads a yaml document from either http or a file.

func YAMLDoc

func YAMLDoc(path string, opts ...Option) (json.RawMessage, error)

YAMLDoc loads a yaml document from either http or a file and converts it to json.

func YAMLMatcher

func YAMLMatcher(path string) bool

YAMLMatcher matches yaml for a file loader.

Types

type Option

type Option func(*options)

Option provides options for loading a file over HTTP or from a file.

func WithBasicAuth

func WithBasicAuth(username, password string) Option

WithBasicAuth sets a basic authentication scheme for the remote file loader.

func WithCustomHeaders

func WithCustomHeaders(headers map[string]string) Option

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

func WithHTTPClient(client *http.Client) Option

WithHTTClient overrides the default HTTP client used to fetch a remote file.

By default, http.DefaultClient is used.

func WithTimeout

func WithTimeout(timeout time.Duration) Option

WithTimeout sets a timeout for the remote file loader.

The default timeout is 30s.

Jump to

Keyboard shortcuts

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