openmeter / api /v3 /client /events.go
Leon4gr45's picture
Upload folder using huggingface_hub (part 3)
04f1444 verified
Raw
History Blame Contribute Delete
3.72 kB
// Code generated by @openmeter/typespec-go. DO NOT EDIT.
package openmeter
import (
"context"
"iter"
"net/http"
"net/url"
)
type EventsService struct {
client *Client
}
type IngestedEventFilter struct {
// Filter events by ID.
ID *StringFilter
// Filter events by source.
Source *StringFilter
// Filter events by subject.
Subject *StringFilter
// Filter events by type.
Type *StringFilter
// Filter events by the associated customer ID.
CustomerID *StringExactFilter
// Filter events by event time.
Time *DateTimeFilter
// Filter events by the time the event was ingested.
IngestedAt *DateTimeFilter
// Filter events by the time the event was stored.
StoredAt *DateTimeFilter
}
type IngestedEventListParams struct {
Page *CursorPageParams
Filter *IngestedEventFilter
Sort *Sort
}
func (p IngestedEventListParams) values() url.Values {
q := url.Values{}
addCursorPageParams(q, p.Page)
if p.Filter != nil {
addStringFilter(q, "filter[id]", p.Filter.ID)
addStringFilter(q, "filter[source]", p.Filter.Source)
addStringFilter(q, "filter[subject]", p.Filter.Subject)
addStringFilter(q, "filter[type]", p.Filter.Type)
addStringExactFilter(q, "filter[customer_id]", p.Filter.CustomerID)
addDateTimeFilter(q, "filter[time]", p.Filter.Time)
addDateTimeFilter(q, "filter[ingested_at]", p.Filter.IngestedAt)
addDateTimeFilter(q, "filter[stored_at]", p.Filter.StoredAt)
}
addSort(q, "sort", p.Sort)
return q
}
// List ingested events.
func (s *EventsService) List(ctx context.Context, params IngestedEventListParams) (*IngestedEventPaginatedResponse, error) {
path := "/openmeter/events"
req, err := s.client.newRequestWithContentType(ctx, http.MethodGet, path, params.values(), nil, "", "application/json")
if err != nil {
return nil, err
}
var out IngestedEventPaginatedResponse
if err := s.client.doJSON(req, &out); err != nil {
return nil, err
}
return &out, nil
}
// ListAll returns an iterator over all IngestedEvent results, fetching pages of List transparently. Iteration stops at the first error, which is yielded as the second value.
func (s *EventsService) ListAll(ctx context.Context, params IngestedEventListParams) iter.Seq2[IngestedEvent, error] {
return paginateCursor(params.Page, func(after, before *string, size int) ([]IngestedEvent, *string, *string, error) {
pageParams := params
pageParams.Page = &CursorPageParams{Size: Int(size), After: after, Before: before}
resp, err := s.List(ctx, pageParams)
if err != nil {
return nil, nil, nil, err
}
return resp.Data, String(resp.Meta.Page.Next.GetOrEmpty()), String(resp.Meta.Page.Previous.GetOrEmpty()), nil
})
}
// Ingests an event or batch of events following the CloudEvents specification.
func (s *EventsService) IngestEvent(ctx context.Context, request EventInput) error {
path := "/openmeter/events"
req, err := s.client.newRequestWithContentType(ctx, http.MethodPost, path, nil, request, "application/cloudevents+json", "")
if err != nil {
return err
}
_, err = s.client.doRaw(req)
return err
}
func (s *EventsService) IngestEvents(ctx context.Context, request []EventInput) error {
path := "/openmeter/events"
req, err := s.client.newRequestWithContentType(ctx, http.MethodPost, path, nil, request, "application/cloudevents-batch+json", "")
if err != nil {
return err
}
_, err = s.client.doRaw(req)
return err
}
func (s *EventsService) IngestEventsJSON(ctx context.Context, request OneOrMany[EventInput]) error {
path := "/openmeter/events"
req, err := s.client.newRequestWithContentType(ctx, http.MethodPost, path, nil, request, "application/json", "")
if err != nil {
return err
}
_, err = s.client.doRaw(req)
return err
}