UNPKG

svix

Version:

Svix webhooks API client and webhook verification library

120 lines (105 loc) 3.73 kB
// this file is @generated import { type PollingEndpointConsumerSeekIn, PollingEndpointConsumerSeekInSerializer, } from "../models/pollingEndpointConsumerSeekIn"; import { type PollingEndpointConsumerSeekOut, PollingEndpointConsumerSeekOutSerializer, } from "../models/pollingEndpointConsumerSeekOut"; import { type PollingEndpointOut, PollingEndpointOutSerializer, } from "../models/pollingEndpointOut"; import { HttpMethod, SvixRequest, type SvixRequestContext } from "../request"; export interface MessagePollerPollOptions { /** Limit the number of returned items */ limit?: number; /** The iterator returned from a prior invocation */ iterator?: string | null; /** Filters messages sent with this event type (optional). */ eventType?: string; /** Filters messages sent with this channel (optional). */ channel?: string; after?: Date | null; } export interface MessagePollerConsumerPollOptions { /** Limit the number of returned items */ limit?: number; /** The iterator returned from a prior invocation */ iterator?: string | null; } export interface MessagePollerConsumerSeekOptions { idempotencyKey?: string; } export class MessagePoller { public constructor(private readonly requestCtx: SvixRequestContext) {} /** Reads the stream of created messages for an application, filtered on the Sink's event types and Channels. */ public poll( appId: string, sinkId: string, options?: MessagePollerPollOptions ): Promise<PollingEndpointOut> { const request = new SvixRequest( HttpMethod.GET, "/api/v1/app/{app_id}/poller/{sink_id}" ); request.setPathParam("app_id", appId); request.setPathParam("sink_id", sinkId); request.setQueryParams({ limit: options?.limit, iterator: options?.iterator, event_type: options?.eventType, channel: options?.channel, after: options?.after, }); return request.send(this.requestCtx, PollingEndpointOutSerializer._fromJsonObject); } /** * Reads the stream of created messages for an application, filtered on the Sink's event types and * Channels, using server-managed iterator tracking. */ public consumerPoll( appId: string, sinkId: string, consumerId: string, options?: MessagePollerConsumerPollOptions ): Promise<PollingEndpointOut> { const request = new SvixRequest( HttpMethod.GET, "/api/v1/app/{app_id}/poller/{sink_id}/consumer/{consumer_id}" ); request.setPathParam("app_id", appId); request.setPathParam("sink_id", sinkId); request.setPathParam("consumer_id", consumerId); request.setQueryParams({ limit: options?.limit, iterator: options?.iterator, }); return request.send(this.requestCtx, PollingEndpointOutSerializer._fromJsonObject); } /** Sets the starting offset for the consumer of a polling endpoint. */ public consumerSeek( appId: string, sinkId: string, consumerId: string, pollingEndpointConsumerSeekIn: PollingEndpointConsumerSeekIn, options?: MessagePollerConsumerSeekOptions ): Promise<PollingEndpointConsumerSeekOut> { const request = new SvixRequest( HttpMethod.POST, "/api/v1/app/{app_id}/poller/{sink_id}/consumer/{consumer_id}/seek" ); request.setPathParam("app_id", appId); request.setPathParam("sink_id", sinkId); request.setPathParam("consumer_id", consumerId); request.setHeaderParam("idempotency-key", options?.idempotencyKey); request.setBody( PollingEndpointConsumerSeekInSerializer._toJsonObject(pollingEndpointConsumerSeekIn) ); return request.send( this.requestCtx, PollingEndpointConsumerSeekOutSerializer._fromJsonObject ); } }