/*- * ============LICENSE_START======================================================= * SDC * ================================================================================ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ============LICENSE_END========================================================= */ 'use strict'; import {IServerMessageModalModel} from "../view-models/modals/message-modal/message-server-modal/server-message-modal-view-model"; import {SEVERITY} from "../utils/constants"; import 'app/utils/prototypes.ts'; export class HttpErrorInterceptor { public static $inject = ['$injector', '$q']; public static Factory($injector:ng.auto.IInjectorService, $q:angular.IQService) { return new HttpErrorInterceptor($injector, $q); } constructor(private $injector:ng.auto.IInjectorService, private $q:angular.IQService) { } public formatMessageArrays = (message:string, variables:Array)=> { return message.replace(/\[%(\d+)\]/g, function (_, m) { let tmp = []; let list = variables[--m].split(";"); list.forEach(function (item) { tmp.push("
  • " + item + "
  • "); }); return ""; }); }; public responseError = (rejection:any)=> { let text:string; let variables; let messageId:string = ""; let isKnownException = false; if (rejection.data && rejection.data.serviceException) { text = rejection.data.serviceException.text; variables = rejection.data.serviceException.variables; messageId = rejection.data.serviceException.messageId; isKnownException = true; } else if (rejection.data && rejection.data.requestError && rejection.data.requestError.serviceException) { text = rejection.data.requestError.serviceException.text; variables = rejection.data.requestError.serviceException.variables; messageId = rejection.data.requestError.serviceException.messageId; isKnownException = true; } else if (rejection.data && rejection.data.requestError && rejection.data.requestError.policyException) { text = rejection.data.requestError.policyException.text; variables = rejection.data.requestError.policyException.variables; messageId = rejection.data.requestError.policyException.messageId; isKnownException = true; } else if (rejection.data) { text = 'Wrong error format from server'; console.error(text); isKnownException = false; } let data:IServerMessageModalModel; if (isKnownException) { // Remove the "Error: " text at the begining if (text.trim().indexOf("Error:") === 0) { text = text.replace("Error:", "").trim(); } //mshitrit DE199895 bug fix let count:number = 0; variables.forEach(function (item) { variables[count] = item ? item.replace('<', '<').replace('>', '>') : ''; count++; }); // Format the message in case has array to