import { createArticlePost, requireRecord, requireStringField } from './client.ts'
import type { CreateArticlePostInput } from './client.ts'
/**
* Create or dry-run a personal-profile LinkedIn article link post.
* @param params.url - Article URL to share.
* @param params.title - Explicit link-card title; LinkedIn does not scrape Open Graph metadata.
* @param params.description - Explicit link-card description.
* @param params.thumbnailUrl - HTTPS image fetched and uploaded through LinkedIn's Images API.
* @returns Dry-run preview or published post metadata when `confirm: true`.
* @example
* import createArticlePost from 'kody:@kody/linkedin/create-article-post'
* const result = await createArticlePost({
* text: 'Read this',
* url: 'https://example.com',
* title: 'Example article',
* description: 'A useful article.',
* thumbnailUrl: 'https://example.com/thumbnail.jpg',
* dryRun: true,
* })
* // => { dryRun: true, body: { ... } }
*/
export default async function createArticlePostEntrypoint(params: Partial<CreateArticlePostInput> & Record<string, unknown> = {}) {
const input = requireRecord(params, 'create-article-post')
requireStringField(input, 'text', 'create-article-post')
requireStringField(input, 'url', 'create-article-post')
requireStringField(input, 'title', 'create-article-post')
requireStringField(input, 'description', 'create-article-post')
return createArticlePost(input)
}