Skip to content

Commit

Permalink
fix: enforce encoding for all API requests (#626)
Browse files Browse the repository at this point in the history
* fix(indicator group set): add code field

* fix: enforce encoding for all API requests
  • Loading branch information
ismay authored Feb 13, 2019
1 parent d11aac5 commit 7edb5a3
Showing 1 changed file with 14 additions and 13 deletions.
27 changes: 14 additions & 13 deletions src/EditModel/event-program/epics.js
Original file line number Diff line number Diff line change
Expand Up @@ -151,20 +151,21 @@ function loadEventProgramMetadataByProgramId(programPayload) {
'user[id,name]',
].join(',');

// Tomcat 8.5 does not allow unencoded brackets in querystrings. By passing the query params
// as an object to d2 it will url encode all params and escape the brackets
const queryParams = {
fields: ':owner,displayName',
'programs:filter': `id:eq:${programId}`,
'programs:fields': `${programFields},programStages[:owner,user[id,name],displayName,programStageDataElements[:owner,renderType,dataElement[id,displayName,valueType,optionSet,domainType]],notificationTemplates[:owner,displayName],dataEntryForm[:owner],programStageSections[:owner,displayName,dataElements[id,displayName]]]`,
'dataElements:fields': 'id,displayName,valueType,optionSet',
'dataElements:filter': 'domainType:eq:TRACKER',
'trackedEntityAttributes:fields': 'id,displayName,valueType,optionSet,unique'
}

return api$
.flatMap((api) => {
const metadata$ = Observable.fromPromise(
api.get(
[
'metadata',
'?fields=:owner,displayName',
`&programs:filter=id:eq:${programId}`,
`&programs:fields=${programFields},programStages[:owner,user[id,name],displayName,programStageDataElements[:owner,renderType,dataElement[id,displayName,valueType,optionSet,domainType]],notificationTemplates[:owner,displayName],dataEntryForm[:owner],programStageSections[:owner,displayName,dataElements[id,displayName]]]`,
'&dataElements:fields=id,displayName,valueType,optionSet',
'&dataElements:filter=domainType:eq:TRACKER',
'&trackedEntityAttributes:fields=id,displayName,valueType,optionSet,unique',
].join(''),
),
api.get('metadata', queryParams),
);
const renderingOptions$ = Observable.fromPromise(
api.get('staticConfiguration/renderingOptions'),
Expand Down Expand Up @@ -304,7 +305,7 @@ async function loadAdditionalTrackerMetadata(loadedMetadata) {
* Checks the program for elements that have programStageDataElements with
* domainType=AGGREGATE, and gives the user a notification and the ability
* to remove these automatically.
* There should be a restriction server side, but this is helpful for
* There should be a restriction server side, but this is helpful for
* already affected instances.
* @param {*} state the state of the eventProgram store
*/
Expand Down Expand Up @@ -449,7 +450,7 @@ export const programModelSave = action$ =>
.switchMap(({ eventProgramStore, missingFields }) => (
missingFields.length
? createSaveEventProgramError$()

: isStoreStateDirty(eventProgramStore)
? saveEventProgram

Expand Down

0 comments on commit 7edb5a3

Please sign in to comment.