Needs a lot of cleanup. Data has been de-duplicated, and where identical copies existed, one of them has been replaced with a symlink. Some files have been excluded, such as binaries, installers and debug dumps. Some of that may still be present.
119 lines
No EOL
3.1 KiB
JavaScript
119 lines
No EOL
3.1 KiB
JavaScript
//
|
|
// httpMultiPart.js
|
|
// examples/libraries
|
|
//
|
|
// Copyright 2014 High Fidelity, Inc.
|
|
//
|
|
// Distributed under the Apache License, Version 2.0.
|
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
|
//
|
|
|
|
|
|
httpMultiPart = (function () {
|
|
var that = {},
|
|
parts,
|
|
byteLength,
|
|
boundaryString,
|
|
crlf;
|
|
|
|
function clear() {
|
|
boundaryString = "--boundary_" + String(Uuid.generate()).slice(1, 36) + "=";
|
|
parts = [];
|
|
byteLength = 0;
|
|
crlf = "";
|
|
}
|
|
that.clear = clear;
|
|
|
|
function boundary() {
|
|
return boundaryString.slice(2);
|
|
}
|
|
that.boundary = boundary;
|
|
|
|
function length() {
|
|
return byteLength;
|
|
}
|
|
that.length = length;
|
|
|
|
function add(object) {
|
|
// - name, string
|
|
// - name, buffer
|
|
var buffer,
|
|
string,
|
|
stringBuffer,
|
|
compressedBuffer;
|
|
|
|
if (object.name === undefined) {
|
|
|
|
throw new Error("Item to add to HttpMultiPart must have a name");
|
|
|
|
} else if (object.string !== undefined) {
|
|
//--<boundary>=
|
|
//Content-Disposition: form-data; name="model_name"
|
|
//
|
|
//<string>
|
|
|
|
string = crlf + boundaryString + "\r\n"
|
|
+ "Content-Disposition: form-data; name=\"" + object.name + "\"\r\n"
|
|
+ "\r\n"
|
|
+ object.string;
|
|
buffer = string.toArrayBuffer();
|
|
|
|
} else if (object.buffer !== undefined) {
|
|
//--<boundary>=
|
|
//Content-Disposition: form-data; name="fbx"; filename="<filename>"
|
|
//Content-Type: application/octet-stream
|
|
//
|
|
//<buffer>
|
|
|
|
string = crlf + boundaryString + "\r\n"
|
|
+ "Content-Disposition: form-data; name=\"" + object.name
|
|
+ "\"; filename=\"" + object.buffer.filename + "\"\r\n"
|
|
+ "Content-Type: application/octet-stream\r\n"
|
|
+ "\r\n";
|
|
stringBuffer = string.toArrayBuffer();
|
|
|
|
compressedBuffer = object.buffer.buffer.compress();
|
|
buffer = new Uint8Array(stringBuffer.byteLength + compressedBuffer.byteLength);
|
|
buffer.set(new Uint8Array(stringBuffer));
|
|
buffer.set(new Uint8Array(compressedBuffer), stringBuffer.byteLength);
|
|
|
|
} else {
|
|
|
|
throw new Error("Item to add to HttpMultiPart not recognized");
|
|
}
|
|
|
|
byteLength += buffer.byteLength;
|
|
parts.push(buffer);
|
|
|
|
crlf = "\r\n";
|
|
|
|
return true;
|
|
}
|
|
that.add = add;
|
|
|
|
function response() {
|
|
var buffer,
|
|
index,
|
|
str,
|
|
i;
|
|
|
|
str = crlf + boundaryString + "--\r\n";
|
|
buffer = str.toArrayBuffer();
|
|
byteLength += buffer.byteLength;
|
|
parts.push(buffer);
|
|
|
|
buffer = new Uint8Array(byteLength);
|
|
index = 0;
|
|
for (i = 0; i < parts.length; i += 1) {
|
|
buffer.set(new Uint8Array(parts[i]), index);
|
|
index += parts[i].byteLength;
|
|
}
|
|
|
|
return buffer;
|
|
}
|
|
that.response = response;
|
|
|
|
clear();
|
|
|
|
return that;
|
|
}()); |