mirror of
https://github.com/stashapp/stash.git
synced 2025-12-06 08:26:00 +01:00
* Move stashbox package under pkg * Remove StashBox from method names * Add fingerprint conversion methods to Fingerprint Refactor Fingerprints methods * Make FindSceneByFingerprints accept fingerprints not scene ids * Refactor SubmitSceneDraft to not require readers * Have SubmitFingerprints accept scenes Remove SceneReader dependency * Move ScrapedScene to models package * Move ScrapedImage into models package * Move ScrapedGallery into models package * Move Scene relationship matching out of stashbox package This is now expected to be done in the client code * Remove TagFinder dependency from stashbox.Client * Make stashbox scene find full hierarchy of studios * Move studio resolution into separate method * Move studio matching out of stashbox package This is now client code responsibility * Move performer matching out of FindPerformerByID and FindPerformerByName * Refactor performer querying logic and remove unused stashbox models Renames FindStashBoxPerformersByPerformerNames to QueryPerformers and accepts names instead of performer ids * Refactor SubmitPerformerDraft to not load relationships This will be the responsibility of the calling code * Remove repository references
48 lines
1.3 KiB
Go
48 lines
1.3 KiB
Go
// Package stashbox provides a client interface to a stash-box server instance.
|
|
package stashbox
|
|
|
|
import (
|
|
"context"
|
|
"net/http"
|
|
"regexp"
|
|
|
|
"github.com/Yamashou/gqlgenc/clientv2"
|
|
"github.com/stashapp/stash/pkg/models"
|
|
"github.com/stashapp/stash/pkg/scraper"
|
|
"github.com/stashapp/stash/pkg/stashbox/graphql"
|
|
)
|
|
|
|
// Client represents the client interface to a stash-box server instance.
|
|
type Client struct {
|
|
client *graphql.Client
|
|
box models.StashBox
|
|
|
|
// tag patterns to be excluded
|
|
excludeTagRE []*regexp.Regexp
|
|
}
|
|
|
|
// NewClient returns a new instance of a stash-box client.
|
|
func NewClient(box models.StashBox, excludeTagPatterns []string) *Client {
|
|
authHeader := func(ctx context.Context, req *http.Request, gqlInfo *clientv2.GQLRequestInfo, res interface{}, next clientv2.RequestInterceptorFunc) error {
|
|
req.Header.Set("ApiKey", box.APIKey)
|
|
return next(ctx, req, gqlInfo, res)
|
|
}
|
|
|
|
client := &graphql.Client{
|
|
Client: clientv2.NewClient(http.DefaultClient, box.Endpoint, nil, authHeader),
|
|
}
|
|
|
|
return &Client{
|
|
client: client,
|
|
box: box,
|
|
excludeTagRE: scraper.CompileExclusionRegexps(excludeTagPatterns),
|
|
}
|
|
}
|
|
|
|
func (c Client) getHTTPClient() *http.Client {
|
|
return c.client.Client.Client
|
|
}
|
|
|
|
func (c Client) GetUser(ctx context.Context) (*graphql.Me, error) {
|
|
return c.client.Me(ctx)
|
|
}
|