UNPKG

@memberjunction/actions-bizapps-social

Version:

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

164 lines 6.81 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.LinkedInGetOrganizationPostsAction = void 0; const global_1 = require("@memberjunction/global"); const linkedin_base_action_1 = require("../linkedin-base.action"); const core_1 = require("@memberjunction/core"); const actions_1 = require("@memberjunction/actions"); /** * Action to get posts from a LinkedIn organization page */ let LinkedInGetOrganizationPostsAction = class LinkedInGetOrganizationPostsAction extends linkedin_base_action_1.LinkedInBaseAction { /** * Get posts from a LinkedIn organization page */ async InternalRunAction(params) { const { Params, ContextUser } = params; try { // Initialize OAuth const companyIntegrationId = this.getParamValue(Params, 'CompanyIntegrationID'); if (!await this.initializeOAuth(companyIntegrationId)) { throw new Error('Failed to initialize OAuth connection'); } // Extract parameters const organizationId = this.getParamValue(Params, 'OrganizationID'); const count = this.getParamValue(Params, 'Count') || 50; const startIndex = this.getParamValue(Params, 'StartIndex') || 0; const includeAnalytics = this.getParamValue(Params, 'IncludeAnalytics') === true; // Determine organization URN let organizationUrn; if (!organizationId) { // Get first admin organization if not specified const orgs = await this.getAdminOrganizations(); if (orgs.length === 0) { throw new Error('No organizations found. Please specify OrganizationID.'); } organizationUrn = orgs[0].urn; (0, core_1.LogStatus)(`Using organization: ${orgs[0].name}`); } else { organizationUrn = `urn:li:organization:${organizationId}`; } // Get posts (0, core_1.LogStatus)(`Fetching posts for organization...`); const shares = await this.getShares(organizationUrn, count, startIndex); // Convert to common format const posts = []; for (const share of shares) { const post = this.normalizePost(share); // Optionally fetch analytics if (includeAnalytics) { try { const analytics = await this.getPostAnalytics(share.id, organizationUrn); post.analytics = this.normalizeAnalytics(analytics); } catch (error) { (0, core_1.LogError)(`Failed to get analytics for post ${share.id}: ${error instanceof Error ? error.message : 'Unknown error'}`); } } posts.push(post); } (0, core_1.LogStatus)(`Retrieved ${posts.length} posts`); // Update output parameters const outputParams = [...Params]; const postsParam = outputParams.find(p => p.Name === 'Posts'); if (postsParam) postsParam.Value = posts; const totalCountParam = outputParams.find(p => p.Name === 'TotalCount'); if (totalCountParam) totalCountParam.Value = posts.length; return { Success: true, ResultCode: 'SUCCESS', Message: `Successfully retrieved ${posts.length} organization posts`, Params: outputParams }; } catch (error) { const errorMessage = error instanceof Error ? error.message : 'Unknown error occurred'; return { Success: false, ResultCode: 'ERROR', Message: `Failed to get organization posts: ${errorMessage}`, Params }; } } /** * Get analytics for a specific post */ async getPostAnalytics(shareId, organizationUrn) { try { const response = await this.axiosInstance.get('/organizationalEntityShareStatistics', { params: { q: 'organizationalEntity', organizationalEntity: organizationUrn, shares: `List(${shareId})` } }); if (response.data.elements && response.data.elements.length > 0) { return response.data.elements[0]; } return null; } catch (error) { (0, core_1.LogError)(`Failed to get post analytics: ${error instanceof Error ? error.message : 'Unknown error'}`); return null; } } /** * Define the parameters this action expects */ get Params() { return [ ...this.commonSocialParams, { Name: 'OrganizationID', Type: 'Input', Value: null }, { Name: 'Count', Type: 'Input', Value: 50 }, { Name: 'StartIndex', Type: 'Input', Value: 0 }, { Name: 'IncludeAnalytics', Type: 'Input', Value: false }, { Name: 'Posts', Type: 'Output', Value: null }, { Name: 'TotalCount', Type: 'Output', Value: null } ]; } /** * Get action description */ get Description() { return 'Retrieves posts from a LinkedIn organization page with optional analytics data'; } }; exports.LinkedInGetOrganizationPostsAction = LinkedInGetOrganizationPostsAction; exports.LinkedInGetOrganizationPostsAction = LinkedInGetOrganizationPostsAction = __decorate([ (0, global_1.RegisterClass)(actions_1.BaseAction, 'LinkedInGetOrganizationPostsAction') ], LinkedInGetOrganizationPostsAction); //# sourceMappingURL=get-organization-posts.action.js.map