Documentation ¶
Index ¶
- Variables
- func DownloadInstallSource(consumer *state.Consumer, stageFolder string, ctx context.Context, ...) error
- func FindBuildFile(files []*itchio.BuildFile, fileType itchio.BuildFileType, ...) *itchio.BuildFile
- func GameToString(game *itchio.Game) string
- func GetFilteredUploads(client *itchio.Client, game *itchio.Game, credentials itchio.GameCredentials, ...) (*manager.NarrowDownUploadsResult, error)
- func InstallPerform(ctx context.Context, rc *butlerd.RequestContext, ...) error
- func InstallPrepare(oc *OperationContext, meta *MetaSubcontext, isub *InstallSubcontext, ...) error
- func IsBadExternalHost(host string) bool
- func LogBuild(consumer *state.Consumer, u *itchio.Upload, b *itchio.Build)
- func LogUpload(consumer *state.Consumer, u *itchio.Upload, b *itchio.Build)
- func MakeSourceURL(client *itchio.Client, consumer *state.Consumer, sessionID string, ...) string
- func TeeConsumer(c *state.Consumer, logFile io.Writer) *state.Consumer
- func UninstallPerform(ctx context.Context, rc *butlerd.RequestContext, ...) error
- func ValidateCave(rc *butlerd.RequestContext, caveID string) *models.Cave
- type Accuracy
- type CommitInstallParams
- type DiskUsageInfo
- type GameAccess
- type InstallParams
- type InstallPerformStrategy
- type InstallPrepareResult
- type InstallSubcontext
- type InstallSubcontextState
- type InstallTask
- type ItchfsURLParams
- type MetaSubcontext
- type OperationContext
- type PidFileContents
- type Subcontext
Constants ¶
This section is empty.
Variables ¶
View Source
var BadExternalHosts = map[string]string{
"dropbox.com": "Needs a browser",
"drive.google.com": "Needs, like, a mountain of javascript to be interpreted first.",
"docs.google.com": "See drive.google.com",
"goo.gl": "Nothing good can hide behind that URL shortener (probably drive)",
"onedrive.live.com": "Microsoft's twist on Dropbox",
"1drv.ms": "Short url for OneDrive",
"yadi.sk": "Yandex dropbox-like?",
"mega.nz": "Decrypts files in your browser? What could go wrong.",
"mega.co.nz": "Old domain name for mega.nz",
"mediafire.com": "One of the least terrible 'hosting sites' of its genre, but still no dice.",
"indiedb.com": "Also needs a browser",
"wetransfer.com": "Needs a browser three",
"hightail.com": "Looks like a WeTransfer clone?",
"play.google.com": "Even if we could download from there, what are we going to do with an APK",
"itunes.apple.com": "Ditto",
"steampowered.com": "That's not a CDN, just a store page. Don't set your upload to that..",
"support.steampowered.com": "Why",
"store.steampowered.com": "What",
"gamejolt.com": "Please stop",
"puzzlescript.net": "Great little engine, nothing for us to download though.",
"philome.la": "Twine embeds, no archive to download from there",
"scratch.mit.edu": "More embeds",
"youtube.com": "Why??",
}
We can't download silently from any of these hosts. This maps host names to fun trivia.
Functions ¶
func DownloadInstallSource ¶
func FindBuildFile ¶
func FindBuildFile(files []*itchio.BuildFile, fileType itchio.BuildFileType, subType itchio.BuildFileSubType) *itchio.BuildFile
func GameToString ¶
func GetFilteredUploads ¶
func InstallPerform ¶
func InstallPerform(ctx context.Context, rc *butlerd.RequestContext, performParams butlerd.InstallPerformParams) error
func InstallPrepare ¶
func InstallPrepare(oc *OperationContext, meta *MetaSubcontext, isub *InstallSubcontext, allowDownloads bool, task InstallTask) error
func IsBadExternalHost ¶
func MakeSourceURL ¶
func UninstallPerform ¶
func UninstallPerform(ctx context.Context, rc *butlerd.RequestContext, params butlerd.UninstallPerformParams) error
func ValidateCave ¶
func ValidateCave(rc *butlerd.RequestContext, caveID string) *models.Cave
Types ¶
type CommitInstallParams ¶
type DiskUsageInfo ¶
type DiskUsageInfo struct { // Space we'll use once the install is all said and done FinalDiskUsage int64 // Space we need to perform that operation NeededFreeSpace int64 // Accuracy of our information Accuracy Accuracy }
func AssessDiskUsage ¶
func AssessDiskUsage(sourceFile eos.File, receiptIn *bfs.Receipt, installFolder string, installerInfo *installer.InstallerInfo) (*DiskUsageInfo, error)
type GameAccess ¶
type GameAccess struct { APIKey string `json:"api_key"` Credentials itchio.GameCredentials `json:"credentials"` }
func AccessForGameID ¶
func AccessForGameID(conn *sqlite.Conn, gameID int64) *GameAccess
func (*GameAccess) OnlyAPIKey ¶
func (ga *GameAccess) OnlyAPIKey() *GameAccess
type InstallParams ¶
type InstallParams struct { StagingFolder string `json:"stagingFolder"` Reason butlerd.DownloadReason `json:"reason"` CaveID string `json:"caveId"` InstallFolderName string `json:"installFolderName"` InstallLocationID string `json:"installLocationID"` InstallFolder string `json:"installFolder"` NoCave bool `json:"noCave"` Game *itchio.Game `json:"game"` Upload *itchio.Upload `json:"upload"` Build *itchio.Build `json:"build"` IgnoreInstallers bool `json:"ignoreInstallers,omitempty"` Access *GameAccess `json:"credentials"` }
type InstallPerformStrategy ¶
type InstallPerformStrategy = int
const ( InstallPerformStrategyNone InstallPerformStrategy = 0 InstallPerformStrategyInstall InstallPerformStrategy = 1 InstallPerformStrategyHeal InstallPerformStrategy = 2 InstallPerformStrategyUpgrade InstallPerformStrategy = 3 )
type InstallPrepareResult ¶
type InstallPrepareResult struct { File eos.File ReceiptIn *bfs.Receipt Strategy InstallPerformStrategy }
type InstallSubcontext ¶
type InstallSubcontext struct {
Data *InstallSubcontextState
}
func (*InstallSubcontext) GetData ¶
func (mt *InstallSubcontext) GetData() interface{}
func (*InstallSubcontext) Key ¶
func (mt *InstallSubcontext) Key() string
type InstallSubcontextState ¶
type InstallSubcontextState struct { DownloadSessionID string `json:"downloadSessionId,omitempty"` InstallerInfo *installer.InstallerInfo `json:"installerInfo,omitempty"` IsAvailableLocally bool `json:"isAvailableLocally,omitempty"` FirstInstallResult *installer.InstallResult `json:"firstInstallResult,omitempty"` SecondInstallerInfo *installer.InstallerInfo `json:"secondInstallerInfo,omitempty"` UpgradePath *itchio.UpgradePath `json:"upgradePath,omitempty"` UpgradePathIndex int `json:"upgradePathIndex,omitempty"` }
type InstallTask ¶
type InstallTask func(res *InstallPrepareResult) error
type ItchfsURLParams ¶
type MetaSubcontext ¶
type MetaSubcontext struct {
Data *InstallParams
}
func NewMetaSubcontext ¶
func NewMetaSubcontext() *MetaSubcontext
func (*MetaSubcontext) GetData ¶
func (mt *MetaSubcontext) GetData() interface{}
func (*MetaSubcontext) Key ¶
func (mt *MetaSubcontext) Key() string
type OperationContext ¶
type OperationContext struct {
// contains filtered or unexported fields
}
func LoadContext ¶
func LoadContext(ctx context.Context, rc *butlerd.RequestContext, stageFolder string) (*OperationContext, error)
func (*OperationContext) Consumer ¶
func (oc *OperationContext) Consumer() *state.Consumer
func (*OperationContext) Load ¶
func (oc *OperationContext) Load(s Subcontext)
func (*OperationContext) Release ¶
func (oc *OperationContext) Release()
func (*OperationContext) Retire ¶
func (oc *OperationContext) Retire()
func (*OperationContext) Save ¶
func (oc *OperationContext) Save(s Subcontext) error
func (*OperationContext) StageFolder ¶
func (oc *OperationContext) StageFolder() string
type PidFileContents ¶
type PidFileContents struct {
PID int64 `json:"pid"`
}
type Subcontext ¶
type Subcontext interface { // Key returns a unique string key used for storing // something under the context object Key() string // Data should return a pointer to the underlying struct // of the subcontext GetData() interface{} }
Source Files ¶
Click to show internal directories.
Click to hide internal directories.