insomnia/packages/insomnia-app/app/sync-legacy/network.js

78 lines
2.1 KiB
JavaScript

import * as fetch from '../account/fetch';
import * as session from '../account/session';
import * as crypt from '../account/crypt';
export async function syncCreateResourceGroup(parentResourceId, name, encSymmetricKey) {
return fetch.post(
'/api/resource_groups',
{
parentResourceId,
name,
encSymmetricKey,
},
session.getCurrentSessionId(),
);
}
export async function syncGetResourceGroup(id) {
return fetch.get(`/api/resource_groups/${id}`, session.getCurrentSessionId());
}
export async function syncPull(body) {
return fetch.post('/sync/pull', body, session.getCurrentSessionId(), true);
}
export async function syncPush(body) {
return fetch.post('/sync/push', body, session.getCurrentSessionId(), true);
}
export async function syncResetData() {
return fetch.post('/auth/reset', null, session.getCurrentSessionId());
}
export async function syncFixDupes(resourceGroupIds) {
return fetch.post('/sync/fix-dupes', { ids: resourceGroupIds }, session.getCurrentSessionId());
}
export async function unshareWithAllTeams(resourceGroupId) {
return fetch.put(
`/api/resource_groups/${resourceGroupId}/unshare`,
null,
session.getCurrentSessionId(),
);
}
export async function shareWithTeam(resourceGroupId, teamId) {
// Ask the server what we need to do to invite the member
const instructions = await fetch.post(
`/api/resource_groups/${resourceGroupId}/share-a`,
{
teamId,
},
session.getCurrentSessionId(),
);
const privateKeyJWK = session.getPrivateKey();
const resourceGroupSymmetricKey = crypt.decryptRSAWithJWK(
privateKeyJWK,
instructions.encSymmetricKey,
);
// Build the invite data request
const newKeys = {};
for (const accountId of Object.keys(instructions.keys)) {
const accountPublicKeyJWK = JSON.parse(instructions.keys[accountId]);
newKeys[accountId] = crypt.encryptRSAWithJWK(accountPublicKeyJWK, resourceGroupSymmetricKey);
}
// Actually share it with the team
await fetch.post(
`/api/resource_groups/${resourceGroupId}/share-b`,
{
teamId,
keys: newKeys,
},
session.getCurrentSessionId(),
);
}