@memberjunction/actions-bizapps-social
Version:
Social Media Actions for MemberJunction - Twitter, LinkedIn, Facebook, Instagram, TikTok, YouTube, HootSuite, Buffer
101 lines • 2.89 kB
TypeScript
import { BaseSocialMediaAction, MediaFile, SocialPost, SearchParams } from '../../base/base-social.action';
import { AxiosInstance, AxiosError } from 'axios';
/**
* Base class for all HootSuite actions.
* Handles HootSuite-specific authentication, API interactions, and rate limiting.
*/
export declare abstract class HootSuiteBaseAction extends BaseSocialMediaAction {
protected get platformName(): string;
protected get apiBaseUrl(): string;
/**
* Axios instance for making HTTP requests
*/
private _axiosInstance;
/**
* Get or create axios instance with interceptors
*/
protected get axiosInstance(): AxiosInstance;
/**
* Refresh the access token using the refresh token
*/
protected refreshAccessToken(): Promise<void>;
/**
* Upload media to HootSuite
*/
protected uploadSingleMedia(file: MediaFile): Promise<string>;
/**
* Wait for media to finish processing
*/
private waitForMediaProcessing;
/**
* Get social profiles for the authenticated user
*/
protected getSocialProfiles(): Promise<HootSuiteProfile[]>;
/**
* Make a paginated request to HootSuite API
*/
protected makePaginatedRequest<T>(endpoint: string, params?: Record<string, any>): Promise<T[]>;
/**
* Format date for HootSuite API (ISO 8601)
*/
protected formatHootSuiteDate(date: Date | string): string;
/**
* Parse HootSuite date string
*/
protected parseHootSuiteDate(dateString: string): Date;
/**
* Convert HootSuite post to common format
*/
protected normalizePost(hootsuitePost: HootSuitePost): SocialPost;
/**
* Search for posts - implemented in search action
*/
protected searchPosts(params: SearchParams): Promise<SocialPost[]>;
/**
* Handle HootSuite-specific errors
*/
protected handleHootSuiteError(error: AxiosError): never;
}
/**
* HootSuite-specific interfaces
*/
export interface HootSuiteProfile {
id: string;
socialNetworkId: string;
socialNetworkUserId: string;
avatarUrl: string;
displayName: string;
type: string;
ownerId: string;
}
export interface HootSuitePost {
id: string;
socialProfileIds: string[];
text: string;
scheduledTime?: string;
createdTime: string;
state: 'SCHEDULED' | 'PUBLISHED' | 'FAILED' | 'DRAFT';
mediaIds?: string[];
tags?: string[];
location?: {
latitude: number;
longitude: number;
};
}
export interface HootSuiteAnalytics {
postId: string;
metrics: {
likes: number;
comments: number;
shares: number;
clicks: number;
impressions: number;
engagements: number;
reach: number;
};
period: {
start: string;
end: string;
};
}
//# sourceMappingURL=hootsuite-base.action.d.ts.map