Files
UXP/devtools/client/webconsole/net/utils/net.js
T

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;