mirror of
https://github.com/roytam1/UXP.git
synced 2026-05-27 13:28:54 +00:00
135 lines
3.5 KiB
JavaScript
135 lines
3.5 KiB
JavaScript
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
"use strict";
|
|
|
|
const mimeCategoryMap = {
|
|
"text/plain": "txt",
|
|
"application/octet-stream": "bin",
|
|
"text/html": "html",
|
|
"text/xml": "html",
|
|
"application/xml": "html",
|
|
"application/rss+xml": "html",
|
|
"application/atom+xml": "html",
|
|
"application/xhtml+xml": "html",
|
|
"application/mathml+xml": "html",
|
|
"application/rdf+xml": "html",
|
|
"text/css": "css",
|
|
"application/x-javascript": "js",
|
|
"text/javascript": "js",
|
|
"application/javascript": "js",
|
|
"text/ecmascript": "js",
|
|
"application/ecmascript": "js",
|
|
"image/jpeg": "image",
|
|
"image/jpg": "image",
|
|
"image/gif": "image",
|
|
"image/png": "image",
|
|
"image/bmp": "image",
|
|
"application/x-shockwave-flash": "plugin",
|
|
"application/x-silverlight-app": "plugin",
|
|
"video/x-flv": "media",
|
|
"audio/mpeg3": "media",
|
|
"audio/x-mpeg-3": "media",
|
|
"video/mpeg": "media",
|
|
"video/x-mpeg": "media",
|
|
"video/webm": "media",
|
|
"video/mp4": "media",
|
|
"video/ogg": "media",
|
|
"audio/ogg": "media",
|
|
"application/ogg": "media",
|
|
"application/x-ogg": "media",
|
|
"application/x-midi": "media",
|
|
"audio/midi": "media",
|
|
"audio/x-mid": "media",
|
|
"audio/x-midi": "media",
|
|
"music/crescendo": "media",
|
|
"audio/wav": "media",
|
|
"audio/x-wav": "media",
|
|
"application/x-woff": "font",
|
|
"application/font-woff": "font",
|
|
"application/x-font-woff": "font",
|
|
"application/x-ttf": "font",
|
|
"application/x-font-ttf": "font",
|
|
"font/ttf": "font",
|
|
"font/woff": "font",
|
|
"application/x-otf": "font",
|
|
"application/x-font-otf": "font"
|
|
};
|
|
|
|
var NetUtils = {};
|
|
|
|
NetUtils.isImage = function (contentType) {
|
|
if (!contentType) {
|
|
return false;
|
|
}
|
|
|
|
contentType = contentType.split(";")[0];
|
|
contentType = contentType.trim();
|
|
return mimeCategoryMap[contentType] == "image";
|
|
};
|
|
|
|
NetUtils.isHTML = function (contentType) {
|
|
if (!contentType) {
|
|
return false;
|
|
}
|
|
|
|
contentType = contentType.split(";")[0];
|
|
contentType = contentType.trim();
|
|
return mimeCategoryMap[contentType] == "html";
|
|
};
|
|
|
|
NetUtils.getHeaderValue = function (headers, name) {
|
|
if (!headers) {
|
|
return null;
|
|
}
|
|
|
|
name = name.toLowerCase();
|
|
for (let i = 0; i < headers.length; ++i) {
|
|
let headerName = headers[i].name.toLowerCase();
|
|
if (headerName == name) {
|
|
return headers[i].value;
|
|
}
|
|
}
|
|
};
|
|
|
|
NetUtils.parseXml = function (content) {
|
|
let contentType = content.mimeType.split(";")[0];
|
|
contentType = contentType.trim();
|
|
|
|
let parser = new DOMParser();
|
|
let doc = parser.parseFromString(content.text, contentType);
|
|
let root = doc.documentElement;
|
|
|
|
// Error handling
|
|
let nsURI = "http://www.mozilla.org/newlayout/xml/parsererror.xml";
|
|
if (root.namespaceURI == nsURI && root.nodeName == "parsererror") {
|
|
return null;
|
|
}
|
|
|
|
return doc;
|
|
};
|
|
|
|
NetUtils.isURLEncodedRequest = function (file) {
|
|
let mimeType = "application/x-www-form-urlencoded";
|
|
|
|
let postData = file.request.postData;
|
|
if (postData && postData.text) {
|
|
let text = postData.text.toLowerCase();
|
|
if (text.startsWith("content-type: " + mimeType)) {
|
|
return true;
|
|
}
|
|
}
|
|
|
|
let value = NetUtils.getHeaderValue(file.request.headers, "content-type");
|
|
return value && value.startsWith(mimeType);
|
|
};
|
|
|
|
NetUtils.isMultiPartRequest = function (file) {
|
|
let mimeType = "multipart/form-data";
|
|
let value = NetUtils.getHeaderValue(file.request.headers, "content-type");
|
|
return value && value.startsWith(mimeType);
|
|
};
|
|
|
|
// Exports from this module
|
|
module.exports = NetUtils;
|