Documentation ¶
Overview ¶
The provider package contains the release recovery logic of the various project hosting systems. For each system, there is a file that implements the UpdaterProvider interface. Thus, for GitHub and GitLab systems, we will have github.go and gitlab.go files, respectively.
UpdaterProvider ¶
// It is the interface that every release provider should implement, as it has all the // expected method definitions for querying, caching and restoring cached release. type UpdaterProvider interface { // FetchLastRelease queries provider for the last release of a project. FetchLastRelease(client HTTPClientPlugin) (*Release, error) // CacheRelease writes the release passed as parameter to the file system. CacheRelease(release Release) error // RestoreCacheRelease retores a cached release. // It returns nil if no release has been cached yet. RestoreCacheRelease() (*Release, error) }
GitHub provider implementation ¶
// GithubProvider is a provider for getting releases from Github. type GitlabProvider struct { Host string Port uint Ssl bool ProjectPath string Timeout time.Duration } func (provider GithubProvider) FetchLastRelease(client HTTPClientPlugin) (*Release, error) { // ... } func (GithubProvider) CacheRelease(r Release) error { return serializeRelease(&r) } func (GithubProvider) RestoreCacheRelease() (*Release, error) { return deserializeRelease() }
GitLab provider implementation ¶
// GitlabProvider is a provider for getting releases from Gitlab. type GitlabProvider struct { Host string Port uint Ssl bool ProjectPath string Timeout time.Duration } func (provider GitlabProvider) FetchLastRelease(client HTTPClientPlugin) (*Release, error) { // ... } func (GitlabProvider) CacheRelease(r Release) error { return serializeRelease(&r) } func (GitlabProvider) RestoreCacheRelease() (*Release, error) { return deserializeRelease() }
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Comparator ¶
Comparator is an interface that provides methods for comparing two releases.
type GithubProvider ¶
type GithubProvider struct { Host string Port uint Ssl bool ProjectPath string Timeout time.Duration }
GithubProvider is a provider for getting releases from Github.
func (GithubProvider) CacheRelease ¶
func (GithubProvider) CacheRelease(r Release) error
func (GithubProvider) FetchLastRelease ¶
func (provider GithubProvider) FetchLastRelease(client HTTPClientPlugin) (*Release, error)
func (GithubProvider) RestoreCacheRelease ¶
func (GithubProvider) RestoreCacheRelease() (*Release, error)
type GithubRelease ¶
type GithubRelease struct { Name string `json:"tag_name"` Body string `json:"body"` PublishedAt time.Time `json:"published_at"` Assets []struct { Name string `json:"name"` URL string `json:"browser_download_url"` } `json:"assets"` }
GithubRelease is a representation - in JSON form - of what Github returns when the target service is called.
func (*GithubRelease) CompareTo ¶
func (r1 *GithubRelease) CompareTo(r2 *GithubRelease) int
type GitlabProvider ¶
type GitlabProvider struct { Host string Port uint Ssl bool ProjectPath string Timeout time.Duration }
GitlabProvider is a provider for getting releases from Gitlab.
func (GitlabProvider) CacheRelease ¶
func (GitlabProvider) CacheRelease(r Release) error
func (GitlabProvider) FetchLastRelease ¶
func (provider GitlabProvider) FetchLastRelease(client HTTPClientPlugin) (*Release, error)
func (GitlabProvider) RestoreCacheRelease ¶
func (GitlabProvider) RestoreCacheRelease() (*Release, error)
type GitlabRelease ¶
type GitlabRelease struct { Name string `json:"tag_name"` Description string `json:"description"` ReleaseAt time.Time `json:"released_at"` Assets struct { Links []struct { Name string `json:"name"` URL string `json:"url"` } `json:"links"` } `json:"assets"` }
GitlabRelease is a representation - in JSON form - of what Gitlab returns when the target service is called.
func (*GitlabRelease) CompareTo ¶
func (r1 *GitlabRelease) CompareTo(r2 *GitlabRelease) int
type HTTPClientDecorator ¶
type HTTPClientPlugin ¶
type Release ¶
type Release struct { Name string `json:"name"` Description string `json:"description"` ReleasedAt time.Time `json:"releasedAt"` Assets []struct { Name string `json:"name"` URL string `json:"url"` } `json:"assets"` }
Release is a structured data type that abstracts the release of a project.
type UpdaterProvider ¶
type UpdaterProvider interface { // FetchLastRelease queries provider for the last release of a project. FetchLastRelease(client HTTPClientPlugin) (*Release, error) // CacheRelease writes the release passed as parameter to the file system. CacheRelease(release Release) error // RestoreCacheRelease retores a cached release. // It returns nil if no release has been cached yet. RestoreCacheRelease() (*Release, error) }
It is the interface that every release provider should implement, as it has all the expected method definitions for querying, caching and restoring cached release.