Skip to content

Commit e3aacda

Browse files
modifications to url and request composers
1 parent 2b3590d commit e3aacda

File tree

2 files changed

+30
-18
lines changed

2 files changed

+30
-18
lines changed

src/client/request/composers/request.ts

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,23 @@ import type { InternalConfig } from "../../../utils/Config";
1010
* @returns Modified internal request object
1111
*/
1212
export const composeRequest = (request: InternalRequest, config: Partial<InternalConfig>): InternalRequest => {
13-
request.path = request.path || "";
13+
request.path = ""; //path must always be reset
1414
request.functionName = request.functionName || "";
1515
if (!request.url) {
1616
if (!request._isUnboundRequest && !request.contentId && !request.collection) {
1717
ErrorHelper.parameterCheck(request.collection, `DynamicsWebApi.${request.functionName}`, "request.collection");
1818
}
19+
20+
if (request.contentId) {
21+
ErrorHelper.stringParameterCheck(request.contentId, `DynamicsWebApi.${request.functionName}`, "request.contentId");
22+
if (request.contentId.startsWith("$")) {
23+
request.path = request.contentId;
24+
}
25+
}
26+
1927
if (request.collection != null) {
2028
ErrorHelper.stringParameterCheck(request.collection, `DynamicsWebApi.${request.functionName}`, "request.collection");
21-
request.path = request.collection;
29+
request.path += request.path ? `/${request.collection}` : request.collection;
2230

2331
//add alternate key feature
2432
if (request.key) {
@@ -27,13 +35,6 @@ export const composeRequest = (request: InternalRequest, config: Partial<Interna
2735
}
2836
}
2937

30-
if (request.contentId) {
31-
ErrorHelper.stringParameterCheck(request.contentId, `DynamicsWebApi.${request.functionName}`, "request.contentId");
32-
if (request.contentId.startsWith("$")) {
33-
request.path = request.path ? `${request.contentId}/${request.path}` : request.contentId;
34-
}
35-
}
36-
3738
if (request.addPath) {
3839
if (request.path) {
3940
request.path += "/";
@@ -42,12 +43,6 @@ export const composeRequest = (request: InternalRequest, config: Partial<Interna
4243
}
4344

4445
request.path = composeUrl(request, config, request.path);
45-
46-
if (request.fetchXml) {
47-
ErrorHelper.stringParameterCheck(request.fetchXml, `DynamicsWebApi.${request.functionName}`, "request.fetchXml");
48-
let join = request.path.indexOf("?") === -1 ? "?" : "&";
49-
request.path += `${join}fetchXml=${encodeURIComponent(request.fetchXml)}`;
50-
}
5146
} else {
5247
ErrorHelper.stringParameterCheck(request.url, `DynamicsWebApi.${request.functionName}`, "request.url");
5348
request.path = request.url.replace(config.dataApi!.url, "");

src/client/request/composers/url.ts

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,11 @@ export const composeUrl = (request: InternalRequest | null, config: Config | nul
132132
ErrorHelper.boolParameterCheck(request.isBatch, `DynamicsWebApi.${request.functionName}`, "request.isBatch");
133133
}
134134

135+
if (request.fetchXml) {
136+
ErrorHelper.stringParameterCheck(request.fetchXml, `DynamicsWebApi.${request.functionName}`, "request.fetchXml");
137+
queryArray.push("fetchXml=" + encodeURIComponent(request.fetchXml));
138+
}
139+
135140
if (!isNull(request.inChangeSet)) {
136141
ErrorHelper.boolParameterCheck(request.inChangeSet, `DynamicsWebApi.${request.functionName}`, "request.inChangeSet");
137142
}
@@ -157,7 +162,7 @@ export const composeUrl = (request: InternalRequest | null, config: Config | nul
157162
};
158163
let expandConverted = composeUrl(expandRequest, config, "", ";");
159164
if (expandConverted) {
160-
expandConverted = `(${expandConverted.slice(1)})`;
165+
expandConverted = `(${expandConverted})`;
161166
}
162167
expandQueryArray.push(property + expandConverted);
163168
}
@@ -168,5 +173,17 @@ export const composeUrl = (request: InternalRequest | null, config: Config | nul
168173
}
169174
}
170175

171-
return !queryArray.length ? url : url + "?" + queryArray.join(joinSymbol);
172-
};
176+
// nothing to add to the URL
177+
if (!queryArray.length) {
178+
return url;
179+
}
180+
181+
// in any other cases the joinSymbol is ";" (during expand process)
182+
if (joinSymbol === "&") {
183+
url += "?";
184+
}
185+
186+
return url + queryArray.join(joinSymbol);
187+
188+
// return !queryArray.length ? url : url + "?" + queryArray.join(joinSymbol);
189+
};

0 commit comments

Comments
 (0)