openmeter / api /v3 /client /addons.go
Leon4gr45's picture
Upload folder using huggingface_hub (part 3)
04f1444 verified
Raw
History Blame Contribute Delete
5.18 kB
// Code generated by @openmeter/typespec-go. DO NOT EDIT.
package openmeter
import (
"context"
"fmt"
"iter"
"net/http"
"net/url"
)
type AddonsService struct {
client *Client
}
type AddonFilter struct {
ID *StringExactFilter
Key *StringFilter
Name *StringFilter
Status *StringExactFilter
Currency *StringExactFilter
}
type AddonListParams struct {
Page *PageParams
Sort *Sort
Filter *AddonFilter
}
func (p AddonListParams) values() url.Values {
q := url.Values{}
addPageParams(q, p.Page)
addSort(q, "sort", p.Sort)
if p.Filter != nil {
addStringExactFilter(q, "filter[id]", p.Filter.ID)
addStringFilter(q, "filter[key]", p.Filter.Key)
addStringFilter(q, "filter[name]", p.Filter.Name)
addStringExactFilter(q, "filter[status]", p.Filter.Status)
addStringExactFilter(q, "filter[currency]", p.Filter.Currency)
}
return q
}
// List all add-ons.
func (s *AddonsService) List(ctx context.Context, params AddonListParams) (*AddonPagePaginatedResponse, error) {
path := "/openmeter/addons"
req, err := s.client.newRequestWithContentType(ctx, http.MethodGet, path, params.values(), nil, "", "application/json")
if err != nil {
return nil, err
}
var out AddonPagePaginatedResponse
if err := s.client.doJSON(req, &out); err != nil {
return nil, err
}
return &out, nil
}
// ListAll returns an iterator over all Addon results, fetching pages of List transparently. Iteration stops at the first error, which is yielded as the second value.
func (s *AddonsService) ListAll(ctx context.Context, params AddonListParams) iter.Seq2[Addon, error] {
return paginate(params.Page, func(page, size int) ([]Addon, int, error) {
pageParams := params
pageParams.Page = &PageParams{Size: Int(size), Number: Int(page)}
resp, err := s.List(ctx, pageParams)
if err != nil {
return nil, 0, err
}
return resp.Data, resp.Meta.Page.Total, nil
})
}
// Create a new add-on.
func (s *AddonsService) Create(ctx context.Context, request CreateAddonRequest) (*Addon, error) {
path := "/openmeter/addons"
req, err := s.client.newRequestWithContentType(ctx, http.MethodPost, path, nil, request, "application/json", "application/json")
if err != nil {
return nil, err
}
var out Addon
if err := s.client.doJSON(req, &out); err != nil {
return nil, err
}
return &out, nil
}
// Update an add-on by id.
func (s *AddonsService) Update(ctx context.Context, addonID string, request UpsertAddonRequest) (*Addon, error) {
if addonID == "" {
return nil, fmt.Errorf("openmeter: %s must not be empty: %w", "addonID", ErrEmptyID)
}
path := "/openmeter/addons/{addonId}"
path = replacePathParam(path, "addonId", addonID)
req, err := s.client.newRequestWithContentType(ctx, http.MethodPut, path, nil, request, "application/json", "application/json")
if err != nil {
return nil, err
}
var out Addon
if err := s.client.doJSON(req, &out); err != nil {
return nil, err
}
return &out, nil
}
// Get add-on by id.
func (s *AddonsService) Get(ctx context.Context, addonID string) (*Addon, error) {
if addonID == "" {
return nil, fmt.Errorf("openmeter: %s must not be empty: %w", "addonID", ErrEmptyID)
}
path := "/openmeter/addons/{addonId}"
path = replacePathParam(path, "addonId", addonID)
req, err := s.client.newRequestWithContentType(ctx, http.MethodGet, path, nil, nil, "", "application/json")
if err != nil {
return nil, err
}
var out Addon
if err := s.client.doJSON(req, &out); err != nil {
return nil, err
}
return &out, nil
}
// Soft delete add-on by id.
func (s *AddonsService) Delete(ctx context.Context, addonID string) error {
if addonID == "" {
return fmt.Errorf("openmeter: %s must not be empty: %w", "addonID", ErrEmptyID)
}
path := "/openmeter/addons/{addonId}"
path = replacePathParam(path, "addonId", addonID)
req, err := s.client.newRequestWithContentType(ctx, http.MethodDelete, path, nil, nil, "", "")
if err != nil {
return err
}
_, err = s.client.doRaw(req)
return err
}
// Archive an add-on version.
func (s *AddonsService) Archive(ctx context.Context, addonID string) (*Addon, error) {
if addonID == "" {
return nil, fmt.Errorf("openmeter: %s must not be empty: %w", "addonID", ErrEmptyID)
}
path := "/openmeter/addons/{addonId}/archive"
path = replacePathParam(path, "addonId", addonID)
req, err := s.client.newRequestWithContentType(ctx, http.MethodPost, path, nil, nil, "", "application/json")
if err != nil {
return nil, err
}
var out Addon
if err := s.client.doJSON(req, &out); err != nil {
return nil, err
}
return &out, nil
}
// Publish an add-on version.
func (s *AddonsService) Publish(ctx context.Context, addonID string) (*Addon, error) {
if addonID == "" {
return nil, fmt.Errorf("openmeter: %s must not be empty: %w", "addonID", ErrEmptyID)
}
path := "/openmeter/addons/{addonId}/publish"
path = replacePathParam(path, "addonId", addonID)
req, err := s.client.newRequestWithContentType(ctx, http.MethodPost, path, nil, nil, "", "application/json")
if err != nil {
return nil, err
}
var out Addon
if err := s.client.doJSON(req, &out); err != nil {
return nil, err
}
return &out, nil
}