Skip to content

Built for people who want to own their automations. Join the waitlist for an invite.

Package listing

@kody/sessionize

src/request.ts

39 lines · 1.1 KB · TypeScript
import {
	assertEndpointId,
	fetchSessionizeView,
	requireSessionizeView,
	sessionizeViewUrl,
} from './client.ts'
import type { EndpointInput, SessionizeView } from './types.ts'

export type SessionizeRequestInput = EndpointInput & {
	/** One of All, Sessions, Speakers, or GridSmart. */
	view: SessionizeView
}

/**
 * Fetch a raw Sessionize view. Prefer the named helpers for agent-sized results.
 *
 * @example
 * import sessionizeRequest from 'kody:@kody/sessionize/request'
 * const result = await sessionizeRequest({ endpointId: 'jl4ktls0', view: 'All' })
 * // => { view: 'All', url: 'https://sessionize.com/api/v2/jl4ktls0/view/All', data: { sessions, speakers, ... } }
 */
export default async function sessionizeRequest(
	input: SessionizeRequestInput,
): Promise<{
	endpointId: string
	view: SessionizeView
	url: string
	data: unknown
}> {
	const endpointId = assertEndpointId(input.endpointId)
	const view = requireSessionizeView(input.view)
	const data = await fetchSessionizeView<unknown>({ endpointId, view })
	return {
		endpointId,
		view,
		url: sessionizeViewUrl(endpointId, view),
		data,
	}
}