ficsit-cli-flake/cli/provider/mixed.go

73 lines
2.3 KiB
Go
Raw Normal View History

package provider
import (
"context"
"github.com/Khan/genqlient/graphql"
"github.com/satisfactorymodding/ficsit-cli/ficsit"
)
type MixedProvider struct {
ficsitProvider ficsitProvider
localProvider localProvider
Offline bool
}
func InitMixedProvider(client graphql.Client) *MixedProvider {
return &MixedProvider{
ficsitProvider: initFicsitProvider(client),
localProvider: initLocalProvider(),
Offline: false,
}
}
func (p MixedProvider) Mods(context context.Context, filter ficsit.ModFilter) (*ficsit.ModsResponse, error) {
if p.Offline {
return p.localProvider.Mods(context, filter)
}
return p.ficsitProvider.Mods(context, filter)
}
func (p MixedProvider) GetMod(context context.Context, modReference string) (*ficsit.GetModResponse, error) {
if p.Offline {
return p.localProvider.GetMod(context, modReference)
}
return p.ficsitProvider.GetMod(context, modReference)
}
func (p MixedProvider) ModVersions(context context.Context, modReference string, filter ficsit.VersionFilter) (*ficsit.ModVersionsResponse, error) {
if p.Offline {
return p.localProvider.ModVersions(context, modReference, filter)
}
return p.ficsitProvider.ModVersions(context, modReference, filter)
}
func (p MixedProvider) SMLVersions(context context.Context) (*ficsit.SMLVersionsResponse, error) {
if p.Offline {
return p.localProvider.SMLVersions(context)
}
return p.ficsitProvider.SMLVersions(context)
}
func (p MixedProvider) ResolveModDependencies(context context.Context, filter []ficsit.ModVersionConstraint) (*ficsit.ResolveModDependenciesResponse, error) {
if p.Offline {
return p.localProvider.ResolveModDependencies(context, filter)
}
return p.ficsitProvider.ResolveModDependencies(context, filter)
}
func (p MixedProvider) ModVersionsWithDependencies(context context.Context, modID string) (*ficsit.ModVersionsWithDependenciesResponse, error) {
if p.Offline {
return p.localProvider.ModVersionsWithDependencies(context, modID)
}
return p.ficsitProvider.ModVersionsWithDependencies(context, modID)
}
func (p MixedProvider) GetModName(context context.Context, modReference string) (*ficsit.GetModNameResponse, error) {
if p.Offline {
return p.localProvider.GetModName(context, modReference)
}
return p.ficsitProvider.GetModName(context, modReference)
}