e4b02a792d
* chore: move mod downloading to cli/cache * feat: data providers, ficsit and local * feat: keep cache in memory, load on init * feat: log invalid cache files instead of returning error * chore: make linter happy * feat: fill cached mod Authors field from CreatedBy * chore: make linter happy again * feat: add icon and size to cached mods * feat: cache the cached file hashes * fix: change to new provider access style --------- Co-authored-by: Vilsol <me@vil.so>
72 lines
2.3 KiB
Go
72 lines
2.3 KiB
Go
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)
|
|
}
|