|
1 | | -import { logger } from '@socketsecurity/registry/lib/logger' |
2 | | - |
3 | 1 | import constants from '../../constants' |
4 | 2 | import { handleApiCall, handleUnsuccessfulApiResponse } from '../../utils/api' |
5 | 3 | import { AuthError } from '../../utils/errors' |
6 | 4 | import { getDefaultToken, setupSdk } from '../../utils/sdk' |
7 | 5 |
|
8 | | -export async function getQuota( |
9 | | - format: 'text' | 'json' | 'markdown' = 'text' |
10 | | -): Promise<void> { |
| 6 | +import type { SocketSdkReturnType } from '@socketsecurity/sdk' |
| 7 | + |
| 8 | +export async function fetchQuota(): Promise< |
| 9 | + SocketSdkReturnType<'getQuota'>['data'] | undefined |
| 10 | +> { |
11 | 11 | const apiToken = getDefaultToken() |
12 | 12 | if (!apiToken) { |
13 | 13 | throw new AuthError( |
14 | 14 | 'User must be authenticated to run this command. To log in, run the command `socket login` and enter your API key.' |
15 | 15 | ) |
16 | 16 | } |
17 | | - await getQuotaWithToken(apiToken, format) |
| 17 | + return await fetchQuotaWithToken(apiToken) |
18 | 18 | } |
19 | 19 |
|
20 | | -async function getQuotaWithToken( |
21 | | - apiToken: string, |
22 | | - format: 'text' | 'json' | 'markdown' = 'text' |
23 | | -) { |
| 20 | +async function fetchQuotaWithToken( |
| 21 | + apiToken: string |
| 22 | +): Promise<SocketSdkReturnType<'getQuota'>['data'] | undefined> { |
24 | 23 | // Lazily access constants.spinner. |
25 | 24 | const { spinner } = constants |
26 | 25 |
|
| 26 | + const socketSdk = await setupSdk(apiToken) |
| 27 | + |
27 | 28 | spinner.start('Fetching organization quota...') |
28 | 29 |
|
29 | | - const socketSdk = await setupSdk(apiToken) |
30 | 30 | const result = await handleApiCall( |
31 | 31 | socketSdk.getQuota(), |
32 | 32 | 'looking up organization quota' |
33 | 33 | ) |
34 | 34 |
|
| 35 | + spinner?.successAndStop('Recieved organization quota response.') |
| 36 | + |
35 | 37 | if (!result.success) { |
36 | 38 | handleUnsuccessfulApiResponse('getQuota', result) |
37 | 39 | return |
38 | 40 | } |
39 | 41 |
|
40 | | - spinner.stop() |
41 | | - |
42 | | - switch (format) { |
43 | | - case 'json': { |
44 | | - logger.log( |
45 | | - JSON.stringify( |
46 | | - { |
47 | | - quota: result.data.quota |
48 | | - }, |
49 | | - null, |
50 | | - 2 |
51 | | - ) |
52 | | - ) |
53 | | - return |
54 | | - } |
55 | | - case 'markdown': { |
56 | | - logger.log('# Quota\n') |
57 | | - logger.log(`Quota left on the current API token: ${result.data.quota}\n`) |
58 | | - return |
59 | | - } |
60 | | - default: { |
61 | | - logger.log(`Quota left on the current API token: ${result.data.quota}\n`) |
62 | | - } |
63 | | - } |
| 42 | + return result.data |
64 | 43 | } |
0 commit comments