@mediarithmics/plugins-nodejs-sdk
Version:
This is the mediarithmics nodejs to help plugin developers bootstrapping their plugin without having to deal with most of the plugin boilerplate
191 lines (160 loc) • 5.99 kB
text/typescript
import { RealmFilter, isWebDomainRealmFilter } from '../../core/webdomain/UserAgentIdentifierRealmSelectionInterface';
export type AudienceFeedConnectorStatus = 'ok' | 'error' | 'retry' | 'no_eligible_identifier';
export declare type AudienceFeedConnectorConnectionStatus = 'ok' | 'error' | 'external_segment_not_ready_yet';
export declare type AudienceFeedConnectorTroubleshootStatus = 'ok' | 'error' | 'not_implemented';
export declare type AudienceFeedConnectorAuthenticationStatus =
| 'authenticated'
| 'not_authenticated'
| 'error'
| 'not_implemented';
export declare type AudienceFeedAuthenticationStatus = 'ok' | 'error' | 'not_implemented';
export declare type AudienceFeedLogoutStatus = 'ok' | 'error' | 'not_implemented';
export declare type AudienceFeedConnectorDynamicPropertyValuesQueryStatus = 'ok' | 'error' | 'not_implemented';
export type AudienceFeedConnectorContentType = 'text/csv' | 'application/json' | 'text/plain';
export interface UserSegmentUpdatePluginResponse {
status: AudienceFeedConnectorStatus;
data?: UserSegmentUpdatePluginFileDeliveryResponseData[];
stats?: UserSegmentUpdatePluginResponseStats[];
message?: string;
next_msg_delay_in_ms?: number;
}
export interface BatchedUserSegmentUpdatePluginResponse<T> {
status: AudienceFeedConnectorStatus;
data?: UserSegmentUpdatePluginBatchDeliveryResponseData<T>[];
stats?: UserSegmentUpdatePluginResponseStats[];
message?: string;
next_msg_delay_in_ms?: number;
}
export type DeliveryType<T> =
| UserSegmentUpdatePluginFileDeliveryResponseData
| UserSegmentUpdatePluginBatchDeliveryResponseData<T>;
export interface UserSegmentUpdatePluginFileDeliveryResponseData
extends UserSegmentUpdatePluginDeliveryContent<string> {
type: 'FILE_DELIVERY';
destination_token: string;
}
export interface UserSegmentUpdatePluginBatchDeliveryResponseData<T> extends UserSegmentUpdatePluginDeliveryContent<T> {
type: 'BATCH_DELIVERY';
}
export interface UserSegmentUpdatePluginDeliveryContent<T> {
content: T;
grouping_key: string;
}
type SyncResult = 'PROCESSED' | 'SUCCESS' | 'REJECTED';
export interface UserSegmentUpdatePluginResponseStats {
identifier: string;
sync_result: SyncResult;
tags?: AudienceFeedStatTag[];
}
export interface ExternalSegmentCreationPluginResponse {
status: AudienceFeedConnectorStatus;
message?: string;
visibility?: Visibility;
}
export interface ExternalSegmentConnectionPluginResponse {
status: AudienceFeedConnectorConnectionStatus;
message?: string;
}
export interface ExternalSegmentTroubleshootResponse {
status: AudienceFeedConnectorTroubleshootStatus;
message?: string;
data?: any;
}
export interface ExternalSegmentAuthenticationStatusQueryResponse {
status: AudienceFeedConnectorAuthenticationStatus;
message?: string;
data?: {
login_url?: string;
[key: string]: any;
};
}
export interface ExternalSegmentAuthenticationResponse {
status: AudienceFeedAuthenticationStatus;
message?: string;
}
export interface ExternalSegmentLogoutResponse {
status: AudienceFeedLogoutStatus;
message?: string;
}
export interface ExternalSegmentDynamicPropertyValuesQueryResponse {
status: AudienceFeedConnectorDynamicPropertyValuesQueryStatus;
message?: string;
data?: {
property_technical_name: string;
enum: { label: string; value: string }[];
[key: string]: any;
}[];
}
export interface AudienceFeedStatTag {
key: string;
value: string;
}
export type Visibility = 'PRIVATE' | 'PUBLIC';
export class AudienceFeedInstanceContextError extends Error {
public visibility: Visibility = 'PUBLIC';
constructor(public message: string) {
super();
}
}
export class MissingConfigurationPropertyError extends AudienceFeedInstanceContextError {
public log: string;
constructor(
public feed_id: string,
public property_name: string,
) {
super(
'Invalid technical configuration - It seems your audience feed has not been configured correctly. Please contact your support with the provided error id.',
);
this.log = `Missing configuration property: ${property_name}`;
}
}
export class MandatoryPropertyValueError extends AudienceFeedInstanceContextError {
public log: string;
constructor(
public feed_id: string,
public property_name: string,
) {
super(`${property_name} is a mandatory property. Please provide it when creating the feed.`);
this.log = `Mandatory property: ${property_name}`;
}
}
export class InvalidPropertyValueError extends AudienceFeedInstanceContextError {
public log: string;
constructor(
public feed_id: string,
public property_name: string,
public property_value: string,
public allowed: string[],
) {
super(
`${property_value} is an invalid value for ${property_name} property. Only one of the following can be used: ${allowed.join(
',',
)}. Please select a valid value when creating the feed.`,
);
this.log = `Invalid value ${property_value} for ${property_name} property `;
}
}
export class FileDownloadError extends AudienceFeedInstanceContextError {
public log: string;
constructor(
public feed_id: string,
public file_name: string,
) {
super('Error downloading configuration file, please contact your support with the provided error id.');
this.log = `Error while fetching file: ${file_name}`;
}
}
export class MissingRealmError extends AudienceFeedInstanceContextError {
public log: string;
constructor(
public datamart_id: string,
public realmFilter: RealmFilter,
) {
super(
'Invalid technical configuration - It seems your audience feed has not been configured correctly. Please contact your support with the provided error id.',
);
this.log = `No user agent identifier realm selection of type ${realmFilter.realmType}${
isWebDomainRealmFilter(realmFilter) ? ` with sld_name ${realmFilter.sld_name} ` : ' '
}was found in datamart ${datamart_id}`;
}
}