mirror of https://github.com/stashapp/stash.git
46 lines
1.2 KiB
Go
46 lines
1.2 KiB
Go
package api
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
|
|
"github.com/stashapp/stash/internal/manager/config"
|
|
"github.com/stashapp/stash/pkg/models"
|
|
"github.com/stashapp/stash/pkg/scraper/stashbox"
|
|
)
|
|
|
|
func (r *Resolver) newStashBoxClient(box models.StashBox) *stashbox.Client {
|
|
return stashbox.NewClient(box, r.stashboxRepository())
|
|
}
|
|
|
|
func resolveStashBoxFn(indexField, endpointField string) func(index *int, endpoint *string) (*models.StashBox, error) {
|
|
return func(index *int, endpoint *string) (*models.StashBox, error) {
|
|
boxes := config.GetInstance().GetStashBoxes()
|
|
|
|
// prefer endpoint over index
|
|
if endpoint != nil {
|
|
for _, box := range boxes {
|
|
if strings.EqualFold(*endpoint, box.Endpoint) {
|
|
return box, nil
|
|
}
|
|
}
|
|
return nil, fmt.Errorf("stash box not found")
|
|
}
|
|
|
|
if index != nil {
|
|
if *index < 0 || *index >= len(boxes) {
|
|
return nil, fmt.Errorf("invalid %s %d", indexField, index)
|
|
}
|
|
|
|
return boxes[*index], nil
|
|
}
|
|
|
|
return nil, fmt.Errorf("%s not provided", endpointField)
|
|
}
|
|
}
|
|
|
|
var (
|
|
resolveStashBox = resolveStashBoxFn("stash_box_index", "stash_box_endpoint")
|
|
resolveStashBoxBatchTagInput = resolveStashBoxFn("endpoint", "stash_box_endpoint")
|
|
)
|