Snippets

Stewart Webb ClientRequest snippet from softap-browser.js

Created by Stewart Webb
ClientRequest.prototype._onFinish = function() {
    var self = this;
    if (!self._destroyed) {
        var body, opts = self._opts, headersObj = self._headers;
        if (("POST" === opts.method || "PUT" === opts.method) && (body = capability.blobConstructor ? new global.Blob(self._body.map(function(buffer) {
            return buffer.toArrayBuffer()
        }), {
            type: (headersObj["content-type"] || {}).value || ""
        }) : Buffer.concat(self._body).toString()), "fetch" === self._mode) {
            var headers = keys(headersObj).map(function(name) {
                return [headersObj[name].name, headersObj[name].value]
            });
            global.fetch(self._opts.url, {
                method: self._opts.method,
                headers: headers,
                body: body,
                mode: "cors",
                credentials: opts.withCredentials ? "include": "same-origin"
            }).then(function(response) {
                self._fetchResponse = response, self._connect()
            }).then(void 0, function(reason) {
                self.emit("error", reason)
            })
        } else {
            var xhr = self._xhr = new global.XMLHttpRequest;
            try {
                xhr.open(self._opts.method, self._opts.url, !0)
            } catch (err) {
                return void process.nextTick(function() {
                    self.emit("error", err)
                })
            }
            "responseType"in xhr && (xhr.responseType = self._mode.split(":")[0]), "withCredentials"in xhr && (xhr.withCredentials=!!opts.withCredentials), "text" === self._mode && "overrideMimeType"in xhr && xhr.overrideMimeType("text/plain; charset=x-user-defined"), foreach(keys(headersObj), function(name) {
                xhr.setRequestHeader(headersObj[name].name, headersObj[name].value)
            }), self._response = null, xhr.onreadystatechange = function() {
                switch (xhr.readyState) {
                case rStates.LOADING:
                case rStates.DONE:
                    self._onXHRProgress()
                }
            }, "moz-chunked-arraybuffer" === self._mode && (xhr.onprogress = function() {
                self._onXHRProgress()
            }), xhr.onerror = function() {
                self._destroyed || self.emit("error", new Error("XHR error"))
            };
            try {
                xhr.send(body)
            } catch (err) {
                return void process.nextTick(function() {
                    self.emit("error", err)
                })
            }
        }
    }
}

Comments (0)

HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.