From 151105f387c65f2285f61f8e492ad06734ec9f64 Mon Sep 17 00:00:00 2001 From: crupest Date: Fri, 7 Aug 2020 23:51:29 +0800 Subject: ... --- Timeline/ClientApp/src/app/http/common.ts | 20 ++++++++++++++++++++ Timeline/ClientApp/src/app/http/timeline.ts | 3 +++ 2 files changed, 23 insertions(+) (limited to 'Timeline/ClientApp/src/app/http') diff --git a/Timeline/ClientApp/src/app/http/common.ts b/Timeline/ClientApp/src/app/http/common.ts index 3c2f2ba6..8b082d1f 100644 --- a/Timeline/ClientApp/src/app/http/common.ts +++ b/Timeline/ClientApp/src/app/http/common.ts @@ -45,6 +45,12 @@ export class HttpNetworkError extends Error { } } +export class HttpForbiddenError extends Error { + constructor(public innerError?: AxiosError) { + super(); + } +} + export class NotModified {} export interface BlobWithEtag { @@ -119,6 +125,20 @@ export function convertToNetworkError( } } +export function convertToForbiddenError( + error: AxiosError +): never { + if ( + error.isAxiosError && + error.response != null && + (error.response.status == 403 || error.response.status == 403) + ) { + throw new HttpForbiddenError(error); + } else { + throw error; + } +} + export function extractDataOrConvert304ToNotModified( res: AxiosResponse ): T | NotModified { diff --git a/Timeline/ClientApp/src/app/http/timeline.ts b/Timeline/ClientApp/src/app/http/timeline.ts index bfe0d1ad..0b219787 100644 --- a/Timeline/ClientApp/src/app/http/timeline.ts +++ b/Timeline/ClientApp/src/app/http/timeline.ts @@ -11,6 +11,7 @@ import { BlobWithEtag, NotModified, convertToBlobWithEtagOrNotModified, + convertToForbiddenError, } from './common'; import { HttpUser } from './user'; @@ -441,6 +442,8 @@ export class HttpTimelineClient implements IHttpTimelineClient { return axios .get(url) .then(extractResponseData) + .catch(convertToIfStatusCodeIs(404, HttpTimelineNotExistError)) + .catch(convertToForbiddenError) .catch(convertToNetworkError) .then((rawPosts) => rawPosts.map((raw) => processRawTimelinePostInfo(raw)) -- cgit v1.2.3