Compare commits

...

3 Commits

3 changed files with 24 additions and 8 deletions

View File

@ -170,9 +170,12 @@ export class AuthClient {
chain_type?: "ETH" | "SOL"; chain_type?: "ETH" | "SOL";
}): Promise<{ }): Promise<{
access_token: string; access_token: string;
refresh_token: string; refresh_token?: string;
subject: string; subject: string;
namespace: string; namespace: string;
api_key?: string;
expires_in?: number;
token_type?: string;
}> { }> {
const response = await this.httpClient.post("/v1/auth/verify", { const response = await this.httpClient.post("/v1/auth/verify", {
wallet: params.wallet, wallet: params.wallet,
@ -182,10 +185,20 @@ export class AuthClient {
chain_type: params.chain_type || "ETH", chain_type: params.chain_type || "ETH",
}); });
// Automatically set the JWT // Persist JWT
this.setJwt(response.access_token); this.setJwt(response.access_token);
return response; // Persist API key if server provided it (created in verifyHandler)
if ((response as any).api_key) {
this.setApiKey((response as any).api_key);
}
// Persist refresh token if present (optional, for silent renewal)
if ((response as any).refresh_token) {
await this.storage.set("refreshToken", (response as any).refresh_token);
}
return response as any;
} }
/** /**

View File

@ -82,6 +82,10 @@ export class HttpClient {
return this.jwt || this.apiKey; return this.jwt || this.apiKey;
} }
getApiKey(): string | undefined {
return this.apiKey;
}
async request<T = any>( async request<T = any>(
method: "GET" | "POST" | "PUT" | "DELETE", method: "GET" | "POST" | "PUT" | "DELETE",
path: string, path: string,

View File

@ -82,8 +82,6 @@ export class PubSubClient {
dataBase64 = base64EncodeBytes(data); dataBase64 = base64EncodeBytes(data);
} }
console.log("[PubSubClient] Publishing to topic:", topic);
await this.httpClient.post( await this.httpClient.post(
"/v1/pubsub/publish", "/v1/pubsub/publish",
{ {
@ -119,18 +117,19 @@ export class PubSubClient {
} = {} } = {}
): Promise<Subscription> { ): Promise<Subscription> {
// Build WebSocket URL for this topic // Build WebSocket URL for this topic
const wsUrl = new URL(this.wsConfig.wsURL || "ws://localhost:6001"); const wsUrl = new URL(this.wsConfig.wsURL || "ws://127.0.0.1:6001");
wsUrl.pathname = "/v1/pubsub/ws"; wsUrl.pathname = "/v1/pubsub/ws";
wsUrl.searchParams.set("topic", topic); wsUrl.searchParams.set("topic", topic);
const authToken = this.httpClient.getApiKey() ?? this.httpClient.getToken();
// Create WebSocket client // Create WebSocket client
const wsClient = new WSClient({ const wsClient = new WSClient({
...this.wsConfig, ...this.wsConfig,
wsURL: wsUrl.toString(), wsURL: wsUrl.toString(),
authToken: this.httpClient.getToken(), authToken,
}); });
console.log("[PubSubClient] Connecting to topic:", topic);
await wsClient.connect(); await wsClient.connect();
// Create subscription wrapper // Create subscription wrapper