1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-19 01:33:33 +00:00
Files
browser/libs/common/src/models/response/base.response.ts

44 lines
1.2 KiB
TypeScript

export abstract class BaseResponse {
private response: any;
constructor(response: any) {
this.response = response;
}
protected getResponseProperty(
propertyName: string,
response: any = null,
exactName = false
): any {
if (propertyName == null || propertyName === "") {
throw new Error("propertyName must not be null/empty.");
}
if (response == null && this.response != null) {
response = this.response;
}
if (response == null) {
return null;
}
if (!exactName && response[propertyName] === undefined) {
let otherCasePropertyName: string = null;
if (propertyName.charAt(0) === propertyName.charAt(0).toUpperCase()) {
otherCasePropertyName = propertyName.charAt(0).toLowerCase();
} else {
otherCasePropertyName = propertyName.charAt(0).toUpperCase();
}
if (propertyName.length > 1) {
otherCasePropertyName += propertyName.slice(1);
}
propertyName = otherCasePropertyName;
if (response[propertyName] === undefined) {
propertyName = propertyName.toLowerCase();
}
if (response[propertyName] === undefined) {
propertyName = propertyName.toUpperCase();
}
}
return response[propertyName];
}
}