mirror of
https://github.com/mountain-loop/yaak.git
synced 2026-04-21 00:01:22 +02:00
Add support for API key authentication in cURL conversion
https://feedback.yaak.app/p/copy-as-curl-without-api-key
This commit is contained in:
@@ -43,6 +43,26 @@ export async function convertToCurl(request: Partial<HttpRequest>) {
|
|||||||
finalUrl = base + separator + queryString + (hash ? `#${hash}` : '');
|
finalUrl = base + separator + queryString + (hash ? `#${hash}` : '');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Add API key authentication
|
||||||
|
if (request.authenticationType === 'apikey') {
|
||||||
|
if (request.authentication?.location === 'query') {
|
||||||
|
const sep = request.url?.includes('?') ? '&' : '?';
|
||||||
|
finalUrl = [
|
||||||
|
finalUrl,
|
||||||
|
sep,
|
||||||
|
encodeURIComponent(request.authentication?.key ?? 'token'),
|
||||||
|
'=',
|
||||||
|
encodeURIComponent(request.authentication?.value ?? ''),
|
||||||
|
].join('');
|
||||||
|
} else {
|
||||||
|
request.headers = request.headers ?? [];
|
||||||
|
request.headers.push({
|
||||||
|
name: request.authentication?.key ?? 'X-Api-Key',
|
||||||
|
value: request.authentication?.value ?? '',
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
xs.push(quote(finalUrl));
|
xs.push(quote(finalUrl));
|
||||||
xs.push(NEWLINE);
|
xs.push(NEWLINE);
|
||||||
|
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ describe('exporter-curl', () => {
|
|||||||
}),
|
}),
|
||||||
).toEqual([`curl 'https://yaak.app/path?a=aaa&b=bbb#section'`].join(` \\n `));
|
).toEqual([`curl 'https://yaak.app/path?a=aaa&b=bbb#section'`].join(` \\n `));
|
||||||
});
|
});
|
||||||
|
|
||||||
test('Exports POST with url form data', async () => {
|
test('Exports POST with url form data', async () => {
|
||||||
expect(
|
expect(
|
||||||
await convertToCurl({
|
await convertToCurl({
|
||||||
@@ -305,6 +306,94 @@ describe('exporter-curl', () => {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('API key auth header', async () => {
|
||||||
|
expect(
|
||||||
|
await convertToCurl({
|
||||||
|
url: 'https://yaak.app',
|
||||||
|
authenticationType: 'apikey',
|
||||||
|
authentication: {
|
||||||
|
location: 'header',
|
||||||
|
key: 'X-Header',
|
||||||
|
value: 'my-token'
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
).toEqual(
|
||||||
|
[
|
||||||
|
`curl 'https://yaak.app'`,
|
||||||
|
`--header 'X-Header: my-token'`,
|
||||||
|
].join(` \\\n `),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('API key auth header default', async () => {
|
||||||
|
expect(
|
||||||
|
await convertToCurl({
|
||||||
|
url: 'https://yaak.app',
|
||||||
|
authenticationType: 'apikey',
|
||||||
|
authentication: {
|
||||||
|
location: 'header',
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
).toEqual(
|
||||||
|
[
|
||||||
|
`curl 'https://yaak.app'`,
|
||||||
|
`--header 'X-Api-Key: '`,
|
||||||
|
].join(` \\\n `),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('API key auth query', async () => {
|
||||||
|
expect(
|
||||||
|
await convertToCurl({
|
||||||
|
url: 'https://yaak.app',
|
||||||
|
authenticationType: 'apikey',
|
||||||
|
authentication: {
|
||||||
|
location: 'query',
|
||||||
|
key: 'foo',
|
||||||
|
value: 'bar-baz'
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
).toEqual(
|
||||||
|
[
|
||||||
|
`curl 'https://yaak.app?foo=bar-baz'`,
|
||||||
|
].join(` \\\n `),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('API key auth query with existing', async () => {
|
||||||
|
expect(
|
||||||
|
await convertToCurl({
|
||||||
|
url: 'https://yaak.app?foo=bar&baz=qux',
|
||||||
|
authenticationType: 'apikey',
|
||||||
|
authentication: {
|
||||||
|
location: 'query',
|
||||||
|
key: 'hi',
|
||||||
|
value: 'there'
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
).toEqual(
|
||||||
|
[
|
||||||
|
`curl 'https://yaak.app?foo=bar&baz=qux&hi=there'`,
|
||||||
|
].join(` \\\n `),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('API key auth query default', async () => {
|
||||||
|
expect(
|
||||||
|
await convertToCurl({
|
||||||
|
url: 'https://yaak.app?foo=bar&baz=qux',
|
||||||
|
authenticationType: 'apikey',
|
||||||
|
authentication: {
|
||||||
|
location: 'query',
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
).toEqual(
|
||||||
|
[
|
||||||
|
`curl 'https://yaak.app?foo=bar&baz=qux&token='`,
|
||||||
|
].join(` \\\n `),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
test('Stale body data', async () => {
|
test('Stale body data', async () => {
|
||||||
expect(
|
expect(
|
||||||
await convertToCurl({
|
await convertToCurl({
|
||||||
|
|||||||
Reference in New Issue
Block a user