MCPcopy Create free account
hub / github.com/GDATASoftwareAG/vaas / forStreamRequest

Method forStreamRequest

typescript/src/Vaas.ts:240–291  ·  view source on GitHub ↗
(stream: Readable)

Source from the content-addressed store, hash-verified

238 }
239
240 private async forStreamRequest(stream: Readable): Promise<VaasVerdict> {
241 const ws = this.getAuthenticatedWebSocket();
242 return new Promise((resolve, reject) => {
243 const guid = uuidv4();
244 if (this.debug) console.debug("uuid", guid);
245 let contentLength = 0;
246 this.verdictPromises.set(guid, { // waits for the verdictRequestForStream response
247 resolve: async (verdictResponse: VerdictResponse) => {
248 if (verdictResponse.verdict !== Verdict.UNKNOWN) {
249 throw new VaasServerError(
250 "Server returned verdict without receiving content",
251 );
252 }
253 if (verdictResponse.upload_token === undefined || verdictResponse.upload_token == "") {
254 throw new VaasServerError(
255 "No upload token set in response",
256 );
257 }
258 if (verdictResponse.url === undefined || verdictResponse.url == "") {
259 throw new VaasServerError(
260 "No upload url set in response",
261 );
262 }
263 this.verdictPromises.delete(guid);
264 this.verdictPromises.set(guid, { // waits for the upload response
265 resolve: async (verdictResponse: VerdictResponse) => {
266 this.verdictPromises.delete(guid);
267 resolve(
268 new VaasVerdict(verdictResponse.sha256, verdictResponse.verdict, verdictResponse.detection, verdictResponse.file_type, verdictResponse.mime_type),
269 );
270 },
271 reject: (reason) => reject(reason),
272 });
273
274 contentLength = stream.readableLength;
275 await this.upload(verdictResponse, stream, contentLength);
276 return;
277 },
278 reject: (reason) => reject(reason),
279 });
280
281 const verdictReq = JSON.stringify(
282 defaultSerializer.serialize(
283 new VerdictRequestForStream(
284 guid,
285 this.connection!.sessionId as string,
286 ),
287 ),
288 );
289 ws.send(verdictReq);
290 });
291 }
292
293 /** Connect to VaaS
294 * @throws {VaasAuthenticationError} Authentication failed.

Callers 1

forStreamMethod · 0.95

Calls 2

uploadMethod · 0.95

Tested by

no test coverage detected