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,
}
}