From 839a1a2e054948904423da0ef423bfd1608ad2ac Mon Sep 17 00:00:00 2001 From: dudu Date: Wed, 5 Jul 2023 17:12:49 +0800 Subject: [PATCH 1/6] fix: fix unauthorized response --- src/services/post.service.ts | 9 +++++++-- src/utils/http-client.ts | 11 +---------- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/src/services/post.service.ts b/src/services/post.service.ts index c21c43f7..c4cc9963 100644 --- a/src/services/post.service.ts +++ b/src/services/post.service.ts @@ -10,7 +10,7 @@ import { IErrorResponse } from '../models/error-response'; import { AlertService } from './alert.service'; import { PostFileMapManager } from './post-file-map'; import { ZzkSearchResult } from '../models/zzk-search-result'; -import { got, gotWithBuffer } from '@/utils/http-client'; +import httpClient, { Options, got } from '@/utils/http-client'; import iconv from 'iconv-lite'; const defaultPageSize = 30; @@ -69,7 +69,12 @@ export class PostService { } async fetchPostEditDto(postId: number, muteErrorNotification = false): Promise { - const response = await gotWithBuffer(`${this._baseUrl}/api/posts/${postId}`); + const bufferHttpClient = httpClient.extend({ + throwHttpErrors: false, + responseType: 'buffer', + }); + + const response = await bufferHttpClient(`${this._baseUrl}/api/posts/${postId}`); try { throwIfNotOkGotResponse(response); diff --git a/src/utils/http-client.ts b/src/utils/http-client.ts index 810e3755..de2bfbec 100644 --- a/src/utils/http-client.ts +++ b/src/utils/http-client.ts @@ -20,15 +20,6 @@ const httpClient = got.extend({ https: { rejectUnauthorized: false }, }); -const gotWithBuffer = got.extend({ - hooks: { - beforeRequest: [bearerTokenHook], - }, - throwHttpErrors: false, - https: { rejectUnauthorized: false }, - responseType: 'buffer', -}); - -export { got, gotWithBuffer }; +export { got }; export * from 'got'; export default httpClient; From 46e850015ce52148fd8aa37881b8cf282f03275e Mon Sep 17 00:00:00 2001 From: dudu Date: Wed, 5 Jul 2023 18:39:46 +0800 Subject: [PATCH 2/6] debug: use default httpClient --- src/services/post.service.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/services/post.service.ts b/src/services/post.service.ts index c4cc9963..f92d0e47 100644 --- a/src/services/post.service.ts +++ b/src/services/post.service.ts @@ -69,12 +69,12 @@ export class PostService { } async fetchPostEditDto(postId: number, muteErrorNotification = false): Promise { - const bufferHttpClient = httpClient.extend({ - throwHttpErrors: false, - responseType: 'buffer', - }); + // const bufferHttpClient = httpClient.extend({ + // throwHttpErrors: false, + // responseType: 'buffer', + // }); - const response = await bufferHttpClient(`${this._baseUrl}/api/posts/${postId}`); + const response = await httpClient(`${this._baseUrl}/api/posts/${postId}`); try { throwIfNotOkGotResponse(response); From fee8a9ed62f9200cb1c1f50b0ab3f68aba5a983b Mon Sep 17 00:00:00 2001 From: dudu Date: Wed, 5 Jul 2023 19:02:56 +0800 Subject: [PATCH 3/6] debug: comment fetchPostEditDto body --- src/services/post.service.ts | 48 +++++++++++++++++++----------------- 1 file changed, 25 insertions(+), 23 deletions(-) diff --git a/src/services/post.service.ts b/src/services/post.service.ts index f92d0e47..65692714 100644 --- a/src/services/post.service.ts +++ b/src/services/post.service.ts @@ -74,29 +74,31 @@ export class PostService { // responseType: 'buffer', // }); - const response = await httpClient(`${this._baseUrl}/api/posts/${postId}`); - - try { - throwIfNotOkGotResponse(response); - } catch (ex) { - const { statusCode, errors } = ex as IErrorResponse; - if (!muteErrorNotification) { - if (statusCode === 404) { - AlertService.error('博文不存在'); - const postFilePath = PostFileMapManager.getFilePath(postId); - if (postFilePath) await PostFileMapManager.updateOrCreate(postId, ''); - } else { - AlertService.error(errors.join('\n')); - } - } - return undefined; - } - - const decodedBody = iconv.decode(response.rawBody, 'utf-8'); - - const { blogPost, myConfig } = JSON.parse(decodedBody) as { blogPost?: Post; myConfig?: unknown }; - - return blogPost ? new PostEditDto(Object.assign(new Post(), blogPost), myConfig) : undefined; + // const response = await got(`${this._baseUrl}/api/posts/${postId}`); + + // try { + // throwIfNotOkGotResponse(response); + // } catch (ex) { + // const { statusCode, errors } = ex as IErrorResponse; + // if (!muteErrorNotification) { + // if (statusCode === 404) { + // AlertService.error('博文不存在'); + // const postFilePath = PostFileMapManager.getFilePath(postId); + // if (postFilePath) await PostFileMapManager.updateOrCreate(postId, ''); + // } else { + // AlertService.error(errors.join('\n')); + // } + // } + // return undefined; + // } + + // const decodedBody = iconv.decode(response.rawBody, 'utf-8'); + + // const { blogPost, myConfig } = JSON.parse(decodedBody) as { blogPost?: Post; myConfig?: unknown }; + + // return blogPost ? new PostEditDto(Object.assign(new Post(), blogPost), myConfig) : undefined; + await new Promise(() => undefined); + return undefined; } async deletePost(postId: number) { From ba2f6381b0de062e1d3c28544aefe322681c2142 Mon Sep 17 00:00:00 2001 From: dudu Date: Wed, 5 Jul 2023 20:05:34 +0800 Subject: [PATCH 4/6] debug: use default httpClient --- src/services/post.service.ts | 52 +++++++++++++++++------------------- 1 file changed, 25 insertions(+), 27 deletions(-) diff --git a/src/services/post.service.ts b/src/services/post.service.ts index 65692714..911a1465 100644 --- a/src/services/post.service.ts +++ b/src/services/post.service.ts @@ -10,8 +10,8 @@ import { IErrorResponse } from '../models/error-response'; import { AlertService } from './alert.service'; import { PostFileMapManager } from './post-file-map'; import { ZzkSearchResult } from '../models/zzk-search-result'; -import httpClient, { Options, got } from '@/utils/http-client'; -import iconv from 'iconv-lite'; +import got from '@/utils/http-client'; +import httpClient from '@/utils/http-client'; const defaultPageSize = 30; let newPostTemplate: PostEditDto | undefined; @@ -74,31 +74,29 @@ export class PostService { // responseType: 'buffer', // }); - // const response = await got(`${this._baseUrl}/api/posts/${postId}`); - - // try { - // throwIfNotOkGotResponse(response); - // } catch (ex) { - // const { statusCode, errors } = ex as IErrorResponse; - // if (!muteErrorNotification) { - // if (statusCode === 404) { - // AlertService.error('博文不存在'); - // const postFilePath = PostFileMapManager.getFilePath(postId); - // if (postFilePath) await PostFileMapManager.updateOrCreate(postId, ''); - // } else { - // AlertService.error(errors.join('\n')); - // } - // } - // return undefined; - // } - - // const decodedBody = iconv.decode(response.rawBody, 'utf-8'); - - // const { blogPost, myConfig } = JSON.parse(decodedBody) as { blogPost?: Post; myConfig?: unknown }; - - // return blogPost ? new PostEditDto(Object.assign(new Post(), blogPost), myConfig) : undefined; - await new Promise(() => undefined); - return undefined; + const response = await httpClient(`${this._baseUrl}/api/posts/${postId}`); + + try { + throwIfNotOkGotResponse(response); + } catch (ex) { + const { statusCode, errors } = ex as IErrorResponse; + if (!muteErrorNotification) { + if (statusCode === 404) { + AlertService.error('博文不存在'); + const postFilePath = PostFileMapManager.getFilePath(postId); + if (postFilePath) await PostFileMapManager.updateOrCreate(postId, ''); + } else { + AlertService.error(errors.join('\n')); + } + } + return undefined; + } + + const decodedBody = 'test'; // iconv.decode(response.rawBody, 'utf-8'); + + const { blogPost, myConfig } = JSON.parse(decodedBody) as { blogPost?: Post; myConfig?: unknown }; + + return blogPost ? new PostEditDto(Object.assign(new Post(), blogPost), myConfig) : undefined; } async deletePost(postId: number) { From 53a1c10c0bc057347262d148c48c7fa6a17bcf72 Mon Sep 17 00:00:00 2001 From: dudu Date: Wed, 5 Jul 2023 20:34:08 +0800 Subject: [PATCH 5/6] debug: savePostFileToCnblogs --- src/services/post.service.ts | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/services/post.service.ts b/src/services/post.service.ts index 911a1465..b3b57bd2 100644 --- a/src/services/post.service.ts +++ b/src/services/post.service.ts @@ -12,6 +12,7 @@ import { PostFileMapManager } from './post-file-map'; import { ZzkSearchResult } from '../models/zzk-search-result'; import got from '@/utils/http-client'; import httpClient from '@/utils/http-client'; +import iconv from 'iconv-lite'; const defaultPageSize = 30; let newPostTemplate: PostEditDto | undefined; @@ -69,12 +70,12 @@ export class PostService { } async fetchPostEditDto(postId: number, muteErrorNotification = false): Promise { - // const bufferHttpClient = httpClient.extend({ - // throwHttpErrors: false, - // responseType: 'buffer', - // }); + const bufferHttpClient = httpClient.extend({ + throwHttpErrors: false, + responseType: 'buffer', + }); - const response = await httpClient(`${this._baseUrl}/api/posts/${postId}`); + const response = await bufferHttpClient(`${this._baseUrl}/api/posts/${postId}`); try { throwIfNotOkGotResponse(response); @@ -92,7 +93,7 @@ export class PostService { return undefined; } - const decodedBody = 'test'; // iconv.decode(response.rawBody, 'utf-8'); + const decodedBody = iconv.decode(response.rawBody, 'utf-8'); const { blogPost, myConfig } = JSON.parse(decodedBody) as { blogPost?: Post; myConfig?: unknown }; From e7ebe0b107b1e31423b129436c024e5e7c45a5b3 Mon Sep 17 00:00:00 2001 From: dudu Date: Wed, 5 Jul 2023 21:08:54 +0800 Subject: [PATCH 6/6] refactor: use httpClient.get --- src/services/post.service.ts | 4 +--- src/utils/throw-if-not-ok-response.ts | 5 +++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/services/post.service.ts b/src/services/post.service.ts index b3b57bd2..f9618568 100644 --- a/src/services/post.service.ts +++ b/src/services/post.service.ts @@ -70,13 +70,11 @@ export class PostService { } async fetchPostEditDto(postId: number, muteErrorNotification = false): Promise { - const bufferHttpClient = httpClient.extend({ + const response = await httpClient.get(`${this._baseUrl}/api/posts/${postId}`, { throwHttpErrors: false, responseType: 'buffer', }); - const response = await bufferHttpClient(`${this._baseUrl}/api/posts/${postId}`); - try { throwIfNotOkGotResponse(response); } catch (ex) { diff --git a/src/utils/throw-if-not-ok-response.ts b/src/utils/throw-if-not-ok-response.ts index a7fa6ed8..b6a75529 100644 --- a/src/utils/throw-if-not-ok-response.ts +++ b/src/utils/throw-if-not-ok-response.ts @@ -1,6 +1,7 @@ import { GotFetchResponse } from 'got-fetch/out/lib/response'; import { Response as GotResponse } from 'got'; import { IErrorResponse, isErrorResponse } from '../models/error-response'; +import iconv from 'iconv-lite'; const throwIfNotOkResponse = async (response: GotFetchResponse) => { if (!response.ok) { @@ -21,9 +22,9 @@ const throwIfNotOkResponse = async (response: GotFetchResponse) => { } }; -const throwIfNotOkGotResponse = (response: GotResponse) => { +const throwIfNotOkGotResponse = (response: GotResponse) => { if (!response.ok) { - const responseText = response.body; + const responseText = iconv.decode(response.rawBody, 'utf-8'); let responseJson: unknown; try { responseJson = JSON.parse(responseText);