 Documentation
      ¶
      Documentation
      ¶
    
    
  
    
  
    Overview ¶
Package pouet provides production, user voting data sourced from the Pouet website API.
Index ¶
Constants ¶
const ( ProdURL = "https://api.pouet.net/v1/prod/?id=" // ProdURL is the base URL for the Pouet production API. StarRounder = 0.5 // StarRounder is the rounding value for the stars rating. Sanity = 200000 // Sanity is to check the maximum permitted production ID. )
Variables ¶
Functions ¶
func PlatformsValid ¶
func Stars ¶
Stars returns the number of stars for the average votes. The value of votesAvg must be a valid float64 value and not greater than 1.0.
func TypesValid ¶
Types ¶
type Platforms ¶
type Platforms struct {
	DosGus  Platform `json:"69"` // MS-Dos with GUS
	Windows Platform `json:"68"` // Windows
	MSDos   Platform `json:"67"` // MS-Dos
}
    Platforms are the supported platforms from the Pouet API.
type Production ¶
type Production struct {
	Platforms   Platforms `json:"platforms"`    // Platforms are the platforms the prod runs on.
	Title       string    `json:"title"`        // Title is the prod title.
	ReleaseDate string    `json:"release_date"` // ReleaseDate is the prod release date.
	Download    string    `json:"download"`     // Download is the first download link.
	Demozoo     string    `json:"demozoo"`      // Demozoo is the Demozoo identifier.
	Platform    string    `json:"platform"`     // Platform is the prod platforms as a string.
	Groups      []struct {
		ID   string `json:"id"`
		Name string `json:"name"`
	} `json:"groups"` // Groups are the releasers that produced the prod.
	Types Types `json:"types"` // Types are the prod types.
	Links []struct {
		Type string `json:"type"`
		Link string `json:"link"`
	} `json:"downloads"` // Downloads are the additional download links.
	ID    int  `json:"id"`    // ID is the prod ID.
	Valid bool `json:"valid"` // Valid is true if this prod is a supported type and platform.
}
    Production is the production data from the Pouet API. The Pouet API returns values as null or string, so this struct is used to normalize the data types.
func (*Production) Get ¶
func (p *Production) Get(id int) (int, error)
Get requests data for a production record from the Pouet API. It returns an error if the production ID is invalid, when the request reaches a [Timeout] or fails. A status code is returned when the response status is not OK.
func (*Production) PlatformType ¶
func (p *Production) PlatformType() (tags.Tag, tags.Tag)
PlatformType parses the Pouet "platform" and "type" data and returns the corresponding platform and section tags. It returns -1 for an unknown platform or section.
func (*Production) Released ¶
func (p *Production) Released() (int16, int16, int16)
Released returns the production's release date as date_issued_ year, month, day values.
func (*Production) Releasers ¶
func (p *Production) Releasers() (string, string)
Releasers returns the first two names in the production that have is_group as true. The one exception is if the production title contains a reference to a BBS or FTP site name. Then that title will be used as the first group returned.
type Response ¶
type Response struct {
	Prod struct {
		ID          string `json:"id"`          // ID is the prod ID.
		Title       string `json:"name"`        // Title is the prod title.
		ReleaseDate string `json:"releaseDate"` // ReleaseDate is the prod release date.
		Voteup      string `json:"voteup"`      // Voteup is the number of thumbs up votes.
		Votepig     string `json:"votepig"`     // Votepig is the number of meh votes.
		Votedown    string `json:"votedown"`    // Votedown is the number of thumbs down votes.
		Voteavg     string `json:"voteavg"`     // Voteavg is the average votes, the maximum value is 1.0.
		Download    string `json:"download"`    // Download is the first download link.
		Demozoo     string `json:"demozoo"`     // Demozoo is the first Demozoo link.
		Groups      []struct {
			ID   string `json:"id"`
			Name string `json:"name"`
		} `json:"groups"` // Groups are the releasers that produced the prod.
		Platforms     Platforms `json:"platforms"` // Platforms are the platforms the prod runs on.
		Types         Types     `json:"types"`     // Types are the prod types.
		DownloadLinks []struct {
			Type string `json:"type"`
			Link string `json:"link"`
		} `json:"downloadLinks"` // DownloadLinks are the additional download links.
	} `json:"prod"` // Prod is the production data.
	Success bool `json:"success"` // Success is true if the prod data was found.
}
    Response is the JSON response from the Pouet API with production voting data.
type Votes ¶
type Votes struct {
	// ID is the production ID.
	ID int `json:"id"`
	// Stars is the production rating using the average votes multiplied by 5.
	Stars float64 `json:"stars"`
	// VotesAvg is the average votes, the maximum value is 1.0.
	VotesAvg float64 `json:"votes_avg"`
	// VotesUp is the number of thumbs up votes.
	VotesUp uint64 `json:"votes_up"`
	// VotesMeh is the number of meh votes otherwise called piggies.
	VotesMeh uint64 `json:"votes_meh"`
	// VotesDown is the number of thumbs down votes.
	VotesDown uint64 `json:"votes_down"`
}
    Votes is the production voting data from the Pouet API. The Pouet API returns values as null or string, so this struct is used to normalize the data types.