Skip to content

Commit d4bd87f

Browse files
authored
client: allow x-token for insecure connections in JS (#387)
1 parent 5c34cf2 commit d4bd87f

File tree

1 file changed

+65
-33
lines changed
  • yellowstone-grpc-client-nodejs/src

1 file changed

+65
-33
lines changed

yellowstone-grpc-client-nodejs/src/index.ts

Lines changed: 65 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ export {
5555

5656
export default class Client {
5757
_client: GeyserClient;
58-
58+
_insecureXToken: string | undefined;
5959
constructor(
6060
endpoint: string,
6161
xToken: string | undefined,
@@ -79,13 +79,24 @@ export default class Client {
7979
);
8080
} else {
8181
creds = ChannelCredentials.createInsecure();
82+
if (xToken !== undefined) {
83+
this._insecureXToken = xToken;
84+
}
8285
}
8386

8487
this._client = new GeyserClient(endpointURL.host, creds, channelOptions);
8588
}
8689

90+
private _getInsecureMetadata(): Metadata {
91+
const metadata = new Metadata();
92+
if (this._insecureXToken) {
93+
metadata.add("x-token", this._insecureXToken);
94+
}
95+
return metadata;
96+
}
97+
8798
async subscribe() {
88-
return await this._client.subscribe();
99+
return await this._client.subscribe(this._getInsecureMetadata());
89100
}
90101

91102
async subscribeOnce(
@@ -99,7 +110,7 @@ export default class Client {
99110
commitment: CommitmentLevel | undefined,
100111
accountsDataSlice: SubscribeRequestAccountsDataSlice[]
101112
) {
102-
const stream = await this._client.subscribe();
113+
const stream = await this._client.subscribe(this._getInsecureMetadata());
103114

104115
await new Promise<void>((resolve, reject) => {
105116
stream.write(
@@ -129,51 +140,67 @@ export default class Client {
129140

130141
async ping(count: number): Promise<number> {
131142
return await new Promise<number>((resolve, reject) => {
132-
this._client.ping({ count }, (err, response) => {
133-
if (err === null || err === undefined) {
134-
resolve(response.count);
135-
} else {
136-
reject(err);
143+
this._client.ping(
144+
{ count },
145+
this._getInsecureMetadata(),
146+
(err, response) => {
147+
if (err === null || err === undefined) {
148+
resolve(response.count);
149+
} else {
150+
reject(err);
151+
}
137152
}
138-
});
153+
);
139154
});
140155
}
141156

142157
async getLatestBlockhash(
143158
commitment?: CommitmentLevel
144159
): Promise<GetLatestBlockhashResponse> {
145160
return await new Promise<GetLatestBlockhashResponse>((resolve, reject) => {
146-
this._client.getLatestBlockhash({ commitment }, (err, response) => {
147-
if (err === null || err === undefined) {
148-
resolve(response);
149-
} else {
150-
reject(err);
161+
this._client.getLatestBlockhash(
162+
{ commitment },
163+
this._getInsecureMetadata(),
164+
(err, response) => {
165+
if (err === null || err === undefined) {
166+
resolve(response);
167+
} else {
168+
reject(err);
169+
}
151170
}
152-
});
171+
);
153172
});
154173
}
155174

156175
async getBlockHeight(commitment?: CommitmentLevel): Promise<string> {
157176
return await new Promise<string>((resolve, reject) => {
158-
this._client.getBlockHeight({ commitment }, (err, response) => {
159-
if (err === null || err === undefined) {
160-
resolve(response.blockHeight);
161-
} else {
162-
reject(err);
177+
this._client.getBlockHeight(
178+
{ commitment },
179+
this._getInsecureMetadata(),
180+
(err, response) => {
181+
if (err === null || err === undefined) {
182+
resolve(response.blockHeight);
183+
} else {
184+
reject(err);
185+
}
163186
}
164-
});
187+
);
165188
});
166189
}
167190

168191
async getSlot(commitment?: CommitmentLevel): Promise<string> {
169192
return await new Promise<string>((resolve, reject) => {
170-
this._client.getSlot({ commitment }, (err, response) => {
171-
if (err === null || err === undefined) {
172-
resolve(response.slot);
173-
} else {
174-
reject(err);
193+
this._client.getSlot(
194+
{ commitment },
195+
this._getInsecureMetadata(),
196+
(err, response) => {
197+
if (err === null || err === undefined) {
198+
resolve(response.slot);
199+
} else {
200+
reject(err);
201+
}
175202
}
176-
});
203+
);
177204
});
178205
}
179206

@@ -184,6 +211,7 @@ export default class Client {
184211
return await new Promise<IsBlockhashValidResponse>((resolve, reject) => {
185212
this._client.isBlockhashValid(
186213
{ blockhash, commitment },
214+
this._getInsecureMetadata(),
187215
(err, response) => {
188216
if (err === null || err === undefined) {
189217
resolve(response);
@@ -197,13 +225,17 @@ export default class Client {
197225

198226
async getVersion(): Promise<string> {
199227
return await new Promise<string>((resolve, reject) => {
200-
this._client.getVersion({}, (err, response) => {
201-
if (err === null || err === undefined) {
202-
resolve(response.version);
203-
} else {
204-
reject(err);
228+
this._client.getVersion(
229+
{},
230+
this._getInsecureMetadata(),
231+
(err, response) => {
232+
if (err === null || err === undefined) {
233+
resolve(response.version);
234+
} else {
235+
reject(err);
236+
}
205237
}
206-
});
238+
);
207239
});
208240
}
209241
}

0 commit comments

Comments
 (0)