Skip to content

Commit daf704a

Browse files
Merge pull request #651 from LIT-Protocol/LIT-3896-wrappedkeys-requestid-errorlogs
LIT-3896 - Better error logs & request id tracking and submission for wrapped-keys service client
2 parents 846d48a + 2d82a9f commit daf704a

File tree

4 files changed

+37
-17
lines changed

4 files changed

+37
-17
lines changed

packages/wrapped-keys/src/lib/api/sign-message-with-encrypted-key.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,6 @@ export async function signMessageWithEncryptedKey(
2525
litNetwork: litNodeClient.config.litNetwork,
2626
});
2727

28-
console.log('fetched metadata', storedKeyMetadata);
29-
3028
const allowPkpAddressToDecrypt = getPkpAccessControlCondition(
3129
storedKeyMetadata.pkpAddress
3230
);

packages/wrapped-keys/src/lib/service-client/client.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { FetchKeyParams, ListKeysParams, StoreKeyParams } from './types';
2-
import { getBaseRequestParams, makeRequest } from './utils';
2+
import { generateRequestId, getBaseRequestParams, makeRequest } from './utils';
33
import {
44
StoredKeyData,
55
StoredKeyMetadata,
@@ -19,17 +19,20 @@ export async function listPrivateKeyMetadata(
1919
): Promise<StoredKeyMetadata[]> {
2020
const { litNetwork, sessionSig } = params;
2121

22+
const requestId = generateRequestId();
2223
const { baseUrl, initParams } = getBaseRequestParams({
2324
litNetwork,
2425
sessionSig,
2526
method: 'GET',
27+
requestId,
2628
});
2729

2830
const pkpAddress = getPkpAddressFromSessionSig(sessionSig);
2931

3032
return makeRequest<StoredKeyMetadata[]>({
3133
url: `${baseUrl}/${pkpAddress}`,
3234
init: initParams,
35+
requestId,
3336
});
3437
}
3538

@@ -44,16 +47,19 @@ export async function fetchPrivateKey(
4447
): Promise<StoredKeyData> {
4548
const { litNetwork, sessionSig, id } = params;
4649

50+
const requestId = generateRequestId();
4751
const { baseUrl, initParams } = getBaseRequestParams({
4852
litNetwork,
4953
sessionSig,
5054
method: 'GET',
55+
requestId,
5156
});
5257
const pkpAddress = getPkpAddressFromSessionSig(sessionSig);
5358

5459
return makeRequest<StoredKeyData>({
5560
url: `${baseUrl}/${pkpAddress}/${id}`,
5661
init: initParams,
62+
requestId,
5763
});
5864
}
5965

@@ -67,10 +73,12 @@ export async function storePrivateKey(
6773
): Promise<StoreEncryptedKeyResult> {
6874
const { litNetwork, sessionSig, storedKeyMetadata } = params;
6975

76+
const requestId = generateRequestId();
7077
const { baseUrl, initParams } = getBaseRequestParams({
7178
litNetwork,
7279
sessionSig,
7380
method: 'POST',
81+
requestId,
7482
});
7583

7684
const { pkpAddress, id } = await makeRequest<StoreEncryptedKeyResult>({
@@ -79,6 +87,7 @@ export async function storePrivateKey(
7987
...initParams,
8088
body: JSON.stringify(storedKeyMetadata),
8189
},
90+
requestId,
8291
});
8392

8493
return { pkpAddress, id };

packages/wrapped-keys/src/lib/service-client/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,4 +34,5 @@ export interface BaseRequestParams {
3434
sessionSig: AuthSig;
3535
method: 'GET' | 'POST';
3636
litNetwork: LIT_NETWORKS_KEYS;
37+
requestId: string;
3738
}

packages/wrapped-keys/src/lib/service-client/utils.ts

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ export function getBaseRequestParams(requestParams: BaseRequestParams): {
5757
initParams: {
5858
method,
5959
headers: {
60+
'x-correlation-id': requestParams.requestId,
6061
'Content-Type': 'application/json',
6162
'Lit-Network': litNetwork,
6263
Authorization: composeAuthHeader(sessionSig), // As Base64 string to avoid escaping issues
@@ -104,29 +105,40 @@ async function getResponseJson<T>(response: Response): Promise<T | string> {
104105
}
105106
}
106107

108+
export function generateRequestId(): string {
109+
return Math.random().toString(16).slice(2);
110+
}
111+
107112
export async function makeRequest<T>({
108113
url,
109114
init,
115+
requestId,
110116
}: {
111117
url: string;
112118
init: RequestInit;
119+
requestId: string;
113120
}) {
114-
console.log('Fetching from URL', url);
115-
const response = await fetch(url, { ...init });
121+
try {
122+
const response = await fetch(url, { ...init });
116123

117-
if (!response.ok) {
118-
const errorMessage = await getResponseErrorMessage(response);
119-
throw new Error(`Failed to make request for wrapped key: ${errorMessage}`);
120-
}
124+
if (!response.ok) {
125+
const errorMessage = await getResponseErrorMessage(response);
126+
throw new Error(`HTTP(${response.status}): ${errorMessage}`);
127+
}
121128

122-
/**
123-
*
124-
*/
125-
const result = await getResponseJson<T>(response);
129+
const result = await getResponseJson<T>(response);
126130

127-
if (typeof result === 'string') {
128-
throw new Error(`Unexpected response from wrapped key service: ${result}`);
129-
}
131+
if (typeof result === 'string') {
132+
throw new Error(`HTTP(${response.status}): ${result}`);
133+
}
130134

131-
return result;
135+
return result;
136+
} catch (e: unknown) {
137+
throw new Error(
138+
`Request(${requestId}) for wrapped key failed. Error: ${
139+
(e as Error).message
140+
// @ts-expect-error Unknown, but `cause` is on `TypeError: fetch failed` errors
141+
}${e.cause ? ' - ' + e.cause : ''}`
142+
);
143+
}
132144
}

0 commit comments

Comments
 (0)