This repository has been archived on 2022-07-06. You can view files and clone it, but cannot push or open issues or pull requests.
websocket-webcam/node_modules/jsftp/lib/response.js

46 lines
1023 B
JavaScript

"use strict";
var RE_RES = /^(\d\d\d)\s(.*)/;
var RE_MULTI = /^(\d\d\d)-/;
/**
* Receives a stream of responses from the server and filters
* them before pushing them back into the stream. The filtering is
* necessary to detect multiline responses, in which several responses from
* the server belong to a single command.
*/
function responseHandler() {
var buffer = [];
var currentCode = 0;
return function(line) {
var simpleRes = RE_RES.exec(line);
var multiRes;
var code;
if (simpleRes) {
code = parseInt(simpleRes[1], 10);
if (buffer.length) {
buffer.push(line);
if (currentCode === code) {
line = buffer.join("\n");
buffer = [];
currentCode = 0;
}
}
return { code: code, text: line };
}
else {
if (!buffer.length && (multiRes = RE_MULTI.exec(line))) {
currentCode = parseInt(multiRes[1], 10);
}
buffer.push(line.toString());
}
}
}
module.exports = responseHandler;