Private/Get-AtwsMimeMapping.ps1

<#
    .COPYRIGHT
    Copyright (c) Hugo Klemmestad. All rights reserved. Licensed under the MIT license.
    See https://github.com/ecitsolutions/Autotask/blob/master/LICENSE.md for license information.
#>

Function Get-AtwsMimeMapping {
    <#
            .SYNOPSIS
                This function reads the cachefile into memory.
            .DESCRIPTION
                This function determines the correct path to a cache file and imports it.
                Then it creates a shadow cache for the current Autotask tenant.
            .INPUTS
                Nothing.
            .OUTPUTS
                Nothing, but the cache property of the SOAP Client object is filled.
            .EXAMPLE
                Initialize-AtwsRamCache
                Loads the cache from disk
            .NOTES
                NAME: Initialize-AtwsRamCache
            .LINK
    #>

    [CmdLetBinding(
    )]
  
    Param(
        [Parameter(
            Mandatory = $true,
            Position = 0,
            ValueFromPipelineByPropertyName = $true
        )]
        [string]
        $Extension
    )

    begin {
        Write-Verbose -Message ('{0}: trying to determine correct location for dynamic module cache.'-f $MyInvocation.MyCommand.Name)    
    
        #Region MIMEMappingTable
        $mimeMapping = @{
            ".323"         = "text/h323"
            ".aaf"         = "application/octet-stream"
            ".aca"         = "application/octet-stream"
            ".accdb"       = "application/msaccess"
            ".accde"       = "application/msaccess"
            ".accdt"       = "application/msaccess"
            ".acx"         = "application/internet-property-stream"
            ".afm"         = "application/octet-stream"
            ".ai"          = "application/postscript"
            ".aif"         = "audio/x-aiff"
            ".aifc"        = "audio/aiff"
            ".aiff"        = "audio/aiff"
            ".application" = "application/x-ms-application"
            ".art"         = "image/x-jg"
            ".asd"         = "application/octet-stream"
            ".asf"         = "video/x-ms-asf"
            ".asi"         = "application/octet-stream"
            ".asm"         = "text/plain"
            ".asr"         = "video/x-ms-asf"
            ".asx"         = "video/x-ms-asf"
            ".atom"        = "application/atom+xml"
            ".au"          = "audio/basic"
            ".avi"         = "video/x-msvideo"
            ".axs"         = "application/olescript"
            ".bas"         = "text/plain"
            ".bcpio"       = "application/x-bcpio"
            ".bin"         = "application/octet-stream"
            ".bmp"         = "image/bmp"
            ".c"           = "text/plain"
            ".cab"         = "application/octet-stream"
            ".calx"        = "application/vnd.ms-office.calx"
            ".cat"         = "application/vnd.ms-pki.seccat"
            ".cdf"         = "application/x-cdf"
            ".chm"         = "application/octet-stream"
            ".class"       = "application/x-java-applet"
            ".clp"         = "application/x-msclip"
            ".cmx"         = "image/x-cmx"
            ".cnf"         = "text/plain"
            ".cod"         = "image/cis-cod"
            ".cpio"        = "application/x-cpio"
            ".cpp"         = "text/plain"
            ".crd"         = "application/x-mscardfile"
            ".crl"         = "application/pkix-crl"
            ".crt"         = "application/x-x509-ca-cert"
            ".csh"         = "application/x-csh"
            ".css"         = "text/css"
            ".csv"         = "application/octet-stream"
            ".cur"         = "application/octet-stream"
            ".dcr"         = "application/x-director"
            ".deploy"      = "application/octet-stream"
            ".der"         = "application/x-x509-ca-cert"
            ".dib"         = "image/bmp"
            ".dir"         = "application/x-director"
            ".disco"       = "text/xml"
            ".dll"         = "application/x-msdownload"
            ".dll.config"  = "text/xml"
            ".dlm"         = "text/dlm"
            ".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"
            ".dsp"         = "application/octet-stream"
            ".dtd"         = "text/xml"
            ".dvi"         = "application/x-dvi"
            ".dwf"         = "drawing/x-dwf"
            ".dwp"         = "application/octet-stream"
            ".dxr"         = "application/x-director"
            ".eml"         = "message/rfc822"
            ".emz"         = "application/octet-stream"
            ".eot"         = "application/octet-stream"
            ".eps"         = "application/postscript"
            ".etx"         = "text/x-setext"
            ".evy"         = "application/envoy"
            ".exe"         = "application/octet-stream"
            ".exe.config"  = "text/xml"
            ".fdf"         = "application/vnd.fdf"
            ".fif"         = "application/fractals"
            ".fla"         = "application/octet-stream"
            ".flr"         = "x-world/x-vrml"
            ".flv"         = "video/x-flv"
            ".gif"         = "image/gif"
            ".gtar"        = "application/x-gtar"
            ".gz"          = "application/x-gzip"
            ".h"           = "text/plain"
            ".hdf"         = "application/x-hdf"
            ".hdml"        = "text/x-hdml"
            ".hhc"         = "application/x-oleobject"
            ".hhk"         = "application/octet-stream"
            ".hhp"         = "application/octet-stream"
            ".hlp"         = "application/winhlp"
            ".hqx"         = "application/mac-binhex40"
            ".hta"         = "application/hta"
            ".htc"         = "text/x-component"
            ".htm"         = "text/html"
            ".html"        = "text/html"
            ".htt"         = "text/webviewhtml"
            ".hxt"         = "text/html"
            ".ico"         = "image/x-icon"
            ".ics"         = "application/octet-stream"
            ".ief"         = "image/ief"
            ".iii"         = "application/x-iphone"
            ".inf"         = "application/octet-stream"
            ".ins"         = "application/x-internet-signup"
            ".isp"         = "application/x-internet-signup"
            ".IVF"         = "video/x-ivf"
            ".jar"         = "application/java-archive"
            ".java"        = "application/octet-stream"
            ".jck"         = "application/liquidmotion"
            ".jcz"         = "application/liquidmotion"
            ".jfif"        = "image/pjpeg"
            ".jpb"         = "application/octet-stream"
            ".jpe"         = "image/jpeg"
            ".jpeg"        = "image/jpeg"
            ".jpg"         = "image/jpeg"
            ".js"          = "application/x-javascript"
            ".jsx"         = "text/jscript"
            ".latex"       = "application/x-latex"
            ".lit"         = "application/x-ms-reader"
            ".lpk"         = "application/octet-stream"
            ".lsf"         = "video/x-la-asf"
            ".lsx"         = "video/x-la-asf"
            ".lzh"         = "application/octet-stream"
            ".m13"         = "application/x-msmediaview"
            ".m14"         = "application/x-msmediaview"
            ".m1v"         = "video/mpeg"
            ".m3u"         = "audio/x-mpegurl"
            ".man"         = "application/x-troff-man"
            ".manifest"    = "application/x-ms-manifest"
            ".map"         = "text/plain"
            ".mdb"         = "application/x-msaccess"
            ".mdp"         = "application/octet-stream"
            ".me"          = "application/x-troff-me"
            ".mht"         = "message/rfc822"
            ".mhtml"       = "message/rfc822"
            ".mid"         = "audio/mid"
            ".midi"        = "audio/mid"
            ".mix"         = "application/octet-stream"
            ".mmf"         = "application/x-smaf"
            ".mno"         = "text/xml"
            ".mny"         = "application/x-msmoney"
            ".mov"         = "video/quicktime"
            ".movie"       = "video/x-sgi-movie"
            ".mp2"         = "video/mpeg"
            ".mp3"         = "audio/mpeg"
            ".mpa"         = "video/mpeg"
            ".mpe"         = "video/mpeg"
            ".mpeg"        = "video/mpeg"
            ".mpg"         = "video/mpeg"
            ".mpp"         = "application/vnd.ms-project"
            ".mpv2"        = "video/mpeg"
            ".ms"          = "application/x-troff-ms"
            ".msi"         = "application/octet-stream"
            ".mso"         = "application/octet-stream"
            ".mvb"         = "application/x-msmediaview"
            ".mvc"         = "application/x-miva-compiled"
            ".nc"          = "application/x-netcdf"
            ".nsc"         = "video/x-ms-asf"
            ".nws"         = "message/rfc822"
            ".ocx"         = "application/octet-stream"
            ".oda"         = "application/oda"
            ".odc"         = "text/x-ms-odc"
            ".ods"         = "application/oleobject"
            ".one"         = "application/onenote"
            ".onea"        = "application/onenote"
            ".onetoc"      = "application/onenote"
            ".onetoc2"     = "application/onenote"
            ".onetmp"      = "application/onenote"
            ".onepkg"      = "application/onenote"
            ".osdx"        = "application/opensearchdescription+xml"
            ".p10"         = "application/pkcs10"
            ".p12"         = "application/x-pkcs12"
            ".p7b"         = "application/x-pkcs7-certificates"
            ".p7c"         = "application/pkcs7-mime"
            ".p7m"         = "application/pkcs7-mime"
            ".p7r"         = "application/x-pkcs7-certreqresp"
            ".p7s"         = "application/pkcs7-signature"
            ".pbm"         = "image/x-portable-bitmap"
            ".pcx"         = "application/octet-stream"
            ".pcz"         = "application/octet-stream"
            ".pdf"         = "application/pdf"
            ".pfb"         = "application/octet-stream"
            ".pfm"         = "application/octet-stream"
            ".pfx"         = "application/x-pkcs12"
            ".pgm"         = "image/x-portable-graymap"
            ".pko"         = "application/vnd.ms-pki.pko"
            ".pma"         = "application/x-perfmon"
            ".pmc"         = "application/x-perfmon"
            ".pml"         = "application/x-perfmon"
            ".pmr"         = "application/x-perfmon"
            ".pmw"         = "application/x-perfmon"
            ".png"         = "image/png"
            ".pnm"         = "image/x-portable-anymap"
            ".pnz"         = "image/png"
            ".pot"         = "application/vnd.ms-powerpoint"
            ".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"
            ".prm"         = "application/octet-stream"
            ".prx"         = "application/octet-stream"
            ".ps"          = "application/postscript"
            ".psd"         = "application/octet-stream"
            ".psm"         = "application/octet-stream"
            ".psp"         = "application/octet-stream"
            ".pub"         = "application/x-mspublisher"
            ".qt"          = "video/quicktime"
            ".qtl"         = "application/x-quicktimeplayer"
            ".qxd"         = "application/octet-stream"
            ".ra"          = "audio/x-pn-realaudio"
            ".ram"         = "audio/x-pn-realaudio"
            ".rar"         = "application/octet-stream"
            ".ras"         = "image/x-cmu-raster"
            ".rf"          = "image/vnd.rn-realflash"
            ".rgb"         = "image/x-rgb"
            ".rm"          = "application/vnd.rn-realmedia"
            ".rmi"         = "audio/mid"
            ".roff"        = "application/x-troff"
            ".rpm"         = "audio/x-pn-realaudio-plugin"
            ".rtf"         = "application/rtf"
            ".rtx"         = "text/richtext"
            ".scd"         = "application/x-msschedule"
            ".sct"         = "text/scriptlet"
            ".sea"         = "application/octet-stream"
            ".setpay"      = "application/set-payment-initiation"
            ".setreg"      = "application/set-registration-initiation"
            ".sgml"        = "text/sgml"
            ".sh"          = "application/x-sh"
            ".shar"        = "application/x-shar"
            ".sit"         = "application/x-stuffit"
            ".sldm"        = "application/vnd.ms-powerpoint.slide.macroEnabled.12"
            ".sldx"        = "application/vnd.openxmlformats-officedocument.presentationml.slide"
            ".smd"         = "audio/x-smd"
            ".smi"         = "application/octet-stream"
            ".smx"         = "audio/x-smd"
            ".smz"         = "audio/x-smd"
            ".snd"         = "audio/basic"
            ".snp"         = "application/octet-stream"
            ".spc"         = "application/x-pkcs7-certificates"
            ".spl"         = "application/futuresplash"
            ".src"         = "application/x-wais-source"
            ".ssm"         = "application/streamingmedia"
            ".sst"         = "application/vnd.ms-pki.certstore"
            ".stl"         = "application/vnd.ms-pki.stl"
            ".sv4cpio"     = "application/x-sv4cpio"
            ".sv4crc"      = "application/x-sv4crc"
            ".swf"         = "application/x-shockwave-flash"
            ".t"           = "application/x-troff"
            ".tar"         = "application/x-tar"
            ".tcl"         = "application/x-tcl"
            ".tex"         = "application/x-tex"
            ".texi"        = "application/x-texinfo"
            ".texinfo"     = "application/x-texinfo"
            ".tgz"         = "application/x-compressed"
            ".thmx"        = "application/vnd.ms-officetheme"
            ".thn"         = "application/octet-stream"
            ".tif"         = "image/tiff"
            ".tiff"        = "image/tiff"
            ".toc"         = "application/octet-stream"
            ".tr"          = "application/x-troff"
            ".trm"         = "application/x-msterminal"
            ".tsv"         = "text/tab-separated-values"
            ".ttf"         = "application/octet-stream"
            ".txt"         = "text/plain"
            ".u32"         = "application/octet-stream"
            ".uls"         = "text/iuls"
            ".ustar"       = "application/x-ustar"
            ".vbs"         = "text/vbscript"
            ".vcf"         = "text/x-vcard"
            ".vcs"         = "text/plain"
            ".vdx"         = "application/vnd.ms-visio.viewer"
            ".vml"         = "text/xml"
            ".vsd"         = "application/vnd.visio"
            ".vss"         = "application/vnd.visio"
            ".vst"         = "application/vnd.visio"
            ".vsto"        = "application/x-ms-vsto"
            ".vsw"         = "application/vnd.visio"
            ".vsx"         = "application/vnd.visio"
            ".vtx"         = "application/vnd.visio"
            ".wav"         = "audio/wav"
            ".wax"         = "audio/x-ms-wax"
            ".wbmp"        = "image/vnd.wap.wbmp"
            ".wcm"         = "application/vnd.ms-works"
            ".wdb"         = "application/vnd.ms-works"
            ".wks"         = "application/vnd.ms-works"
            ".wm"          = "video/x-ms-wm"
            ".wma"         = "audio/x-ms-wma"
            ".wmd"         = "application/x-ms-wmd"
            ".wmf"         = "application/x-msmetafile"
            ".wml"         = "text/vnd.wap.wml"
            ".wmlc"        = "application/vnd.wap.wmlc"
            ".wmls"        = "text/vnd.wap.wmlscript"
            ".wmlsc"       = "application/vnd.wap.wmlscriptc"
            ".wmp"         = "video/x-ms-wmp"
            ".wmv"         = "video/x-ms-wmv"
            ".wmx"         = "video/x-ms-wmx"
            ".wmz"         = "application/x-ms-wmz"
            ".wps"         = "application/vnd.ms-works"
            ".wri"         = "application/x-mswrite"
            ".wrl"         = "x-world/x-vrml"
            ".wrz"         = "x-world/x-vrml"
            ".wsdl"        = "text/xml"
            ".wvx"         = "video/x-ms-wvx"
            ".x"           = "application/directx"
            ".xaf"         = "x-world/x-vrml"
            ".xaml"        = "application/xaml+xml"
            ".xap"         = "application/x-silverlight-app"
            ".xbap"        = "application/x-ms-xbap"
            ".xbm"         = "image/x-xbitmap"
            ".xdr"         = "text/plain"
            ".xla"         = "application/vnd.ms-excel"
            ".xlam"        = "application/vnd.ms-excel.Addin.macroEnabled.12"
            ".xlc"         = "application/vnd.ms-excel"
            ".xlm"         = "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"
            ".xlw"         = "application/vnd.ms-excel"
            ".xml"         = "text/xml"
            ".xof"         = "x-world/x-vrml"
            ".xpm"         = "image/x-xpixmap"
            ".xps"         = "application/vnd.ms-xpsdocument"
            ".xsd"         = "text/xml"
            ".xsf"         = "text/xml"
            ".xsl"         = "text/xml"
            ".xslt"        = "text/xml"
            ".xsn"         = "application/octet-stream"
            ".xtp"         = "application/octet-stream"
            ".xwd"         = "image/x-xwindowdump"
            ".z"           = "application/x-compress"
            ".zip"         = "application/x-zip-compressed"
            #EndRegion
        }
        
    }
  
    process {
        if ($mimeMapping.ContainsKey($Extension)) {
            $mimeMapping[$Extension]
        }
    }
  
    end {
        Write-Verbose ('{0}: End of function' -f $MyInvocation.MyCommand.Name)    
    }
}