From 2e5e3bd19ea4fabce6e1372af24254eabe2507ec Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Fri, 24 Feb 2023 13:09:00 +0800 Subject: [PATCH] Add headers --- .../api/src/routers/integration_router.ts | 11 +++++- .../api/src/services/integrations/pocket.ts | 38 +++++++++++++------ 2 files changed, 36 insertions(+), 13 deletions(-) diff --git a/packages/api/src/routers/integration_router.ts b/packages/api/src/routers/integration_router.ts index 7e6d4079b..7614aeacd 100644 --- a/packages/api/src/routers/integration_router.ts +++ b/packages/api/src/routers/integration_router.ts @@ -12,9 +12,10 @@ export function integrationRouter() { const router = express.Router() // request token from pocket router.post( - '/pocket/request-token', + '/pocket/auth', cors(corsConfig), async (req: express.Request, res: express.Response) => { + logger.info('pocket/request-token') // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access const token = (req.cookies.auth as string) || req.headers.authorization const claims = await getClaimsByToken(token) @@ -23,7 +24,7 @@ export function integrationRouter() { } const consumerKey = env.pocket.consumerKey - const redirectUri = `${env.client.url}/settings/integrations:pocketAuthorizationFinished` + const redirectUri = `${env.client.url}/settings/integrations?state=pocketAuthorizationFinished` try { // make a POST request to Pocket to get a request token const response = await axios.post<{ code: string }>( @@ -31,6 +32,12 @@ export function integrationRouter() { { consumer_key: consumerKey, redirect_uri: redirectUri, + }, + { + headers: { + 'Content-Type': 'application/json', + 'X-Accept': 'application/json', + }, } ) const { code } = response.data diff --git a/packages/api/src/services/integrations/pocket.ts b/packages/api/src/services/integrations/pocket.ts index e7cb53286..5ad62eb65 100644 --- a/packages/api/src/services/integrations/pocket.ts +++ b/packages/api/src/services/integrations/pocket.ts @@ -20,14 +20,24 @@ interface PocketItem { export class PocketIntegration extends IntegrationService { name = 'POCKET' POCKET_API_URL = 'https://getpocket.com/v3' + headers = { + 'Content-Type': 'application/json', + 'X-Accept': 'application/json', + } accessToken = async (token: string): Promise => { const url = `${this.POCKET_API_URL}/oauth/authorize` try { - const response = await axios.post<{ access_token: string }>(url, { - consumer_key: env.pocket.consumerKey, - code: token, - }) + const response = await axios.post<{ access_token: string }>( + url, + { + consumer_key: env.pocket.consumerKey, + code: token, + }, + { + headers: this.headers, + } + ) return response.data.access_token } catch (error) { console.log('error validating pocket token', error) @@ -41,13 +51,19 @@ export class PocketIntegration extends IntegrationService { ): Promise => { const url = `${this.POCKET_API_URL}/get` try { - const response = await axios.post(url, { - consumer_key: env.pocket.consumerKey, - access_token: accessToken, - state: 'all', - detailType: 'simple', - since, - }) + const response = await axios.post( + url, + { + consumer_key: env.pocket.consumerKey, + access_token: accessToken, + state: 'all', + detailType: 'simple', + since, + }, + { + headers: this.headers, + } + ) return response.data } catch (error) { console.log('error retrieving pocket data', error)