<?php
/**
 * PHPInSimMod - File Module
 * @package PRISM
 * @subpackage File
*/

class file {
    const EXTENSIONS = array(
        '3gp' => 'video/3gpp',
        'a' => 'application/octet-stream',
        'ai' => 'application/postscript',
        'aif' => 'audio/x-aiff',
        'aiff' => 'audio/x-aiff',
        'asc' => 'application/pgp-signature',
        'asf' => 'video/x-ms-asf',
        'asm' => 'text/x-asm',
        'asx' => 'video/x-ms-asf',
        'atom' => 'application/atom+xml',
        'au' => 'audio/basic',
        'avi' => 'video/x-msvideo',
        'bat' => 'application/x-msdownload',
        'bin' => 'application/octet-stream',
        'bmp' => 'image/bmp',
        'bz2' => 'application/x-bzip2',
        'c' => 'text/x-c',
        'cab' => 'application/vndms-cab-compressed',
        'cc' => 'text/x-c',
        'chm' => 'application/vndms-htmlhelp',
        'class' => 'application/octet-stream',
        'com' => 'application/x-msdownload',
        'conf' => 'text/plain',
        'cpp' => 'text/x-c',
        'crt' => 'application/x-x509-ca-cert',
        'css' => 'text/css',
        'csv' => 'text/csv',
        'cxx' => 'text/x-c',
        'deb' => 'application/x-debian-package',
        'der' => 'application/x-x509-ca-cert',
        'diff' => 'text/x-diff',
        'djv' => 'image/vnddjvu',
        'djvu' => 'image/vnddjvu',
        'dll' => 'application/x-msdownload',
        'dmg' => 'application/octet-stream',
        'doc' => 'application/msword',
        'dot' => 'application/msword',
        'dtd' => 'application/xml-dtd',
        'dvi' => 'application/x-dvi',
        'ear' => 'application/java-archive',
        'eml' => 'message/rfc822',
        'eps' => 'application/postscript',
        'exe' => 'application/x-msdownload',
        'f' => 'text/x-fortran',
        'f77' => 'text/x-fortran',
        'f90' => 'text/x-fortran',
        'flv' => 'video/x-flv',
        'for' => 'text/x-fortran',
        'gem' => 'application/octet-stream',
        'gemspec' => 'text/x-scriptruby',
        'gif' => 'image/gif',
        'gz' => 'application/x-gzip',
        'h' => 'text/x-c',
        'hh' => 'text/x-c',
        'htm' => 'text/html',
        'html' => 'text/html',
        'ico' => 'image/vndmicrosofticon',
        'ics' => 'text/calendar',
        'ifb' => 'text/calendar',
        'iso' => 'application/octet-stream',
        'jar' => 'application/java-archive',
        'java' => 'text/x-java-source',
        'jnlp' => 'application/x-java-jnlp-file',
        'jpeg' => 'image/jpeg',
        'jpg' => 'image/jpeg',
        'js' => 'application/javascript',
        'json' => 'application/json',
        'log' => 'text/plain',
        'm3u' => 'audio/x-mpegurl',
        'm4v' => 'video/mp4',
        'man' => 'text/troff',
        'mathml' => 'application/mathml+xml',
        'mbox' => 'application/mbox',
        'mdoc' => 'text/troff',
        'me' => 'text/troff',
        'mid' => 'audio/midi',
        'midi' => 'audio/midi',
        'mime' => 'message/rfc822',
        'mml' => 'application/mathml+xml',
        'mng' => 'video/x-mng',
        'mov' => 'video/quicktime',
        'mp3' => 'audio/mpeg',
        'mp4' => 'video/mp4',
        'mp4v' => 'video/mp4',
        'mpeg' => 'video/mpeg',
        'mpg' => 'video/mpeg',
        'ms' => 'text/troff',
        'msi' => 'application/x-msdownload',
        'odp' => 'application/vndoasisopendocumentpresentation',
        'ods' => 'application/vndoasisopendocumentspreadsheet',
        'odt' => 'application/vndoasisopendocumenttext',
        'ogg' => 'application/ogg',
        'p' => 'text/x-pascal',
        'pas' => 'text/x-pascal',
        'pbm' => 'image/x-portable-bitmap',
        'pdf' => 'application/pdf',
        'pem' => 'application/x-x509-ca-cert',
        'pgm' => 'image/x-portable-graymap',
        'pgp' => 'application/pgp-encrypted',
        'pkg' => 'application/octet-stream',
        'pl' => 'text/x-scriptperl',
        'pm' => 'text/x-scriptperl-module',
        'png' => 'image/png',
        'pnm' => 'image/x-portable-anymap',
        'ppm' => 'image/x-portable-pixmap',
        'pps' => 'application/vndms-powerpoint',
        'ppt' => 'application/vndms-powerpoint',
        'ps' => 'application/postscript',
        'psd' => 'image/vndadobephotoshop',
        'py' => 'text/x-scriptpython',
        'qt' => 'video/quicktime',
        'ra' => 'audio/x-pn-realaudio',
        'rake' => 'text/x-scriptruby',
        'ram' => 'audio/x-pn-realaudio',
        'rar' => 'application/x-rar-compressed',
        'rb' => 'text/x-scriptruby',
        'rdf' => 'application/rdf+xml',
        'roff' => 'text/troff',
        'rpm' => 'application/x-redhat-package-manager',
        'rss' => 'application/rss+xml',
        'rtf' => 'application/rtf',
        'ru' => 'text/x-scriptruby',
        's' => 'text/x-asm',
        'sgm' => 'text/sgml',
        'sgml' => 'text/sgml',
        'sh' => 'application/x-sh',
        'sig' => 'application/pgp-signature',
        'snd' => 'audio/basic',
        'so' => 'application/octet-stream',
        'svg' => 'image/svg+xml',
        'svgz' => 'image/svg+xml',
        'swf' => 'application/x-shockwave-flash',
        't' => 'text/troff',
        'tar' => 'application/x-tar',
        'tbz' => 'application/x-bzip-compressed-tar',
        'tcl' => 'application/x-tcl',
        'tex' => 'application/x-tex',
        'texi' => 'application/x-texinfo',
        'texinfo' => 'application/x-texinfo',
        'text' => 'text/plain',
        'tif' => 'image/tiff',
        'tiff' => 'image/tiff',
        'torrent' => 'application/x-bittorrent',
        'tr' => 'text/troff',
        'txt' => 'text/plain',
        'vcf' => 'text/x-vcard',
        'vcs' => 'text/x-vcalendar',
        'vrml' => 'model/vrml',
        'war' => 'application/java-archive',
        'wav' => 'audio/x-wav',
        'wma' => 'audio/x-ms-wma',
        'wmv' => 'video/x-ms-wmv',
        'wmx' => 'video/x-ms-wmx',
        'wrl' => 'model/vrml',
        'wsdl' => 'application/wsdl+xml',
        'xbm' => 'image/x-xbitmap',
        'xhtml' => 'application/xhtml+xml',
        'xls' => 'application/vndms-excel',
        'xml' => 'application/xml',
        'xpm' => 'image/x-xpixmap',
        'xsl' => 'application/xml',
        'xslt' => 'application/xslt+xml',
        'yaml' => 'text/yaml',
        'yml' => 'text/yaml',
        'zip' => 'application/zip'
    );

    public static function extensionLookup($extension, $fallback = 'application/octet-stream') {
        return (isset(SELF::EXTENSIONS[$extension])) ? SELF::EXTENSIONS[$extension] : $fallback;
    }

    public static function getKnownExtensions() {
        return array_keys(SELF::EXTENSIONS);
    }

    public static function getKnownStreams() {
        return array_values(SELF::EXTENSIONS);
    }
}
?>
