UNPKG

@memberjunction/actions-bizapps-social

Version:

Social Media Actions for MemberJunction - Twitter, LinkedIn, Facebook, Instagram, TikTok, YouTube, HootSuite, Buffer

83 lines 2.64 kB
import { BaseSocialMediaAction } from '../../base/base-social.action'; import { UserInfo } from '@memberjunction/core'; import { AxiosInstance, AxiosError } from 'axios'; import { SocialPost, MediaFile } from '../../base/base-social.action'; /** * Base class for all YouTube actions. * Handles YouTube Data API v3 authentication and common functionality. */ export declare abstract class YouTubeBaseAction extends BaseSocialMediaAction { protected get platformName(): string; protected get apiBaseUrl(): string; /** * Axios instance for API requests */ protected axiosInstance: AxiosInstance; /** * Initialize the axios instance with base configuration */ protected initializeAxios(): void; /** * YouTube-specific OAuth token refresh */ protected refreshAccessToken(): Promise<void>; /** * Make authenticated request to YouTube API */ protected makeYouTubeRequest<T = any>(endpoint: string, method?: 'GET' | 'POST' | 'PUT' | 'DELETE', data?: any, params?: Record<string, any>, contextUser?: UserInfo): Promise<T>; /** * Handle YouTube API errors */ protected handleYouTubeApiError(error: AxiosError): void; /** * Upload video to YouTube */ protected uploadVideo(videoFile: MediaFile, metadata: { title: string; description?: string; tags?: string[]; categoryId?: string; privacyStatus?: 'private' | 'unlisted' | 'public'; }): Promise<string>; /** * Initiate resumable upload session */ private initiateResumableUpload; /** * Perform the actual video upload */ private performResumableUpload; /** * Upload single media file (thumbnail) */ protected uploadSingleMedia(file: MediaFile): Promise<string>; /** * Convert YouTube video to standard social post format */ protected normalizePost(youtubeVideo: any): SocialPost; /** * Extract analytics from video statistics */ private extractVideoAnalytics; /** * Search for videos */ protected searchPosts(params: any): Promise<SocialPost[]>; /** * Get quota cost for an operation */ protected getQuotaCost(operation: string): number; /** * Parse ISO 8601 duration to seconds */ protected parseDuration(isoDuration: string): number; /** * Format bytes to human readable size */ protected formatBytes(bytes: number): string; /** * Validate video file */ protected validateVideoFile(file: MediaFile): void; } //# sourceMappingURL=youtube-base.action.d.ts.map