UNPKG

@memberjunction/actions-bizapps-social

Version:

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

76 lines 2.71 kB
import { BaseSocialMediaAction, MediaFile } from '../../base/base-social.action'; import { AxiosInstance, AxiosError } from 'axios'; /** * Base class for all Instagram actions. * Handles Instagram Graph API and Basic Display API authentication and common functionality. * Instagram uses Facebook's Graph API infrastructure. */ export declare abstract class InstagramBaseAction extends BaseSocialMediaAction { protected get platformName(): string; protected get apiBaseUrl(): string; /** * Instagram Business Account ID (stored in CustomAttribute1) */ protected get instagramBusinessAccountId(): string; /** * Facebook Page ID (stored in CustomAttribute2) - required for Instagram Business API */ protected get facebookPageId(): string; /** * Axios instance for API calls */ private _axiosInstance; /** * Get or create axios instance with authentication */ protected get axios(): AxiosInstance; /** * Refresh the Instagram/Facebook access token */ protected refreshAccessToken(): Promise<void>; /** * Make an Instagram Graph API request */ protected makeInstagramRequest<T = any>(endpoint: string, method?: 'GET' | 'POST' | 'DELETE', data?: any, params?: any): Promise<T>; /** * Handle Instagram-specific errors */ protected handleInstagramError(error: AxiosError): void; /** * Parse Facebook's app usage header to determine rate limit status */ private parseAppUsage; /** * Upload media to Instagram (returns container ID) */ protected uploadSingleMedia(file: MediaFile): Promise<string>; /** * Upload media to a CDN (placeholder - implement based on your CDN) */ private uploadMediaToCDN; /** * Publish a media container */ protected publishMediaContainer(containerId: string): Promise<string>; /** * Get insights for a media object or account */ protected getInsights(objectId: string, metrics: string[], period?: 'lifetime' | 'day' | 'week' | 'days_28'): Promise<any>; /** * Search for posts (limited to business account's own posts) */ protected searchPosts(params: any): Promise<any[]>; /** * Normalize Instagram post to common format */ protected normalizePost(instagramPost: any): any; /** * Check if media container is ready for publishing */ protected isMediaContainerReady(containerId: string): Promise<boolean>; /** * Wait for media container to be ready */ protected waitForMediaContainer(containerId: string, maxWaitTime?: number): Promise<void>; } //# sourceMappingURL=instagram-base.action.d.ts.map