UNPKG

@memberjunction/actions-bizapps-social

Version:

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

101 lines 2.9 kB
import { BaseSocialMediaAction, MediaFile, SocialPost, SearchParams } from '../../base/base-social.action.js'; 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