2019-05-02 14:48:47 +01:00
|
|
|
// Copyright (C) 2019 Storj Labs, Inc.
|
2019-02-01 16:19:30 +00:00
|
|
|
// See LICENSE for copying information.
|
|
|
|
|
|
|
|
import apollo from '@/utils/apolloManager';
|
|
|
|
import gql from 'graphql-tag';
|
2019-07-18 14:39:39 +01:00
|
|
|
import { ApiKey } from '@/types/apiKeys';
|
|
|
|
import { RequestResponse } from '@/types/response';
|
2019-02-01 16:19:30 +00:00
|
|
|
|
2019-07-18 14:39:39 +01:00
|
|
|
export async function fetchAPIKeys(projectID: string): Promise<RequestResponse<ApiKey[]>> {
|
|
|
|
let result: RequestResponse<ApiKey[]> = new RequestResponse<ApiKey[]>();
|
2019-02-01 16:19:30 +00:00
|
|
|
|
2019-04-05 16:08:14 +01:00
|
|
|
let response: any = await apollo.query({
|
|
|
|
query: gql(
|
|
|
|
`query {
|
|
|
|
project(
|
|
|
|
id: "${projectID}",
|
|
|
|
) {
|
|
|
|
apiKeys {
|
|
|
|
id,
|
|
|
|
name,
|
|
|
|
createdAt
|
2019-02-01 16:19:30 +00:00
|
|
|
}
|
2019-04-05 16:08:14 +01:00
|
|
|
}
|
|
|
|
}`
|
|
|
|
),
|
|
|
|
fetchPolicy: 'no-cache',
|
|
|
|
errorPolicy: 'all',
|
|
|
|
});
|
|
|
|
|
|
|
|
if (response.errors) {
|
|
|
|
result.errorMessage = response.errors[0].message;
|
|
|
|
} else {
|
|
|
|
result.isSuccess = true;
|
2019-07-18 14:39:39 +01:00
|
|
|
result.data = getApiKeysList(response.data.project.apiKeys);
|
2019-02-01 16:19:30 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
|
2019-07-18 14:39:39 +01:00
|
|
|
export async function createAPIKey(projectID: string, name: string): Promise<RequestResponse<ApiKey>> {
|
|
|
|
let result: RequestResponse<ApiKey> = new RequestResponse<ApiKey>();
|
2019-02-01 16:19:30 +00:00
|
|
|
|
2019-04-05 16:08:14 +01:00
|
|
|
let response: any = await apollo.mutate({
|
|
|
|
mutation: gql(
|
|
|
|
`mutation {
|
|
|
|
createAPIKey(
|
|
|
|
projectID: "${projectID}",
|
|
|
|
name: "${name}"
|
|
|
|
) {
|
|
|
|
key,
|
|
|
|
keyInfo {
|
|
|
|
id,
|
|
|
|
name,
|
|
|
|
createdAt
|
2019-02-01 16:19:30 +00:00
|
|
|
}
|
2019-04-05 16:08:14 +01:00
|
|
|
}
|
|
|
|
}`
|
|
|
|
),
|
|
|
|
fetchPolicy: 'no-cache',
|
|
|
|
errorPolicy: 'all',
|
|
|
|
});
|
|
|
|
|
|
|
|
if (response.errors) {
|
|
|
|
result.errorMessage = response.errors[0].message;
|
|
|
|
} else {
|
|
|
|
result.isSuccess = true;
|
2019-07-18 14:39:39 +01:00
|
|
|
let key: any = response.data.createAPIKey.keyInfo;
|
|
|
|
let secret: string = response.data.createAPIKey.key;
|
|
|
|
|
|
|
|
result.data = new ApiKey(key.id, key.name, key.createdAt, secret);
|
2019-02-01 16:19:30 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
|
2019-07-18 14:39:39 +01:00
|
|
|
export async function deleteAPIKeys(ids: string[]): Promise<RequestResponse<null>> {
|
|
|
|
// TODO: find needed type instead of any
|
|
|
|
let result: RequestResponse<any> = new RequestResponse<any>();
|
2019-02-01 16:19:30 +00:00
|
|
|
|
2019-04-05 16:08:14 +01:00
|
|
|
let response: any = await apollo.mutate({
|
|
|
|
mutation: gql(
|
|
|
|
`mutation {
|
|
|
|
deleteAPIKeys(id: [${prepareIdList(ids)}]) {
|
|
|
|
id
|
|
|
|
}
|
|
|
|
}`
|
|
|
|
),
|
|
|
|
fetchPolicy: 'no-cache',
|
|
|
|
errorPolicy: 'all',
|
|
|
|
});
|
|
|
|
|
|
|
|
if (response.errors) {
|
|
|
|
result.errorMessage = response.errors[0].message;
|
|
|
|
} else {
|
|
|
|
result.isSuccess = true;
|
|
|
|
result.data = response.data.deleteAPIKeys;
|
2019-02-01 16:19:30 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
return result;
|
2019-02-13 11:34:40 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
function prepareIdList(ids: string[]): string {
|
2019-02-20 13:33:56 +00:00
|
|
|
let idString: string = '';
|
2019-02-13 11:34:40 +00:00
|
|
|
|
2019-02-20 13:33:56 +00:00
|
|
|
ids.forEach(id => {
|
|
|
|
idString += `"${id}", `;
|
|
|
|
});
|
2019-02-13 11:34:40 +00:00
|
|
|
|
2019-02-20 13:33:56 +00:00
|
|
|
return idString;
|
2019-02-13 11:34:40 +00:00
|
|
|
}
|
2019-07-18 14:39:39 +01:00
|
|
|
|
|
|
|
function getApiKeysList(apiKeys: ApiKey[]): ApiKey[] {
|
|
|
|
if (!apiKeys) {
|
|
|
|
return [];
|
|
|
|
}
|
|
|
|
|
|
|
|
return apiKeys.map(key => new ApiKey(key.id, key.name, key.createdAt, ''));
|
|
|
|
}
|