Skip to content
This repository has been archived by the owner on Feb 6, 2024. It is now read-only.

Commit

Permalink
fix: adapt cleanParameters for registerDestination parameters
Browse files Browse the repository at this point in the history
  • Loading branch information
justinemmanuelmercado committed Jun 15, 2020
1 parent 97989cd commit 3368363
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 5 deletions.
22 changes: 19 additions & 3 deletions src/http.ts
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,9 @@ type ParameterTypes =
| (number | string)[]
| object[]
| boolean
| object
| { [key: string]: ParameterTypes }
| undefined

type Parameters = Record<string, ParameterTypes>
type CleanParameters = Record<string, string>

Expand Down Expand Up @@ -191,7 +192,15 @@ export const cleanParameters = (parameters: Parameters): CleanParameters =>
Object.entries(parameters)
.filter(([, parameter]) => parameter !== undefined)
.reduce((result, [key, parameter]) => {
if (Array.isArray(parameter)) {
if (typeof parameter === 'string' || !Number.isNaN(Number(parameter))) {
/**
* If parameter is type string or number, assign it to result
*/
Object.assign(result, { [key]: String(parameter) })
} else if (Array.isArray(parameter)) {
/**
* If parameter is type array reduce it to dotnotation
*/
parameter.forEach((parameterChild: string | number | object, index: number) => {
if (typeof parameterChild === 'string' || !Number.isNaN(Number(parameterChild))) {
Object.assign(result, { [`${key}.${index + 1}`]: String(parameterChild) })
Expand All @@ -200,7 +209,14 @@ export const cleanParameters = (parameters: Parameters): CleanParameters =>
}
})
} else {
Object.assign(result, { [key]: String(parameter) })
/**
* If parameter is type object parameterize it
*/
Object.entries(
cleanParameters(parameter as Parameters),
).forEach(([innerKey, innerValue]: [string, string]) =>
Object.assign(result, { [`${key}.${innerKey}`]: innerValue }),
)
}

return result
Expand Down
5 changes: 3 additions & 2 deletions test/unit/http.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,7 @@ describe('httpClient', () => {
expect.hasAssertions()

const parameters = {
MarketplaceId: '',
MarketplaceId: 'ATVPDKIKX0DER',
Destination: {
DeliveryChannel: 'SQS',
'AttributeList.member': [
Expand All @@ -192,7 +192,8 @@ describe('httpClient', () => {
}

const results = {
MarketplaceId: '',
MarketplaceId: 'ATVPDKIKX0DER',
'Destination.DeliveryChannel': 'SQS',
'Destination.AttributeList.member.1.Key': 'sqsQueueUrl',
'Destination.AttributeList.member.1.Value':
'https%3A%2F%2Fsqs.us-east-1.amazonaws.com%2F51471EXAMPLE%2Fmws_notifications',
Expand Down

0 comments on commit 3368363

Please sign in to comment.