@memberjunction/actions-bizapps-social
Version:
Social Media Actions for MemberJunction - Twitter, LinkedIn, Facebook, Instagram, TikTok, YouTube, HootSuite, Buffer
76 lines • 2.71 kB
TypeScript
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