Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
var (
ErrHashMismatch = errors.New("new file hash mismatch after patch")
)
Functions ¶
This section is empty.
Types ¶
type HTTPRequester ¶
type HTTPRequester struct{}
HTTPRequester is the normal requester that is used and does an HTTP to the URL location requested to retrieve the specified data.
func (*HTTPRequester) Fetch ¶
func (httpRequester *HTTPRequester) Fetch(url string) (io.ReadCloser, error)
Fetch will return an HTTP request to the specified url and return the body of the result. An error will occur for a non 200 status code.
type Requester ¶
type Requester interface {
Fetch(url string) (io.ReadCloser, error)
}
Requester interface allows developers to customize the method in which requests are made to retrieve the version and binary.
type Updater ¶
type Updater struct { CurrentVersion string // Currently running version. `dev` is a special version here and will cause the updater to never update. ApiURL string // Base URL for API requests (JSON files). CmdName string // Command name is appended to the ApiURL like http://apiurl/CmdName/. This represents one binary. BinURL string // Base URL for full binary downloads. DiffURL string // Base URL for diff downloads. Dir string // Directory to store selfupdate state. ForceCheck bool // Check for update regardless of cktime timestamp CheckTime int // Time in hours before next check RandomizeTime int // Time in hours to randomize with CheckTime Requester Requester // Optional parameter to override existing HTTP request handler Info struct { Version string Sha256 []byte } OnSuccessfulUpdate func() // Optional function to run after an update has successfully taken place }
Updater is the configuration and runtime data for doing an update.
Note that ApiURL, BinURL and DiffURL should have the same value if all files are available at the same location.
Example:
updater := &selfupdate.Updater{ CurrentVersion: version, ApiURL: "http://updates.yourdomain.com/", BinURL: "http://updates.yourdownmain.com/", DiffURL: "http://updates.yourdomain.com/", Dir: "update/", CmdName: "myapp", // app name } if updater != nil { go updater.BackgroundRun() }
func (*Updater) BackgroundRun ¶
BackgroundRun starts the update check and apply cycle.
func (*Updater) ClearUpdateState ¶
func (u *Updater) ClearUpdateState()
ClearUpdateState writes current time to state file
func (*Updater) NextUpdate ¶
NextUpdate returns the next time update should be checked
func (*Updater) SetUpdateTime ¶
SetUpdateTime writes the next update time to the state file
func (*Updater) UpdateAvailable ¶
UpdateAvailable checks if update is available and returns version
func (*Updater) WantUpdate ¶
WantUpdate returns boolean designating if an update is desired. If the app's version is `dev` WantUpdate will return false. If u.ForceCheck is true or cktime is after now WantUpdate will return true.