Skip to content

Commit

Permalink
#789: remove temporary SDK fix after sfmc-sdk 1.0 release
Browse files Browse the repository at this point in the history
  • Loading branch information
JoernBerkefeld committed Apr 16, 2023
1 parent cbccd20 commit 1e54711
Show file tree
Hide file tree
Showing 3 changed files with 0 additions and 216 deletions.
46 changes: 0 additions & 46 deletions docs/dist/documentation.md
Original file line number Diff line number Diff line change
Expand Up @@ -1475,8 +1475,6 @@ Campaign MetadataType
* [Campaign](#Campaign)[<code>MetadataType</code>](#MetadataType)
* [.retrieve(retrieveDir, [_], [__], [key])](#Campaign.retrieve) ⇒ <code>Promise.&lt;TYPE.MetadataTypeMapObj&gt;</code>
* [.retrieveForCache()](#Campaign.retrieveForCache) ⇒ <code>Promise.&lt;TYPE.MetadataTypeMapObj&gt;</code>
* [.upgradeGetBulk()](#Campaign.upgradeGetBulk)
* [.getBulkForLegacyApi(url, [pageSize], [iteratorField])](#Campaign.getBulkForLegacyApi) ⇒ <code>Promise.&lt;object&gt;</code>
* [.getAssetTags(retrieveDir, campaignId, name)](#Campaign.getAssetTags) ⇒ <code>Promise.&lt;TYPE.MetadataTypeMapObj&gt;</code>

<a name="Campaign.retrieve"></a>
Expand All @@ -1501,27 +1499,6 @@ Retrieves event definition metadata for caching

**Kind**: static method of [<code>Campaign</code>](#Campaign)
**Returns**: <code>Promise.&lt;TYPE.MetadataTypeMapObj&gt;</code> - Promise of metadata
<a name="Campaign.upgradeGetBulk"></a>

### Campaign.upgradeGetBulk()
helper for [retrieve](#MobileMessage.retrieve) and [retrieveForCache](#MobileMessage.retrieveForCache)

**Kind**: static method of [<code>Campaign</code>](#Campaign)
<a name="Campaign.getBulkForLegacyApi"></a>

### Campaign.getBulkForLegacyApi(url, [pageSize], [iteratorField]) ⇒ <code>Promise.&lt;object&gt;</code>
Method that makes paginated GET API Requests using $pageSize and $page parameters
TODO: remove before release in favor of upgrading SFMC-SDK

**Kind**: static method of [<code>Campaign</code>](#Campaign)
**Returns**: <code>Promise.&lt;object&gt;</code> - API response combined items

| Param | Type | Description |
| --- | --- | --- |
| url | <code>string</code> | of the resource to retrieve |
| [pageSize] | <code>number</code> | of the response, defaults to 50 |
| [iteratorField] | <code>&#x27;items&#x27;</code> \| <code>&#x27;definitions&#x27;</code> \| <code>&#x27;entry&#x27;</code> | attribute of the response to iterate over |

<a name="Campaign.getAssetTags"></a>

### Campaign.getAssetTags(retrieveDir, campaignId, name) ⇒ <code>Promise.&lt;TYPE.MetadataTypeMapObj&gt;</code>
Expand Down Expand Up @@ -4069,8 +4046,6 @@ MobileMessage MetadataType
* [MobileMessage](#MobileMessage)[<code>MetadataType</code>](#MetadataType)
* [.retrieve(retrieveDir, [_], [__], [key])](#MobileMessage.retrieve) ⇒ <code>Promise.&lt;TYPE.MetadataTypeMapObj&gt;</code> \| <code>void</code>
* [.retrieveForCache(_, __, [key])](#MobileMessage.retrieveForCache) ⇒ <code>Promise.&lt;TYPE.MetadataTypeMapObj&gt;</code>
* [.upgradeGetBulk()](#MobileMessage.upgradeGetBulk)
* [.getBulkForLegacyApi(url, [pageSize], [iteratorField])](#MobileMessage.getBulkForLegacyApi) ⇒ <code>Promise.&lt;object&gt;</code>
* [.update(metadata)](#MobileMessage.update) ⇒ <code>Promise</code>
* [.create(metadata)](#MobileMessage.create) ⇒ <code>Promise</code>
* [._mergeCode(metadata, deployDir, [templateName])](#MobileMessage._mergeCode) ⇒ <code>Promise.&lt;string&gt;</code>
Expand Down Expand Up @@ -4113,27 +4088,6 @@ Retrieves event definition metadata for caching
| __ | <code>void</code> | parameter not used |
| [key] | <code>string</code> | customer key of single item to retrieve |

<a name="MobileMessage.upgradeGetBulk"></a>

### MobileMessage.upgradeGetBulk()
helper for [retrieve](#MobileMessage.retrieve) and [retrieveForCache](#MobileMessage.retrieveForCache)

**Kind**: static method of [<code>MobileMessage</code>](#MobileMessage)
<a name="MobileMessage.getBulkForLegacyApi"></a>

### MobileMessage.getBulkForLegacyApi(url, [pageSize], [iteratorField]) ⇒ <code>Promise.&lt;object&gt;</code>
Method that makes paginated GET API Requests using $pageSize and $page parameters
TODO: remove before release in favor of upgrading SFMC-SDK

**Kind**: static method of [<code>MobileMessage</code>](#MobileMessage)
**Returns**: <code>Promise.&lt;object&gt;</code> - API response combined items

| Param | Type | Description |
| --- | --- | --- |
| url | <code>string</code> | of the resource to retrieve |
| [pageSize] | <code>number</code> | of the response, defaults to 50 |
| [iteratorField] | <code>&#x27;items&#x27;</code> \| <code>&#x27;definitions&#x27;</code> \| <code>&#x27;entry&#x27;</code> | attribute of the response to iterate over |

<a name="MobileMessage.update"></a>

### MobileMessage.update(metadata) ⇒ <code>Promise</code>
Expand Down
85 changes: 0 additions & 85 deletions lib/metadataTypes/Campaign.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ class Campaign extends MetadataType {
* @returns {Promise.<TYPE.MetadataTypeMapObj>} Promise
*/
static async retrieve(retrieveDir, _, __, key) {
this.upgradeGetBulk();
const res = await super.retrieveREST(
retrieveDir,
'/legacy/v1/beta2/data/campaign/',
Expand All @@ -47,92 +46,8 @@ class Campaign extends MetadataType {
* @returns {Promise.<TYPE.MetadataTypeMapObj>} Promise of metadata
*/
static retrieveForCache() {
this.upgradeGetBulk();
return super.retrieveREST(null, '/legacy/v1/beta2/data/campaign/');
}
/**
* helper for {@link MobileMessage.retrieve} and {@link MobileMessage.retrieveForCache}
*/
static upgradeGetBulk() {
this.getBulkBackup ||= this.client.rest.getBulk;
this.client.rest.getBulk = this.getBulkForLegacyApi.bind(this.client.rest);
}

/**
* Method that makes paginated GET API Requests using $pageSize and $page parameters
* TODO: remove before release in favor of upgrading SFMC-SDK
*
* @param {string} url of the resource to retrieve
* @param {number} [pageSize] of the response, defaults to 50
* @param {'items'|'definitions'|'entry'} [iteratorField] attribute of the response to iterate over
* @returns {Promise.<object>} API response combined items
*/
static async getBulkForLegacyApi(url, pageSize, iteratorField) {
let page = 1;
const baseUrl = url.split('?')[0];
const isTransactionalMessageApi = this.isTransactionalMessageApi(baseUrl);
const isLegacyApi = baseUrl && baseUrl.startsWith('/legacy/v1/');
const queryParams = new URLSearchParams(url.split('?')[1]);
let collector;
let shouldPaginate = false;
let pageSizeName = '$pageSize';
let pageName = '$page';
let countName = 'count';
if (isLegacyApi) {
pageSizeName = '$top';
pageName = '$skip';
countName = 'totalResults';
page = 0; // index starts with 0 for mobileMessage
if (pageSize != 50) {
// values other than 50 are ignore by at least some of the sub-endpoints; while others have 50 as the maximum.
pageSize = 50;
}
}
queryParams.set(pageSizeName, Number(pageSize || 50).toString());
do {
queryParams.set(pageName, Number(page).toString());
const temp = await this._apiRequest(
{
method: 'GET',
url: baseUrl + '?' + decodeURIComponent(queryParams.toString()),
},
this.options.requestAttempts
);
if (!iteratorField) {
if (Array.isArray(temp.items)) {
iteratorField = 'items';
} else if (Array.isArray(temp.definitions)) {
iteratorField = 'definitions';
} else if (Array.isArray(temp.entry)) {
iteratorField = 'entry';
} else {
throw new TypeError('Could not find an array to iterate over');
}
}
if (collector && Array.isArray(temp[iteratorField])) {
collector[iteratorField].push(...temp[iteratorField]);
} else if (collector == null) {
collector = temp;
}
if (
Array.isArray(collector[iteratorField]) &&
collector[iteratorField].length >= temp[countName] &&
(!isTransactionalMessageApi ||
(isTransactionalMessageApi && temp[countName] != temp[pageSizeName]))
) {
// ! the transactional message API returns a value for "count" that represents the currently returned number of records, instead of the total amount. checking for count != pageSize is a workaround for this
// * opened Support Case #43988240 for this issue
shouldPaginate = false;
} else {
page++;
shouldPaginate = true;
if (this.options?.eventHandlers?.onLoop) {
this.options.eventHandlers.onLoop(null, collector?.[iteratorField]);
}
}
} while (shouldPaginate);
return collector;
}

/**
* Parses campaign asset response body and returns metadata entries mapped to their id
Expand Down
85 changes: 0 additions & 85 deletions lib/metadataTypes/MobileMessage.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ class MobileMessage extends MetadataType {
* @returns {Promise.<TYPE.MetadataTypeMapObj> | void} Promise of metadata
*/
static retrieve(retrieveDir, _, __, key) {
this.upgradeGetBulk();
if (key && key.startsWith('id:')) {
// if key starts with id: remove it to be compatible with other legacy API types (MetadataType.postCreateTasks_legacyApi)
key = key.slice(3);
Expand Down Expand Up @@ -60,90 +59,6 @@ class MobileMessage extends MetadataType {
return this.retrieve(null, null, null, key);
}

/**
* helper for {@link MobileMessage.retrieve} and {@link MobileMessage.retrieveForCache}
*/
static upgradeGetBulk() {
this.getBulkBackup ||= this.client.rest.getBulk;
this.client.rest.getBulk = this.getBulkForLegacyApi.bind(this.client.rest);
}

/**
* Method that makes paginated GET API Requests using $pageSize and $page parameters
* TODO: remove before release in favor of upgrading SFMC-SDK
*
* @param {string} url of the resource to retrieve
* @param {number} [pageSize] of the response, defaults to 50
* @param {'items'|'definitions'|'entry'} [iteratorField] attribute of the response to iterate over
* @returns {Promise.<object>} API response combined items
*/
static async getBulkForLegacyApi(url, pageSize, iteratorField) {
let page = 1;
const baseUrl = url.split('?')[0];
const isTransactionalMessageApi = this.isTransactionalMessageApi(baseUrl);
const isLegacyApi = baseUrl && baseUrl.startsWith('/legacy/v1/');
const queryParams = new URLSearchParams(url.split('?')[1]);
let collector;
let shouldPaginate = false;
let pageSizeName = '$pageSize';
let pageName = '$page';
let countName = 'count';
if (isLegacyApi) {
pageSizeName = '$top';
pageName = '$skip';
countName = 'totalResults';
page = 0; // index starts with 0 for mobileMessage
if (pageSize != 50) {
// values other than 50 are ignore by at least some of the sub-endpoints; while others have 50 as the maximum.
pageSize = 50;
}
}
queryParams.set(pageSizeName, Number(pageSize || 50).toString());
do {
queryParams.set(pageName, Number(page).toString());
const temp = await this._apiRequest(
{
method: 'GET',
url: baseUrl + '?' + decodeURIComponent(queryParams.toString()),
},
this.options.requestAttempts
);
if (!iteratorField) {
if (Array.isArray(temp.items)) {
iteratorField = 'items';
} else if (Array.isArray(temp.definitions)) {
iteratorField = 'definitions';
} else if (Array.isArray(temp.entry)) {
iteratorField = 'entry';
} else {
throw new TypeError('Could not find an array to iterate over');
}
}
if (collector && Array.isArray(temp[iteratorField])) {
collector[iteratorField].push(...temp[iteratorField]);
} else if (collector == null) {
collector = temp;
}
if (
Array.isArray(collector[iteratorField]) &&
collector[iteratorField].length >= temp[countName] &&
(!isTransactionalMessageApi ||
(isTransactionalMessageApi && temp[countName] != temp[pageSizeName]))
) {
// ! the transactional message API returns a value for "count" that represents the currently returned number of records, instead of the total amount. checking for count != pageSize is a workaround for this
// * opened Support Case #43988240 for this issue
shouldPaginate = false;
} else {
page++;
shouldPaginate = true;
if (this.options?.eventHandlers?.onLoop) {
this.options.eventHandlers.onLoop(null, collector?.[iteratorField]);
}
}
} while (shouldPaginate);
return collector;
}

/**
* Updates a single item
*
Expand Down

0 comments on commit 1e54711

Please sign in to comment.