feat(backend): Bearcaps URLに対応 (MisskeyIO#330)
This commit is contained in:
parent
a2cc3b6a12
commit
fa8784c038
|
@ -150,11 +150,14 @@ export class HttpRequestService {
|
|||
controller.abort();
|
||||
}, timeout);
|
||||
|
||||
const res = await fetch(url, {
|
||||
const bearcaps = url.startsWith('bear:?') ? this.parseBearcaps(url) : undefined;
|
||||
|
||||
const res = await fetch(bearcaps?.url ?? url, {
|
||||
method: args.method ?? 'GET',
|
||||
headers: {
|
||||
'User-Agent': this.config.userAgent,
|
||||
...(args.headers ?? {}),
|
||||
...(bearcaps?.token ? { Authorization: `Bearer ${bearcaps.token}` } : {}),
|
||||
},
|
||||
body: args.body,
|
||||
size: args.size ?? 10 * 1024 * 1024,
|
||||
|
@ -168,4 +171,17 @@ export class HttpRequestService {
|
|||
|
||||
return res;
|
||||
}
|
||||
|
||||
// Bearcaps https://docs.joinmastodon.org/spec/bearcaps/
|
||||
// bear:?t=<token>&u=https://example.com/foo'
|
||||
// -> GET https://example.com/foo Authorization: Bearer <token>
|
||||
private parseBearcaps(url: string): { url: string, token: string | undefined } | undefined {
|
||||
const params = new URLSearchParams(url.split('?')[1]);
|
||||
if (!params.has('u')) return undefined;
|
||||
|
||||
return {
|
||||
url: params.get('u')!,
|
||||
token: params.get('t') ?? undefined,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue