Added MimeTypes.js, based on Ubuntu /etc/mime.types, to get the contentType based on the filename extension.
diff --git a/js/ccnxProtocol/modules/ndn-js.jsm b/js/ccnxProtocol/modules/ndn-js.jsm
index 39c7661..30641f7 100644
--- a/js/ccnxProtocol/modules/ndn-js.jsm
+++ b/js/ccnxProtocol/modules/ndn-js.jsm
@@ -5,7 +5,8 @@
* See COPYING for copyright and distribution information.
*/
-var EXPORTED_SYMBOLS = ["NDN", "Closure", "Name", "Interest", "ContentObject", "DataUtils"];
+var EXPORTED_SYMBOLS = ["NDN", "Closure", "Name", "Interest", "ContentObject",
+ "DataUtils", "MimeTypes"];
Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
Components.utils.import("resource://gre/modules/NetUtil.jsm");
@@ -684,16 +685,8 @@
}
};
-Name.prototype.getName=function(){
-
- var output = "";
-
- for(var i=0;i<this.components.length;i++){
- output+= "/"+ DataUtils.toString(this.components[i]);
- }
-
- return output;
-
+Name.prototype.getName = function() {
+ return this.to_uri();
};
Name.makeBlob=function(name){
@@ -712,28 +705,51 @@
return blobArrays;
};
-Name.createNameArray=function(name) {
- var array = name.split('/');
- var colonIndex = array[0].indexOf(':');
- if (colonIndex >= 0) {
- name = name.substr(colonIndex + 1, name.length - colonIndex - 1);
- array = name.split('/');
+Name.createNameArray = function(name) {
+ name = name.trim();
+ if (name.length <= 0)
+ return [];
+
+ var iColon = name.indexOf(':');
+ if (iColon >= 0) {
+ // Make sure the colon came before a '/'.
+ var iFirstSlash = name.indexOf('/');
+ if (iFirstSlash < 0 || iColon < iFirstSlash)
+ // Omit the leading protocol such as ccnx:
+ name = name.substr(iColon + 1, name.length - iColon - 1).trim();
}
-
- if(name[0]=="/")
- array=array.slice(1,array.length);
- if(name[name.length-1]=="/")
- array=array.slice(0,array.length-1);
+
+ if (name[0] == '/') {
+ if (name.length >= 2 && name[1] == '/') {
+ // Strip the authority following "//".
+ var iAfterAuthority = name.indexOf('/', 2);
+ if (iAfterAuthority < 0)
+ // Unusual case: there was only an authority.
+ return [];
+ else
+ name = name.substr(iAfterAuthority + 1, name.length - iAfterAuthority - 1).trim();
+ }
+ else
+ name = name.substr(1, name.length - 1).trim();
+ }
+
+ var array = name.split('/');
// Unescape the components.
for (var i = 0; i < array.length; ++i) {
- var component = unescape(array[i]);
+ var component = unescape(array[i].trim());
if (component.match(/[^.]/) == null) {
- // Special case for component of only periods. Remove 3 periods.
- if (component.length <= 3)
- array[i] = "";
+ // Special case for component of only periods.
+ if (component.length <= 2) {
+ // Zero, one or two periods is illegal. Ignore this componenent to be
+ // consistent with the C implmentation.
+ // This also gets rid of a trailing '/'.
+ array = array.slice(0, i).concat(array.slice(i + 1, array.length));
+ --i;
+ }
else
+ // Remove 3 periods.
array[i] = component.substr(3, component.length - 3);
}
else
@@ -3984,6 +4000,549 @@
return result;
};
+var MimeTypes = {
+ /*
+ * Based on filename, return an object with properties contentType and charset.
+ */
+ getContentTypeAndCharset: function(filename) {
+ var iDot = filename.lastIndexOf('.');
+ if (iDot >= 0) {
+ var extension = filename.substr(iDot + 1, filename.length - iDot - 1);
+ var contentType = MimeTypes[extension];
+ if (contentType != null) {
+ var charset = "ISO-8859-1";
+ if (contentType.split('/')[0] == "text")
+ charset = "utf-8";
+ return { contentType: contentType, charset: charset };
+ }
+ }
+
+ // Use a default.
+ return { contentType: "text/html", charset: "utf-8" };
+ },
+
+ /* For each file extension, define the MIME type.
+ */
+ "323": "text/h323",
+ "%": "application/x-trash",
+ "~": "application/x-trash",
+ "3gp": "video/3gpp",
+ "7z": "application/x-7z-compressed",
+ "abw": "application/x-abiword",
+ "ai": "application/postscript",
+ "aif": "audio/x-aiff",
+ "aifc": "audio/x-aiff",
+ "aiff": "audio/x-aiff",
+ "alc": "chemical/x-alchemy",
+ "amr": "audio/amr",
+ "anx": "application/annodex",
+ "apk": "application/vnd.android.package-archive",
+ "art": "image/x-jg",
+ "asc": "text/plain",
+ "asf": "video/x-ms-asf",
+ "asx": "video/x-ms-asf",
+ "asn": "chemical/x-ncbi-asn1",
+ "atom": "application/atom+xml",
+ "atomcat": "application/atomcat+xml",
+ "atomsrv": "application/atomserv+xml",
+ "au": "audio/basic",
+ "snd": "audio/basic",
+ "avi": "video/x-msvideo",
+ "awb": "audio/amr-wb",
+ "axa": "audio/annodex",
+ "axv": "video/annodex",
+ "b": "chemical/x-molconn-Z",
+ "bak": "application/x-trash",
+ "bat": "application/x-msdos-program",
+ "bcpio": "application/x-bcpio",
+ "bib": "text/x-bibtex",
+ "bin": "application/octet-stream",
+ "bmp": "image/x-ms-bmp",
+ "boo": "text/x-boo",
+ "book": "application/x-maker",
+ "brf": "text/plain",
+ "bsd": "chemical/x-crossfire",
+ "c": "text/x-csrc",
+ "c++": "text/x-c++src",
+ "c3d": "chemical/x-chem3d",
+ "cab": "application/x-cab",
+ "cac": "chemical/x-cache",
+ "cache": "chemical/x-cache",
+ "cap": "application/cap",
+ "cascii": "chemical/x-cactvs-binary",
+ "cat": "application/vnd.ms-pki.seccat",
+ "cbin": "chemical/x-cactvs-binary",
+ "cbr": "application/x-cbr",
+ "cbz": "application/x-cbz",
+ "cc": "text/x-c++src",
+ "cda": "application/x-cdf",
+ "cdf": "application/x-cdf",
+ "cdr": "image/x-coreldraw",
+ "cdt": "image/x-coreldrawtemplate",
+ "cdx": "chemical/x-cdx",
+ "cdy": "application/vnd.cinderella",
+ "cer": "chemical/x-cerius",
+ "chm": "chemical/x-chemdraw",
+ "chrt": "application/x-kchart",
+ "cif": "chemical/x-cif",
+ "class": "application/java-vm",
+ "cls": "text/x-tex",
+ "cmdf": "chemical/x-cmdf",
+ "cml": "chemical/x-cml",
+ "cod": "application/vnd.rim.cod",
+ "com": "application/x-msdos-program",
+ "cpa": "chemical/x-compass",
+ "cpio": "application/x-cpio",
+ "cpp": "text/x-c++src",
+ "cpt": "image/x-corelphotopaint",
+ "cr2": "image/x-canon-cr2",
+ "crl": "application/x-pkcs7-crl",
+ "crt": "application/x-x509-ca-cert",
+ "crw": "image/x-canon-crw",
+ "csd": "audio/csound",
+ "csf": "chemical/x-cache-csf",
+ "csh": "application/x-csh",
+ "csml": "chemical/x-csml",
+ "csm": "chemical/x-csml",
+ "css": "text/css",
+ "csv": "text/csv",
+ "ctab": "chemical/x-cactvs-binary",
+ "ctx": "chemical/x-ctx",
+ "cu": "application/cu-seeme",
+ "cub": "chemical/x-gaussian-cube",
+ "cxf": "chemical/x-cxf",
+ "cef": "chemical/x-cxf",
+ "cxx": "text/x-c++src",
+ "d": "text/x-dsrc",
+ "dat": "application/x-ns-proxy-autoconfig",
+ "davmount": "application/davmount+xml",
+ "dcr": "application/x-director",
+ "deb": "application/x-debian-package",
+ "dif": "video/dv",
+ "dv": "video/dv",
+ "diff": "text/x-diff",
+ "patch": "text/x-diff",
+ "dir": "application/x-director",
+ "djvu": "image/vnd.djvu",
+ "djv": "image/vnd.djvu",
+ "dl": "video/dl",
+ "dll": "application/x-msdos-program",
+ "dmg": "application/x-apple-diskimage",
+ "dms": "application/x-dms",
+ "doc": "application/msword",
+ "docm": "application/vnd.ms-word.document.macroEnabled.12",
+ "docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
+ "dot": "application/msword",
+ "dotm": "application/vnd.ms-word.template.macroEnabled.12",
+ "dotx": "application/vnd.openxmlformats-officedocument.wordprocessingml.template",
+ "dvi": "application/x-dvi",
+ "dxr": "application/x-director",
+ "emb": "chemical/x-embl-dl-nucleotide",
+ "embl": "chemical/x-embl-dl-nucleotide",
+ "eml": "message/rfc822",
+ "eps": "application/postscript",
+ "eps2": "application/postscript",
+ "eps3": "application/postscript",
+ "epsf": "application/postscript",
+ "epsi": "application/postscript",
+ "erf": "image/x-epson-erf",
+ "es": "application/ecmascript",
+ "etx": "text/x-setext",
+ "exe": "application/x-msdos-program",
+ "ez": "application/andrew-inset",
+ "fb": "application/x-maker",
+ "fbdoc": "application/x-maker",
+ "fch": "chemical/x-gaussian-checkpoint",
+ "fchk": "chemical/x-gaussian-checkpoint",
+ "fig": "application/x-xfig",
+ "flac": "audio/flac",
+ "fli": "video/fli",
+ "flv": "video/x-flv",
+ "fm": "application/x-maker",
+ "frame": "application/x-maker",
+ "frm": "application/x-maker",
+ "gal": "chemical/x-gaussian-log",
+ "gam": "chemical/x-gamess-input",
+ "gamin": "chemical/x-gamess-input",
+ "gan": "application/x-ganttproject",
+ "gau": "chemical/x-gaussian-input",
+ "gcd": "text/x-pcs-gcd",
+ "gcf": "application/x-graphing-calculator",
+ "gcg": "chemical/x-gcg8-sequence",
+ "gen": "chemical/x-genbank",
+ "gf": "application/x-tex-gf",
+ "gif": "image/gif",
+ "gjc": "chemical/x-gaussian-input",
+ "gjf": "chemical/x-gaussian-input",
+ "gl": "video/gl",
+ "gnumeric": "application/x-gnumeric",
+ "gpt": "chemical/x-mopac-graph",
+ "gsf": "application/x-font",
+ "gsm": "audio/x-gsm",
+ "gtar": "application/x-gtar",
+ "h": "text/x-chdr",
+ "h++": "text/x-c++hdr",
+ "hdf": "application/x-hdf",
+ "hh": "text/x-c++hdr",
+ "hin": "chemical/x-hin",
+ "hpp": "text/x-c++hdr",
+ "hqx": "application/mac-binhex40",
+ "hs": "text/x-haskell",
+ "hta": "application/hta",
+ "htc": "text/x-component",
+ "htm": "text/html",
+ "html": "text/html",
+ "hxx": "text/x-c++hdr",
+ "ica": "application/x-ica",
+ "ice": "x-conference/x-cooltalk",
+ "ico": "image/x-icon",
+ "ics": "text/calendar",
+ "icz": "text/calendar",
+ "ief": "image/ief",
+ "igs": "model/iges",
+ "iges": "model/iges",
+ "iii": "application/x-iphone",
+ "info": "application/x-info",
+ "inp": "chemical/x-gamess-input",
+ "ins": "application/x-internet-signup",
+ "iso": "application/x-iso9660-image",
+ "isp": "application/x-internet-signup",
+ "istr": "chemical/x-isostar",
+ "ist": "chemical/x-isostar",
+ "jad": "text/vnd.sun.j2me.app-descriptor",
+ "jam": "application/x-jam",
+ "jar": "application/java-archive",
+ "java": "text/x-java",
+ "jdx": "chemical/x-jcamp-dx",
+ "dx": "chemical/x-jcamp-dx",
+ "jmz": "application/x-jmol",
+ "jng": "image/x-jng",
+ "jnlp": "application/x-java-jnlp-file",
+ "jpe": "image/jpeg",
+ "jpeg": "image/jpeg",
+ "jpg": "image/jpeg",
+ "js": "application/javascript",
+ "json": "application/json",
+ "kar": "audio/midi",
+ "key": "application/pgp-keys",
+ "kil": "application/x-killustrator",
+ "kin": "chemical/x-kinemage",
+ "kml": "application/vnd.google-earth.kml+xml",
+ "kmz": "application/vnd.google-earth.kmz",
+ "kpr": "application/x-kpresenter",
+ "kpt": "application/x-kpresenter",
+ "ksp": "application/x-kspread",
+ "kwd": "application/x-kword",
+ "kwt": "application/x-kword",
+ "latex": "application/x-latex",
+ "lha": "application/x-lha",
+ "lhs": "text/x-literate-haskell",
+ "lin": "application/bbolin",
+ "lsf": "video/x-la-asf",
+ "lsx": "video/x-la-asf",
+ "ltx": "text/x-tex",
+ "lyx": "application/x-lyx",
+ "lzh": "application/x-lzh",
+ "lzx": "application/x-lzx",
+ "m3g": "application/m3g",
+ "m3u": "audio/mpegurl",
+ "m3u8": "application/x-mpegURL",
+ "m4a": "audio/mpeg",
+ "maker": "application/x-maker",
+ "man": "application/x-troff-man",
+ "manifest": "text/cache-manifest",
+ "mcif": "chemical/x-mmcif",
+ "mcm": "chemical/x-macmolecule",
+ "mdb": "application/msaccess",
+ "me": "application/x-troff-me",
+ "mesh": "model/mesh",
+ "mid": "audio/midi",
+ "midi": "audio/midi",
+ "mif": "application/x-mif",
+ "mm": "application/x-freemind",
+ "mmd": "chemical/x-macromodel-input",
+ "mmod": "chemical/x-macromodel-input",
+ "mmf": "application/vnd.smaf",
+ "mml": "text/mathml",
+ "mng": "video/x-mng",
+ "moc": "text/x-moc",
+ "mol": "chemical/x-mdl-molfile",
+ "mol2": "chemical/x-mol2",
+ "moo": "chemical/x-mopac-out",
+ "mop": "chemical/x-mopac-input",
+ "mopcrt": "chemical/x-mopac-input",
+ "movie": "video/x-sgi-movie",
+ "mp2": "audio/mpeg",
+ "mp3": "audio/mpeg",
+ "mp4": "video/mp4",
+ "mpc": "chemical/x-mopac-input",
+ "mpe": "video/mpeg",
+ "mpeg": "video/mpeg",
+ "mpega": "audio/mpeg",
+ "mpg": "video/mpeg",
+ "mpga": "audio/mpeg",
+ "mph": "application/x-comsol",
+ "mpv": "video/x-matroska",
+ "mkv": "video/x-matroska",
+ "ms": "application/x-troff-ms",
+ "msh": "model/mesh",
+ "msi": "application/x-msi",
+ "mvb": "chemical/x-mopac-vib",
+ "mxf": "application/mxf",
+ "mxu": "video/vnd.mpegurl",
+ "nb": "application/mathematica",
+ "nbp": "application/mathematica",
+ "nc": "application/x-netcdf",
+ "nef": "image/x-nikon-nef",
+ "nwc": "application/x-nwc",
+ "o": "application/x-object",
+ "oda": "application/oda",
+ "odb": "application/vnd.oasis.opendocument.database",
+ "odc": "application/vnd.oasis.opendocument.chart",
+ "odf": "application/vnd.oasis.opendocument.formula",
+ "odg": "application/vnd.oasis.opendocument.graphics",
+ "odi": "application/vnd.oasis.opendocument.image",
+ "odm": "application/vnd.oasis.opendocument.text-master",
+ "odp": "application/vnd.oasis.opendocument.presentation",
+ "ods": "application/vnd.oasis.opendocument.spreadsheet",
+ "odt": "application/vnd.oasis.opendocument.text",
+ "oga": "audio/ogg",
+ "ogg": "audio/ogg",
+ "ogv": "video/ogg",
+ "ogx": "application/ogg",
+ "old": "application/x-trash",
+ "one": "application/onenote",
+ "onepkg": "application/onenote",
+ "onetmp": "application/onenote",
+ "onetoc2": "application/onenote",
+ "orc": "audio/csound",
+ "orf": "image/x-olympus-orf",
+ "otg": "application/vnd.oasis.opendocument.graphics-template",
+ "oth": "application/vnd.oasis.opendocument.text-web",
+ "otp": "application/vnd.oasis.opendocument.presentation-template",
+ "ots": "application/vnd.oasis.opendocument.spreadsheet-template",
+ "ott": "application/vnd.oasis.opendocument.text-template",
+ "oza": "application/x-oz-application",
+ "p": "text/x-pascal",
+ "pas": "text/x-pascal",
+ "p7r": "application/x-pkcs7-certreqresp",
+ "pac": "application/x-ns-proxy-autoconfig",
+ "pat": "image/x-coreldrawpattern",
+ "pbm": "image/x-portable-bitmap",
+ "pcap": "application/cap",
+ "pcf": "application/x-font",
+ "pcx": "image/pcx",
+ "pdb": "chemical/x-pdb",
+ "ent": "chemical/x-pdb",
+ "pdf": "application/pdf",
+ "pfa": "application/x-font",
+ "pfb": "application/x-font",
+ "pgm": "image/x-portable-graymap",
+ "pgn": "application/x-chess-pgn",
+ "pgp": "application/pgp-signature",
+ "php": "application/x-httpd-php",
+ "php3": "application/x-httpd-php3",
+ "php3p": "application/x-httpd-php3-preprocessed",
+ "php4": "application/x-httpd-php4",
+ "php5": "application/x-httpd-php5",
+ "phps": "application/x-httpd-php-source",
+ "pht": "application/x-httpd-php",
+ "phtml": "application/x-httpd-php",
+ "pk": "application/x-tex-pk",
+ "pl": "text/x-perl",
+ "pm": "text/x-perl",
+ "pls": "audio/x-scpls",
+ "png": "image/png",
+ "pnm": "image/x-portable-anymap",
+ "pot": "text/plain",
+ "potm": "application/vnd.ms-powerpoint.template.macroEnabled.12",
+ "potx": "application/vnd.openxmlformats-officedocument.presentationml.template",
+ "ppam": "application/vnd.ms-powerpoint.addin.macroEnabled.12",
+ "ppm": "image/x-portable-pixmap",
+ "pps": "application/vnd.ms-powerpoint",
+ "ppsm": "application/vnd.ms-powerpoint.slideshow.macroEnabled.12",
+ "ppsx": "application/vnd.openxmlformats-officedocument.presentationml.slideshow",
+ "ppt": "application/vnd.ms-powerpoint",
+ "pptm": "application/vnd.ms-powerpoint.presentation.macroEnabled.12",
+ "pptx": "application/vnd.openxmlformats-officedocument.presentationml.presentation",
+ "prf": "application/pics-rules",
+ "prt": "chemical/x-ncbi-asn1-ascii",
+ "ps": "application/postscript",
+ "psd": "image/x-photoshop",
+ "py": "text/x-python",
+ "pyc": "application/x-python-code",
+ "pyo": "application/x-python-code",
+ "qgs": "application/x-qgis",
+ "qt": "video/quicktime",
+ "mov": "video/quicktime",
+ "qtl": "application/x-quicktimeplayer",
+ "ra": "audio/x-realaudio",
+ "ram": "audio/x-pn-realaudio",
+ "rar": "application/rar",
+ "ras": "image/x-cmu-raster",
+ "rb": "application/x-ruby",
+ "rd": "chemical/x-mdl-rdfile",
+ "rdf": "application/rdf+xml",
+ "rdp": "application/x-rdp",
+ "rgb": "image/x-rgb",
+ "rhtml": "application/x-httpd-eruby",
+ "rm": "audio/x-pn-realaudio",
+ "roff": "application/x-troff",
+ "ros": "chemical/x-rosdal",
+ "rpm": "application/x-redhat-package-manager",
+ "rss": "application/rss+xml",
+ "rtf": "application/rtf",
+ "rtx": "text/richtext",
+ "rxn": "chemical/x-mdl-rxnfile",
+ "scala": "text/x-scala",
+ "sci": "application/x-scilab",
+ "sce": "application/x-scilab",
+ "sco": "audio/csound",
+ "scr": "application/x-silverlight",
+ "sct": "text/scriptlet",
+ "wsc": "text/scriptlet",
+ "sd": "chemical/x-mdl-sdfile",
+ "sdf": "chemical/x-mdl-sdfile",
+ "sd2": "audio/x-sd2",
+ "sda": "application/vnd.stardivision.draw",
+ "sdc": "application/vnd.stardivision.calc",
+ "sdd": "application/vnd.stardivision.impress",
+ "sds": "application/vnd.stardivision.chart",
+ "sdw": "application/vnd.stardivision.writer",
+ "ser": "application/java-serialized-object",
+ "sfv": "text/x-sfv",
+ "sgf": "application/x-go-sgf",
+ "sgl": "application/vnd.stardivision.writer-global",
+ "sh": "application/x-sh",
+ "shar": "application/x-shar",
+ "shp": "application/x-qgis",
+ "shtml": "text/html",
+ "shx": "application/x-qgis",
+ "sid": "audio/prs.sid",
+ "sik": "application/x-trash",
+ "silo": "model/mesh",
+ "sis": "application/vnd.symbian.install",
+ "sisx": "x-epoc/x-sisx-app",
+ "sit": "application/x-stuffit",
+ "sitx": "application/x-stuffit",
+ "skd": "application/x-koan",
+ "skm": "application/x-koan",
+ "skp": "application/x-koan",
+ "skt": "application/x-koan",
+ "sldm": "application/vnd.ms-powerpoint.slide.macroEnabled.12",
+ "sldx": "application/vnd.openxmlformats-officedocument.presentationml.slide",
+ "smi": "application/smil",
+ "smil": "application/smil",
+ "spc": "chemical/x-galactic-spc",
+ "spl": "application/futuresplash",
+ "spx": "audio/ogg",
+ "sql": "application/x-sql",
+ "src": "application/x-wais-source",
+ "stc": "application/vnd.sun.xml.calc.template",
+ "std": "application/vnd.sun.xml.draw.template",
+ "sti": "application/vnd.sun.xml.impress.template",
+ "stl": "application/sla",
+ "stw": "application/vnd.sun.xml.writer.template",
+ "sty": "text/x-tex",
+ "sv4cpio": "application/x-sv4cpio",
+ "sv4crc": "application/x-sv4crc",
+ "svg": "image/svg+xml",
+ "svgz": "image/svg+xml",
+ "sw": "chemical/x-swissprot",
+ "swf": "application/x-shockwave-flash",
+ "swfl": "application/x-shockwave-flash",
+ "sxc": "application/vnd.sun.xml.calc",
+ "sxd": "application/vnd.sun.xml.draw",
+ "sxg": "application/vnd.sun.xml.writer.global",
+ "sxi": "application/vnd.sun.xml.impress",
+ "sxm": "application/vnd.sun.xml.math",
+ "sxw": "application/vnd.sun.xml.writer",
+ "t": "application/x-troff",
+ "tar": "application/x-tar",
+ "taz": "application/x-gtar-compressed",
+ "tcl": "application/x-tcl",
+ "tk": "text/x-tcl",
+ "tex": "text/x-tex",
+ "texinfo": "application/x-texinfo",
+ "texi": "application/x-texinfo",
+ "text": "text/plain",
+ "tgf": "chemical/x-mdl-tgf",
+ "tgz": "application/x-gtar-compressed",
+ "thmx": "application/vnd.ms-officetheme",
+ "tiff": "image/tiff",
+ "tif": "image/tiff",
+ "tm": "text/texmacs",
+ "torrent": "application/x-bittorrent",
+ "tr": "application/x-troff",
+ "ts": "video/MP2T",
+ "tsp": "application/dsptype",
+ "tsv": "text/tab-separated-values",
+ "txt": "text/plain",
+ "udeb": "application/x-debian-package",
+ "uls": "text/iuls",
+ "ustar": "application/x-ustar",
+ "val": "chemical/x-ncbi-asn1-binary",
+ "aso": "chemical/x-ncbi-asn1-binary",
+ "vcd": "application/x-cdlink",
+ "vcf": "text/x-vcard",
+ "vcs": "text/x-vcalendar",
+ "vmd": "chemical/x-vmd",
+ "vms": "chemical/x-vamas-iso14976",
+ "vrm": "x-world/x-vrml",
+ "vsd": "application/vnd.visio",
+ "wad": "application/x-doom",
+ "wav": "audio/x-wav",
+ "wax": "audio/x-ms-wax",
+ "wbmp": "image/vnd.wap.wbmp",
+ "wbxml": "application/vnd.wap.wbxml",
+ "webm": "video/webm",
+ "wk": "application/x-123",
+ "wm": "video/x-ms-wm",
+ "wma": "audio/x-ms-wma",
+ "wmd": "application/x-ms-wmd",
+ "wml": "text/vnd.wap.wml",
+ "wmlc": "application/vnd.wap.wmlc",
+ "wmls": "text/vnd.wap.wmlscript",
+ "wmlsc": "application/vnd.wap.wmlscriptc",
+ "wmv": "video/x-ms-wmv",
+ "wmx": "video/x-ms-wmx",
+ "wmz": "application/x-ms-wmz",
+ "wp5": "application/vnd.wordperfect5.1",
+ "wpd": "application/vnd.wordperfect",
+ "wrl": "model/vrml",
+ "vrml": "model/vrml",
+ "wvx": "video/x-ms-wvx",
+ "wz": "application/x-wingz",
+ "x3d": "model/x3d+xml",
+ "x3db": "model/x3d+binary",
+ "x3dv": "model/x3d+vrml",
+ "xbm": "image/x-xbitmap",
+ "xcf": "application/x-xcf",
+ "xht": "application/xhtml+xml",
+ "xhtml": "application/xhtml+xml",
+ "xlam": "application/vnd.ms-excel.addin.macroEnabled.12",
+ "xlb": "application/vnd.ms-excel",
+ "xls": "application/vnd.ms-excel",
+ "xlsb": "application/vnd.ms-excel.sheet.binary.macroEnabled.12",
+ "xlsm": "application/vnd.ms-excel.sheet.macroEnabled.12",
+ "xlsx": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
+ "xlt": "application/vnd.ms-excel",
+ "xltm": "application/vnd.ms-excel.template.macroEnabled.12",
+ "xltx": "application/vnd.openxmlformats-officedocument.spreadsheetml.template",
+ "xml": "application/xml",
+ "xpi": "application/x-xpinstall",
+ "xpm": "image/x-xpixmap",
+ "xsd": "application/xml",
+ "xsl": "application/xml",
+ "xspf": "application/xspf+xml",
+ "xtel": "chemical/x-xtel",
+ "xul": "application/vnd.mozilla.xul+xml",
+ "xwd": "image/x-xwindowdump",
+ "xyz": "chemical/x-xyz",
+ "zip": "application/zip",
+ "zmt": "chemical/x-mopac-input"
+};
+
/*
* This file contains utilities to help encode and decode NDN objects.
* author: ucla-cs