UNPKG

@microsoft/microsoft-graph-client

Version:
99 lines 3.84 kB
/** * ------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License. * See License in the project root for license information. * ------------------------------------------------------------------------------------------- */ import { __awaiter } from "tslib"; /** * @module GraphErrorHandler */ import { GraphError } from "./GraphError"; /** * @class * Class for GraphErrorHandler */ export class GraphErrorHandler { /** * @private * @static * Populates the GraphError instance with Error instance values * @param {Error} error - The error returned by graph service or some native error * @param {number} [statusCode] - The status code of the response * @returns The GraphError instance */ static constructError(error, statusCode) { const gError = new GraphError(statusCode, "", error); if (error.name !== undefined) { gError.code = error.name; } gError.body = error.toString(); gError.date = new Date(); return gError; } /** * @private * @static * @async * Populates the GraphError instance from the Error returned by graph service * @param {GraphAPIErrorResponse} graphError - The error possibly returned by graph service or some native error * @param {number} statusCode - The status code of the response * @returns A promise that resolves to GraphError instance * * Example error for https://graph.microsoft.com/v1.0/me/events?$top=3&$search=foo * { * "error": { * "code": "SearchEvents", * "message": "The parameter $search is not currently supported on the Events resource.", * "innerError": { * "request-id": "b31c83fd-944c-4663-aa50-5d9ceb367e19", * "date": "2016-11-17T18:37:45" * } * } * } */ static constructErrorFromResponse(graphError, statusCode) { const error = graphError.error; const gError = new GraphError(statusCode, error.message); gError.code = error.code; if (error.innerError !== undefined) { gError.requestId = error.innerError["request-id"]; gError.date = new Date(error.innerError.date); } gError.body = JSON.stringify(error); return gError; } /** * @public * @static * @async * To get the GraphError object * Reference - https://docs.microsoft.com/en-us/graph/errors * @param {any} [error = null] - The error returned by graph service or some native error * @param {number} [statusCode = -1] - The status code of the response * @param {GraphRequestCallback} [callback] - The graph request callback function * @returns A promise that resolves to GraphError instance */ static getError(error = null, statusCode = -1, callback) { return __awaiter(this, void 0, void 0, function* () { let gError; if (error && error.error) { gError = GraphErrorHandler.constructErrorFromResponse(error, statusCode); } else if (error instanceof Error) { gError = GraphErrorHandler.constructError(error, statusCode); } else { gError = new GraphError(statusCode); gError.body = error; // if a custom error is passed which is not instance of Error object or a graph API response } if (typeof callback === "function") { callback(gError, null); } else { return gError; } }); } } //# sourceMappingURL=GraphErrorHandler.js.map