@hoover-institution/hubspot-lib
Version:
A toolkit for deep integration with HubSpot's Marketing Events API with a plugin-based architecture.
136 lines (122 loc) • 3.41 kB
JavaScript
import { castHook } from "../core/pluginSDK.js";
import { PLUGINS } from "../core/plugins.js";
import { EVENTS } from "../core/events.js";
// LOG_TO_CONSOLE plugin: logs all MarketingEvent actions to the console
castHook(
PLUGINS.LOG_TO_CONSOLE,
EVENTS.CREATE_EVENT,
({ eventName, externalEventId, status }) => {
console.log(
`[LOG][CreateEvent] ${eventName} (ID: ${externalEventId}) → ${status}`
);
return { statusCode: 200, message: "CreateEvent logged" };
}
);
castHook(
PLUGINS.LOG_TO_CONSOLE,
EVENTS.GET_EVENT,
({ externalEventId, found }) => {
console.log(
`[LOG][GetEvent] ID: ${externalEventId} → ${
found ? "Found" : "Not Found"
}`
);
return { statusCode: 200, found };
}
);
castHook(PLUGINS.LOG_TO_CONSOLE, EVENTS.GET_EVENTS, ({ count }) => {
console.log(`[LOG][GetEvents] Total events: ${count}`);
return { statusCode: 200, count };
});
castHook(
PLUGINS.LOG_TO_CONSOLE,
EVENTS.DELETE_EVENT,
({ externalEventId, success }) => {
console.log(
`[LOG][DeleteEvent] ID: ${externalEventId} → ${
success ? "Deleted" : "Failed"
}`
);
return { statusCode: success ? 200 : 404, deleted: success };
}
);
castHook(
PLUGINS.LOG_TO_CONSOLE,
EVENTS.REGISTER_EMAIL,
({ email, subscriberState, externalEventId }) => {
console.log(
`[LOG][Register] ${email} → ${subscriberState} (Event ID: ${externalEventId})`
);
return { statusCode: 200, email, subscriberState };
}
);
castHook(
PLUGINS.LOG_TO_CONSOLE,
EVENTS.GET_CONTACTS_BY_STATE,
({ externalEventId, subscriberState, count }) => {
console.log(
`[LOG][GetContactsByState] Event ID: ${externalEventId}, State: ${subscriberState} → ${count} contacts`
);
return { statusCode: 200, count };
}
);
castHook(
PLUGINS.LOG_TO_CONSOLE,
EVENTS.CREATE_OR_FIND_CONTACT_LIST,
({ listName, listId, created }) => {
console.log(
`[LOG][CreateOrFindContactList] ${listName} (ID: ${listId}) → ${
created ? "Created" : "Found"
}`
);
return { statusCode: 200, listId, created };
}
);
castHook(
PLUGINS.LOG_TO_CONSOLE,
EVENTS.GET_CONTACT_EVENT_STATE,
({ email, externalEventId, state }) => {
console.log(
`[LOG][GetContactEventState] ${email} (Event ID: ${externalEventId}) → ${state}`
);
return { statusCode: 200, state };
}
);
castHook(
PLUGINS.LOG_TO_CONSOLE,
EVENTS.ADD_CONTACT_TO_LIST,
({ listId, contactId }) => {
console.log(
`[LOG][AddContactToList] Contact ID: ${contactId} → List ID: ${listId}`
);
return { statusCode: 200, contactId, listId };
}
);
castHook(
PLUGINS.LOG_TO_CONSOLE,
EVENTS.REMOVE_CONTACT_FROM_LIST,
({ listId, contactId }) => {
console.log(
`[LOG][RemoveContactFromList] Contact ID: ${contactId} ← List ID: ${listId}`
);
return { statusCode: 200, contactId, listId };
}
);
castHook(
PLUGINS.LOG_TO_CONSOLE,
EVENTS.ASSOCIATE_LIST_WITH_EVENT,
({ eventId, listId }) => {
console.log(
`[LOG][AssociateListWithEvent] List ID: ${listId} ↔ Event ID: ${eventId}`
);
return { statusCode: 200, eventId, listId };
}
);
castHook(
PLUGINS.LOG_TO_CONSOLE,
EVENTS.MARKETING_EVENT_ERROR,
({ action, error }) => {
console.error(`[LOG][Error] ${action}:`, error);
return { statusCode: 500, error: error.message };
}
);