overseer: github.com/jpillora/overseer/fetcher Index | Files

package fetcher

import "github.com/jpillora/overseer/fetcher"

Index

Package Files

fetcher.go fetcher_file.go fetcher_github.go fetcher_http.go fetcher_s3.go

type File Uses

type File struct {
    Path     string
    Interval time.Duration
    // contains filtered or unexported fields
}

File checks the provided Path, at the provided Interval for new Go binaries. When a new binary is found it will replace the currently running binary.

func (*File) Fetch Uses

func (f *File) Fetch() (io.Reader, error)

Fetch file from the specified Path

func (*File) Init Uses

func (f *File) Init() error

Init sets the Path and Interval options

type Github Uses

type Github struct {
    //Github username and repository name
    User, Repo string
    //Interval between fetches
    Interval time.Duration
    //Asset is used to find matching release asset.
    //By default a file will match if it contains
    //both GOOS and GOARCH.
    Asset func(filename string) bool
    // contains filtered or unexported fields
}

Github uses the Github V3 API to retrieve the latest release of a given repository and enumerate its assets. If a release contains a matching asset, it will fetch and return its io.Reader stream.

func (*Github) Fetch Uses

func (h *Github) Fetch() (io.Reader, error)

Fetch the binary from the provided Repository

func (*Github) Init Uses

func (h *Github) Init() error

Init validates the provided config

type HTTP Uses

type HTTP struct {
    //URL to poll for new binaries
    URL          string
    Interval     time.Duration
    CheckHeaders []string
    // contains filtered or unexported fields
}

HTTP fetcher uses HEAD requests to poll the status of a given file. If it detects this file has been updated, it will fetch and return its io.Reader stream.

func (*HTTP) Fetch Uses

func (h *HTTP) Fetch() (io.Reader, error)

Fetch the binary from the provided URL

func (*HTTP) Init Uses

func (h *HTTP) Init() error

Init validates the provided config

type Interface Uses

type Interface interface {
    //Init should perform validation on fields. For
    //example, ensure the appropriate URLs or keys
    //are defined or ensure there is connectivity
    //to the appropriate web service.
    Init() error
    //Fetch should check if there is an updated
    //binary to fetch, and then stream it back the
    //form of an io.Reader. If io.Reader is nil,
    //then it is assumed there are no updates. Fetch
    //will be run repeatedly and forever. It is up the
    //implementation to throttle the fetch frequency.
    Fetch() (io.Reader, error)
}

Interface defines the required fetcher functions

func Func Uses

func Func(fn func() (io.Reader, error)) Interface

Func converts a fetch function into the fetcher interface

type S3 Uses

type S3 struct {
    Access string
    Secret string
    Region string
    Bucket string
    Key    string
    //interal state
    Interval time.Duration
    // contains filtered or unexported fields
}

S3 uses authenticated HEAD requests to poll the status of a given object. If it detects this file has been updated, it will perform an object GET and return its io.Reader stream.

func (*S3) Fetch Uses

func (s *S3) Fetch() (io.Reader, error)

Fetch the binary from S3

func (*S3) Init Uses

func (s *S3) Init() error

Init validates the provided config

Package fetcher imports 15 packages (graph) and is imported by 19 packages. Updated 2017-08-24. Refresh now. Tools for package owners.