forgeapi

package
v0.1.1 Latest Latest
Warning

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

Go to latest
Published: Oct 12, 2020 License: Apache-2.0 Imports: 7 Imported by: 0

Documentation

Overview

Package forgeapi provides a (incomplete) API for the Puppet Forge

Package forgeapi provides a (incomplete) API for the Puppet Forge

Package forgeapi provides a (incomplete) API for the Puppet Forge

Index

Constants

View Source
const ForgeURL = "https://forgeapi-cdn.puppet.com"

ForgeURL is the default URL base for Puppet Forge

View Source
const ForgeURLIPv4Only = "https://forgeapi.puppet.com"

ForgeURLIPv4Only is the secondary URL base for the Forge but does not accept IPv6 connections

View Source
const V3ModulesEndpoint = "/v3/modules"

V3ModulesEndpoint is the v3 Forge API endpoint for modules

View Source
const V3ReleasesEndpoint = "/v3/releases"

V3ReleasesEndpoint is the v3 Forge API endpoint for releases

View Source
const V3UsersEndpoint = "/v3/users"

V3UsersEndpoint is the v3 Forge API endpoint for users

Variables

This section is empty.

Functions

func GetRequest

func GetRequest(url, agent string, client HTTPClient) (*http.Response, error)

GetRequest makes an HTTP Get request and returns a response on an HTTP response code of 200, or an error otherwise.

Types

type FetchError

type FetchError struct {
	Err error
}

FetchError provides a wrapper for errors encountered during Fetch requests

func (*FetchError) Error

func (r *FetchError) Error() string

type GetError

type GetError struct {
	Err     error
	URL     string
	Headers map[string]string
}

GetError provides a wrapper for errors encountered during HTTP GET request creation or execution

func (*GetError) Error

func (r *GetError) Error() string

type GetNon200Error

type GetNon200Error struct {
	URL        string
	StatusCode int
}

GetNon200Error provides an error wrapper for when HTTP GET requests return a non-200 status code

func (*GetNon200Error) Error

func (r *GetNon200Error) Error() string

type HTTPClient

type HTTPClient interface {
	Do(req *http.Request) (*http.Response, error)
}

HTTPClient provides an interface for making HTTP requests

var (
	// Client implements the HTTPClient interface for making HTTP rquests
	Client HTTPClient
)

type JSONDecodeError

type JSONDecodeError struct {
	Err error
}

JSONDecodeError provides wrapper for errors encountered while decoding JSON response bodies.

func (*JSONDecodeError) Error

func (r *JSONDecodeError) Error() string

type ListError

type ListError struct {
	Err error
}

ListError provides a wrapper for errors encountered during List requests

func (*ListError) Error

func (r *ListError) Error() string

type ListModulesOpts

type ListModulesOpts struct {
	Limit           int      `url:"limit,omitempty"`
	Offset          int      `url:"offset,omitempty"`
	SortBy          string   `url:"sort_by,omitempty"`
	Query           string   `url:"query,omitempty"`
	Tag             string   `url:"tag,omitempty"`
	Owner           string   `url:"owner,omitempty"`
	WithTasks       bool     `url:"with_tasks,omitempty"`
	WithPlans       bool     `url:"with_plans,omitempty"`
	WithPDK         bool     `url:"with_pdk,omitempty"`
	Endorsements    []string `url:"endorsements,omitempty"`
	OperatingSystem string   `url:"operatingsystem,omitempty"`
	PERequirement   string   `url:"pe_requirement,omitempty"`
	PupRequirement  string   `url:"puppet_requirement,omitempty"`
	MinScore        int      `url:"with_minimum_score,omitempty"`
	ModuleGroups    []string `url:"module_groups,omitempty"`
	ShowDeleted     bool     `url:"show_deleted,omitempty"`
	HideDeprecated  bool     `url:"hide_deprecated,omitempty"`
	OnlyLatest      bool     `url:"only_latest,omitempty"`
	Slugs           []string `url:"slugs,omitempty"`
	WithHTML        bool     `url:"with_html,omitempty"`
	IncludeFields   []string `url:"include_fields,omitempty"`
	ExcludeFields   []string `url:"exclude_fields,omitempty"`
}

ListModulesOpts is used by the List* functions to construct the search parameters for the list modules API endpoint

type ListPagination

type ListPagination struct {
	Limit    int    `json:"limit"`
	Offset   int    `json:"offset"`
	First    string `json:"first"`
	Previous string `json:"previous"`
	Current  string `json:"current"`
	Next     string `json:"next"`
	Total    int    `json:"total"`
}

ListPagination is a struct representing the pagination field of the JSON return from the ForgeAPI listmodules endpoint

type ListResults

type ListResults struct {
	Pagination ListPagination `json:"pagination"`
	Results    []Module       `json:"results"`
}

ListResults is a struct representation of the JSON return of the ForgeAPI listmodules endpoint

func ListModules

func ListModules(url, agent string, opts ListModulesOpts) (ListResults, error)

ListModules returns an array of Modules based on the search criterial outlined in the opts param.

type Module

type Module struct {
	URI            string               `json:"uri" alias:"uri"`
	Slug           string               `json:"slug" alias:"slug"`
	Name           string               `json:"name" alias:"name"`
	Downloads      int                  `json:"downloads" alias:"downloads"`
	CreatedAt      string               `json:"created_at" alias:"createdat,created_at"`
	UpdatedAt      string               `json:"updated_at" alias:"updatedat,updated_at"`
	DeprecatedAt   string               `json:"deprecated_at,omitempty" alias:"deprecatedat,deprecated_at"`
	DeprecatedFor  string               `json:"deprecated_for,omitempty" alias:"deprecatedfor,deprecated_for"`
	SupersededBy   ModuleMinimal        `json:"superseded_by,omitempty" alias:"supersededby,superseded_by"`
	Supported      bool                 `json:"supported" alias:"supported"`
	Endorsement    string               `json:"endorsement,omitempty" alias:"endorsement"`
	ModuleGroup    string               `json:"module_group" alias:"modulegroup,module_group"`
	Owner          UserAbbreviated      `json:"owner" alias:"owner"`
	CurrentRelease Release              `json:"current_release" alias:"currentrelease,current_release"`
	Releases       []ReleaseAbbreviated `json:"releases,omitempty" alias:"releases"`
	FeedbackScore  int                  `json:"feedback_score" alias:"feedbackscore,feedback_score"`
	HomepageURL    string               `json:"homepage_url" alias:"homepageurl,homepage_url"`
	IssuesURL      string               `json:"issues_url" alias:"issuesurl,issues_url"`
}

Module is a struct representation of the Puppet Forge OpenAPI Module object

func FetchModule

func FetchModule(nameslug, url, agent string, wg *sync.WaitGroup) (Module, error)

FetchModule performs a Forge API get request for the named module and sends the result to the specified channel

func FetchModuleDependencies

func FetchModuleDependencies(mod Module, url, agent string) ([]Module, []error)

FetchModuleDependencies returns a slice of Modules that are marked as dependencies of the given module

type ModuleAbbreviated

type ModuleAbbreviated struct {
	URI          string          `json:"uri" alias:"uri"`
	Slug         string          `json:"slug" alias:"slug"`
	Name         string          `json:"name" alias:"name"`
	DeprecatedAt string          `json:"deprecated_at,omitempty" alias:"deprecatedat,deprecated_at"`
	Owner        UserAbbreviated `json:"owner" alias:"owner"`
}

ModuleAbbreviated is a struct representation of the Puppet Forge OpenAPI ModuleAbbreviated object

type ModuleMetadata

type ModuleMetadata struct {
	Name                   string                     `json:"name" alias:"name"`
	Version                string                     `json:"version" alias:"version"`
	Author                 string                     `json:"author" alias:"author"`
	License                string                     `json:"license" alias:"license"`
	Summary                string                     `json:"summary" alias:"summary"`
	Source                 string                     `json:"source" alias:"source"`
	Dependencies           []ModuleMetadataDependency `json:"dependencies,omitempty" alias:"dependencies"`
	Requirements           []ModuleMetadataDependency `json:"requirements,omitempty" alias:"requirements"`
	ProjectPage            string                     `json:"project_page,omitempty" alias:"projectpage,project_page"`
	IssuesURL              string                     `json:"issues_url,omitempty" alias:"issues_url,issuesurl"`
	OperatingSystemSupport []ModuleMetadataOS         `json:"operatingsystem_support,omitempty" alias:"operatingsystemsupport,operatingsystem_support,os"`
	Tags                   []string                   `json:"tags,omitempty" alias:"tags"`
}

ModuleMetadata is a struct representation of a metadata.json file

type ModuleMetadataDependency

type ModuleMetadataDependency struct {
	Name               string `json:"name" alias:"name"`
	VersionRequirement string `json:"version_requirement" alias:"versionrequirement,version_requirement,version"`
}

ModuleMetadataDependency is a struct representation of a dependency / requirement in a metadata.json file

type ModuleMetadataOS

type ModuleMetadataOS struct {
	OperatingSystem        string   `json:"operatingsystem" alias:"operatingsystem,os"`
	OperatingSystemRelease []string `json:"operatingsystemrelease" alias:"operatingsystemrelease,release"`
}

ModuleMetadataOS is a struct representation of a supported OS in a metadata.json file

type ModuleMinimal

type ModuleMinimal struct {
	URI  string `json:"uri" alias:"uri"`
	Slug string `json:"slug" alias:"slug"`
}

ModuleMinimal is a struct representation of the Puppet Forge OpenAPI ModuleMinimal object

type Release

type Release struct {
	URI             string                   `json:"uri" alias:"uri"`
	Slug            string                   `json:"slug" alias:"slug"`
	Module          ModuleAbbreviated        `json:"module" alias:"module"`
	Version         string                   `json:"version" alias:"version"`
	Metadata        ModuleMetadata           `json:"metadata" alias:"metadata"`
	Tags            []string                 `json:"tags" alias:"tags"`
	Supported       bool                     `json:"supported" alias:"supported"`
	PDK             bool                     `json:"pdk" alias:"pdk"`
	ValidationScore int                      `json:"validation_score" alias:"validationscore,validation_score"`
	FileURI         string                   `json:"file_uri" alias:"fileuri,file_uri"`
	FileSize        int                      `json:"file_size" alias:"filesize,file_size"`
	FileMD5         string                   `json:"file_md5" alias:"filemd5,file_md5"`
	FileSHA256      string                   `json:"file_sha256" alias:"filesha256,file_sha256"`
	Downloads       int                      `json:"downloads" alias:"downloads"`
	ReadMe          string                   `json:"readme,omitempty" alias:"readme"`
	ChangeLog       string                   `json:"changelog,omitempty" alias:"changelog"`
	License         string                   `json:"license,omitempty" alias:"license"`
	Reference       string                   `json:"reference,omitempty" alias:"reference"`
	Tasks           []ReleaseTask            `json:"tasks,omitempty" alias:"tasks"`
	Plans           []ReleasePlanAbbreviated `json:"plans,omitempty" alias:"plans"`
	CreatedAt       string                   `json:"created_at" alias:"createdat,created_at"`
	UpdatedAt       string                   `json:"updated_at" alias:"updatedat,updated_at"`
	DeletedAt       string                   `json:"deleted_at,omitempty" alias:"deletedat,deleted_at"`
	DeletedFor      string                   `json:"deleted_for,omitempty" alias:"deletedfor,deleted_for"`
}

Release is a struct representation of the Puppet Forge OpenAPI Release object

type ReleaseAbbreviated

type ReleaseAbbreviated struct {
	URI       string            `json:"uri" alias:"uri"`
	Slug      string            `json:"slug" alias:"slug"`
	Module    ModuleAbbreviated `json:"module" alias:"module"`
	Version   string            `json:"version" alias:"version"`
	Supported bool              `json:"supported" alias:"supported"`
	CreatedAt string            `json:"created_at" alias:"createdat,created_at"`
	DeletedAt string            `json:"deleted_at,omitempty" alias:"deletedat,deleted_at"`
	FileURI   string            `json:"file_uri" alias:"fileuri,file_uri"`
	FileSize  int               `json:"file_size" alias:"filesize,file_size"`
}

ReleaseAbbreviated is a struct representation of the Puppet Forge OpenAPI ReleaseAbbreviated object

type ReleaseMinimal

type ReleaseMinimal struct {
	URI     string `json:"uri" alias:"uri"`
	Slug    string `json:"slug" alias:"slug"`
	FileURI string `json:"file_uri" alias:"fileuri,file_uri"`
}

ReleaseMinimal is a struct representation of the Puppet Forge OpenAPI ReleaseMinimal object

type ReleasePlanAbbreviated

type ReleasePlanAbbreviated struct {
	URI  string `json:"uri" alias:"uri"`
	Name string `json:"name" alias:"name"`
}

ReleasePlanAbbreviated is a struct representation of the Puppet Forge OpenAPI ReleasePlanAbbreviated object

type ReleaseTask

type ReleaseTask struct {
	Name        string       `json:"name" alias:"name"`
	Executables []string     `json:"executables" alias:"executables"`
	Description string       `json:"description" alias:"description"`
	Metadata    TaskMetadata `json:"metadata" alias:"metadata"`
}

ReleaseTask is a struct representation of the Puppet Forge OpenAPI ReleaseTask object

type TaskMetadata

type TaskMetadata struct {
	Description       string                       `json:"description,omitempty" alias:"description"`
	InputMethod       string                       `json:"input_method" alias:"inputmethod,input_method"`
	PuppetTaskVersion int                          `json:"puppet_task_version" alias:"puppet_task_version,puppettaskversion,taskversion,task_version"`
	SupportsNoop      bool                         `json:"supports_noop" alias:"supportsnoop,supports_noop"`
	Implementations   []TaskMetadataImplementation `json:"implementations,omitempty" alias:"implementations"`
	Files             []string                     `json:"files,omitempty" alias:"files"`
	Private           bool                         `json:"private" alias:"private"`
	Remote            bool                         `json:"remote" alias:"remote"`
}

TaskMetadata is a struct representation of a Bolt task's metadata file

type TaskMetadataImplementation

type TaskMetadataImplementation struct {
	Name         string   `json:"name" alias:"name"`
	Requirements []string `json:"requirements" alias:"requirements"`
}

TaskMetadataImplementation is a struct representation of implementations in a Bolt task's metadata file

type UserAbbreviated

type UserAbbreviated struct {
	URI        string `json:"uri" alias:"uri"`
	Slug       string `json:"slug" alias:"slug"`
	Username   string `json:"username" alias:"username"`
	GravatarID string `json:"gravatar_id,omitempty" alias:"gravatarid,gravatar_id"`
}

UserAbbreviated is a struct representation of the Puppet Forge OpenAPI UserAbbreviated object

Directories

Path Synopsis
utils

Jump to

Keyboard shortcuts

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