import { ConfigurationError } from "@pipedream/platform";
import common from "../common/polling.mjs";
import utils from "../../common/utils.mjs";
import sampleEmit from "./test-event.mjs";
export default {
...common,
key: "linkedin-new-organization-post-created",
name: "New Organization Post Created",
description: "Emit new event when a new post is created by the organization. [See the documentation](https://learn.microsoft.com/en-us/linkedin/marketing/community-management/shares/posts-api?view=li-lms-2024-09&tabs=curl#find-posts-by-authors).",
type: "source",
version: "0.0.1",
dedupe: "unique",
props: {
...common.props,
organizationVanityName: {
type: "string",
label: "Organization Vanity Name",
description: "You can get the Orgainization Vanity Name from the company LinkedIN URL, for example, if the company LinkedIn URL is `https://www.linkedin.com/company/confluent`, then the Organization Vanity Name is `confluent`.",
},
},
hooks: {
...common.hooks,
async deploy() {
const {
app,
organizationVanityName,
setOrganizationId,
setIsFirstRun,
} = this;
const { elements } = await app.searchOrganizations("vanityName", {
debug: true,
params: {
vanityName: organizationVanityName,
},
paramsSerializer: utils.getParamsSerializer(utils.encodeFn),
});
const organizationFound =
elements?.find(({ vanityName }) => vanityName === organizationVanityName);
if (!organizationFound) {
throw new ConfigurationError(`There's no Organization matched for Organization Vanity Name \`${organizationVanityName}\`.`);
}
setOrganizationId(organizationFound.id);
setIsFirstRun(true);
},
},
methods: {
...common.methods,
getDateField() {
return "createdAt";
},
getResourceName() {
return "elements";
},
getResourcesFn() {
return this.app.listPosts;
},
getResourcesFnArgs() {
const author = `urn:li:organization:${this.getOrganizationId()}`;
return {
debug: true,
params: {
author,
q: "author",
sortBy: "CREATED",
},
};
},
generateMeta(resource) {
return {
id: resource.id,
summary: `New Org Post: ${resource.id}`,
ts: resource.createdAt,
};
},
},
sampleEmit,
};