Skip to content

Commit

Permalink
fix that non-successful message responses were not displayed in ACE e…
Browse files Browse the repository at this point in the history
…ditor

* only successful responses were displayed
* however, messages might e.g. be answered with a 400 (bad request) and useful information as response
  • Loading branch information
thjaeckle committed Nov 21, 2023
1 parent 2d6d55b commit d66fa72
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 13 deletions.
22 changes: 18 additions & 4 deletions ui/modules/api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -315,10 +315,16 @@ export function setAuthHeader(forDevOps) {
* @param {Object} additionalHeaders object with additional header fields
* @param {boolean} returnHeaders request full response instead of json content
* @param {boolean} devOps default: false. Set true to avoid /api/2 path
* @param {boolean} returnErrorJson default: false. Set true to return the response of a failed HTTP call as JSON
* @return {Object} result as json object
*/
export async function callDittoREST(method, path, body = null,
additionalHeaders = null, returnHeaders = false, devOps = false): Promise<any> {
export async function callDittoREST(method,
path,
body = null,
additionalHeaders = null,
returnHeaders = false,
devOps = false,
returnErrorJson = false): Promise<any> {
let response;
const contentType = method === 'PATCH' ? 'application/merge-patch+json' : 'application/json';
try {
Expand All @@ -336,14 +342,22 @@ export async function callDittoREST(method, path, body = null,
throw err;
}
if (!response.ok) {
response.json()
if (returnErrorJson) {
if (returnHeaders) {
return response;
} else {
return response.json();
}
} else {
response.json()
.then((dittoErr) => {
Utils.showError(dittoErr.description + `\n(${dittoErr.error})`, dittoErr.message, dittoErr.status);
})
.catch((err) => {
Utils.showError('No error details from Ditto', response.statusText, response.status);
});
throw new Error('An error occurred: ' + response.status);
throw new Error('An error occurred: ' + response.status);
}
}
if (response.status !== 204) {
if (returnHeaders) {
Expand Down
14 changes: 9 additions & 5 deletions ui/modules/things/featureMessages.ts
Original file line number Diff line number Diff line change
Expand Up @@ -124,10 +124,14 @@ function messageFeature() {
}
aceResponse.setValue('');
API.callDittoREST('POST', '/things/' + Things.theThing.thingId +
'/features/' + theFeatureId +
'/inbox/messages/' + dom.inputMessageSubject.value +
'?timeout=' + dom.inputMessageTimeout.value,
payload,
'/features/' + theFeatureId +
'/inbox/messages/' + dom.inputMessageSubject.value +
'?timeout=' + dom.inputMessageTimeout.value,
payload,
null,
false,
false,
true
).then((data) => {
dom.buttonMessageSend.classList.remove('busy');
dom.buttonMessageSend.disabled = false;
Expand All @@ -137,7 +141,7 @@ function messageFeature() {
}).catch((err) => {
dom.buttonMessageSend.classList.remove('busy');
dom.buttonMessageSend.disabled = false;
aceResponse.setValue('');
aceResponse.setValue(`Error: ${err}`);
});
}

Expand Down
12 changes: 8 additions & 4 deletions ui/modules/things/thingMessages.ts
Original file line number Diff line number Diff line change
Expand Up @@ -117,9 +117,13 @@ function messageThing() {
}
aceResponse.setValue('');
API.callDittoREST('POST', '/things/' + Things.theThing.thingId +
'/inbox/messages/' + dom.inputThingMessageSubject.value +
'?timeout=' + dom.inputThingMessageTimeout.value,
payload,
'/inbox/messages/' + dom.inputThingMessageSubject.value +
'?timeout=' + dom.inputThingMessageTimeout.value,
payload,
null,
false,
false,
true
).then((data) => {
dom.buttonThingMessageSend.classList.remove('busy');
dom.buttonThingMessageSend.disabled = false;
Expand All @@ -129,7 +133,7 @@ function messageThing() {
}).catch((err) => {
dom.buttonThingMessageSend.classList.remove('busy');
dom.buttonThingMessageSend.disabled = false;
aceResponse.setValue('');
aceResponse.setValue(`Error: ${err}`);
});
}

Expand Down

0 comments on commit d66fa72

Please sign in to comment.