package e621 import ( "fmt" "git.dragse.it/anthrove/e621-sdk-go/pkg/e621/builder" "git.dragse.it/anthrove/e621-sdk-go/pkg/e621/model" _ "github.com/joho/godotenv/autoload" "golang.org/x/time/rate" "net/http" "strconv" ) type Client struct { RequestContext model.RequestContext } func NewE621Client(username string, apikey string) Client { return Client{ RequestContext: model.RequestContext{ Client: http.Client{}, RateLimiter: rate.NewLimiter(1, 2), Host: "https://e621.net", UserAgent: fmt.Sprintf("Go-e621-SDK used by %s | (made by the Anthrove Team)", username), Username: username, APIKey: apikey, }, } } func (c *Client) SetHost(host string) *Client { c.RequestContext.Host = host return c } func (c *Client) SetAgentName(userAgent string) *Client { c.RequestContext.UserAgent = userAgent return c } func (c *Client) GetUserByName(username string) builder.UserBuilder { return builder.NewGetUserBuilder(c.RequestContext).SetUsername(username) } func (c *Client) GetUserByID(userID model.UserID) builder.UserBuilder { return builder.NewGetUserBuilder(c.RequestContext).SetUsername(strconv.FormatInt(int64(userID), 10)) } func (c *Client) GetFavoritesForUser(username string) (builder.FavoritesBuilder, error) { user, err := builder.NewGetUserBuilder(c.RequestContext).SetUsername(username).Execute() if err != nil { return nil, err } favoritesBuilder := builder.NewGetFavoritesBuilder(c.RequestContext).SetUserID(user.ID) return favoritesBuilder, nil } func (c *Client) GetFavoritesForUserWithTags(username string, tags string) builder.PostsBuilder { favoritesBuilder := builder.NewGetPostsBuilder(c.RequestContext).Tags(fmt.Sprintf("fav:%s %s", username, tags)) return favoritesBuilder } func (c *Client) GetPostByID(id model.PostID) builder.PostBuilder { return builder.NewGetPostBuilder(c.RequestContext).SetPostID(id) } func (c *Client) GetPosts() builder.PostsBuilder { return builder.NewGetPostsBuilder(c.RequestContext) }