mirror of
https://github.com/johannesjo/super-productivity.git
synced 2026-07-21 02:20:12 +00:00
feat(issueProvider): improve header manipulation and also change jira way of authentication
This commit is contained in:
parent
6ab03563bb
commit
0c93cfea07
2 changed files with 49 additions and 39 deletions
|
|
@ -93,7 +93,13 @@ export const createWindow = ({
|
|||
// see: https://pratikpc.medium.com/bypassing-cors-with-electron-ab7eaf331605
|
||||
mainWin.webContents.session.webRequest.onBeforeSendHeaders((details, callback) => {
|
||||
const { requestHeaders } = details;
|
||||
upsertKeyValue(requestHeaders, 'Origin', null);
|
||||
upsertKeyValue(requestHeaders, 'Referer', null);
|
||||
upsertKeyValue(requestHeaders, 'User-Agent', ['']);
|
||||
upsertKeyValue(requestHeaders, 'Access-Control-Allow-Origin', ['*']);
|
||||
delete requestHeaders['Origin'];
|
||||
delete requestHeaders['Referer'];
|
||||
|
||||
callback({ requestHeaders });
|
||||
});
|
||||
|
||||
|
|
@ -101,6 +107,10 @@ export const createWindow = ({
|
|||
const { responseHeaders } = details;
|
||||
upsertKeyValue(responseHeaders, 'Access-Control-Allow-Origin', ['*']);
|
||||
upsertKeyValue(responseHeaders, 'Access-Control-Allow-Headers', ['*']);
|
||||
upsertKeyValue(responseHeaders, 'Access-Control-Allow-Methods', [
|
||||
'GET, POST, PUT, DELETE, OPTIONS',
|
||||
]);
|
||||
|
||||
callback({
|
||||
responseHeaders,
|
||||
});
|
||||
|
|
|
|||
|
|
@ -465,16 +465,16 @@ export class JiraApiService {
|
|||
transform: any,
|
||||
jiraCfg: JiraCfg,
|
||||
): Observable<any> {
|
||||
// if (!this._isExtension) {
|
||||
// return fromPromise(
|
||||
// fetch(url, requestInit)
|
||||
// .then((response) => response.body)
|
||||
// .then(streamToJsonIfPossible as any)
|
||||
// .then((res) =>
|
||||
// transform ? transform({ response: res }, jiraCfg) : { response: res },
|
||||
// ),
|
||||
// );
|
||||
// }
|
||||
if (!this._isExtension) {
|
||||
return fromPromise(
|
||||
fetch(url, requestInit)
|
||||
.then((response) => response.body)
|
||||
.then(streamToJsonIfPossible as any)
|
||||
.then((res) =>
|
||||
transform ? transform({ response: res }, jiraCfg) : { response: res },
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
// TODO refactor to observable for request canceling etc
|
||||
let promiseResolve;
|
||||
|
|
@ -690,32 +690,32 @@ export class JiraApiService {
|
|||
}
|
||||
}
|
||||
|
||||
// // eslint-disable-next-line prefer-arrow/prefer-arrow-functions
|
||||
// async function streamToString(stream: ReadableStream): Promise<string> {
|
||||
// const reader = stream.getReader();
|
||||
// const decoder = new TextDecoder();
|
||||
// let result = '';
|
||||
// let done = false;
|
||||
//
|
||||
// while (!done) {
|
||||
// const { value, done: doneReading } = await reader.read();
|
||||
// done = doneReading;
|
||||
// if (value) {
|
||||
// result += decoder.decode(value, { stream: true });
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// result += decoder.decode(); // flush the decoder
|
||||
// return result;
|
||||
// }
|
||||
//
|
||||
// // eslint-disable-next-line prefer-arrow/prefer-arrow-functions
|
||||
// async function streamToJsonIfPossible(stream: ReadableStream): Promise<any> {
|
||||
// const text = await streamToString(stream);
|
||||
// try {
|
||||
// return JSON.parse(text);
|
||||
// } catch (e) {
|
||||
// console.error('Jira: Could not parse response', text);
|
||||
// return text;
|
||||
// }
|
||||
// }
|
||||
// eslint-disable-next-line prefer-arrow/prefer-arrow-functions
|
||||
async function streamToString(stream: ReadableStream): Promise<string> {
|
||||
const reader = stream.getReader();
|
||||
const decoder = new TextDecoder();
|
||||
let result = '';
|
||||
let done = false;
|
||||
|
||||
while (!done) {
|
||||
const { value, done: doneReading } = await reader.read();
|
||||
done = doneReading;
|
||||
if (value) {
|
||||
result += decoder.decode(value, { stream: true });
|
||||
}
|
||||
}
|
||||
|
||||
result += decoder.decode(); // flush the decoder
|
||||
return result;
|
||||
}
|
||||
|
||||
// eslint-disable-next-line prefer-arrow/prefer-arrow-functions
|
||||
async function streamToJsonIfPossible(stream: ReadableStream): Promise<any> {
|
||||
const text = await streamToString(stream);
|
||||
try {
|
||||
return JSON.parse(text);
|
||||
} catch (e) {
|
||||
console.error('Jira: Could not parse response', text);
|
||||
return text;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue