From 5815d2f537139b6748c8dbd5e003a360de66ca7c Mon Sep 17 00:00:00 2001 From: Hazelnoot Date: Tue, 6 May 2025 22:53:43 -0400 Subject: [PATCH] fix user-agent / authorization passing in megalodon --- packages/megalodon/src/misskey/api_client.ts | 42 ++++++++++---------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/packages/megalodon/src/misskey/api_client.ts b/packages/megalodon/src/misskey/api_client.ts index 550897b669..659184d156 100644 --- a/packages/megalodon/src/misskey/api_client.ts +++ b/packages/megalodon/src/misskey/api_client.ts @@ -1,6 +1,5 @@ import axios, { AxiosResponse, AxiosRequestConfig } from 'axios' import dayjs from 'dayjs' -import FormData from 'form-data' import { DEFAULT_UA } from '../default' import Response from '../response' @@ -575,22 +574,26 @@ namespace MisskeyAPI { this.accessToken = accessToken this.baseUrl = baseUrl this.userAgent = userAgent - this.abortController = new AbortController() - axios.defaults.signal = this.abortController.signal + this.abortController = new AbortController(); } /** * GET request to misskey API. **/ public async get(path: string, params: any = {}, headers: { [key: string]: string } = {}): Promise> { + if (!headers['Authorization'] && this.accessToken) { + headers['Authorization'] = `Bearer ${this.accessToken}`; + } + if (!headers['User-Agent']) { + headers['User-Agent'] = this.userAgent; + } + let options: AxiosRequestConfig = { params: params, - headers: { - 'User-Agent': this.userAgent, - ...headers, - }, + headers, maxContentLength: Infinity, - maxBodyLength: Infinity + maxBodyLength: Infinity, + signal: this.abortController.signal, } return axios.get(this.baseUrl + path, options).then((resp: AxiosResponse) => { const res: Response = { @@ -610,22 +613,21 @@ namespace MisskeyAPI { * @param headers Request header object */ public async post(path: string, params: any = {}, headers: { [key: string]: string } = {}): Promise> { + if (!headers['Authorization'] && this.accessToken) { + headers['Authorization'] = `Bearer ${this.accessToken}`; + } + if (!headers['User-Agent']) { + headers['User-Agent'] = this.userAgent; + } + let options: AxiosRequestConfig = { headers: headers, maxContentLength: Infinity, - maxBodyLength: Infinity + maxBodyLength: Infinity, + signal: this.abortController.signal, } - let bodyParams = params - if (this.accessToken) { - if (params instanceof FormData) { - bodyParams.append('i', this.accessToken) - } else { - bodyParams = Object.assign(params, { - i: this.accessToken - }) - } - } - return axios.post(this.baseUrl + path, bodyParams, options).then((resp: AxiosResponse) => { + + return axios.post(this.baseUrl + path, params, options).then((resp: AxiosResponse) => { const res: Response = { data: resp.data, status: resp.status,