Skip to content

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

Package listing

@kody/reddit

src/vote.ts

20 lines · 836 B · TypeScript
import { requireRecord, requireStringField, vote } from './client.ts'
import type { VoteInput } from './client.ts'

/**
 * Cast or dry-run a Reddit upvote, downvote, or clear. Voting requires confirm: true.
 * @example
 * import vote from 'kody:@kody/reddit/vote'
 * const preview = await vote({ id: 't3_abc123', direction: 'up', dryRun: true })
 * // => { dryRun: true, method: 'POST', url: 'https://oauth.reddit.com/api/vote', requiresConfirm: true }
 */
export default async function voteEntrypoint(
	params: Partial<VoteInput> & Record<string, unknown> = {},
) {
	const input = requireRecord(params, 'vote')
	requireStringField(input, 'id', 'vote')
	if (input.direction === undefined || input.direction === null || input.direction === '') {
		throw new Error('vote requires params.direction.')
	}
	return vote(input as VoteInput)
}