PSSlack.BDA.psm1

#Get public and private function definition files.
    $Public  = @( Get-ChildItem -Path $PSScriptRoot\Public\*.ps1 -ErrorAction SilentlyContinue )
    $Private = @( Get-ChildItem -Path $PSScriptRoot\Private\*.ps1 -ErrorAction SilentlyContinue )
    $ModuleRoot = $PSScriptRoot

# Import System.Drawing Assembly
    Try {
        Add-Type -Assembly System.Drawing
    }
    Catch {
        Write-Error -Message "Failed to import System.Drawing assembly: $_"
    }

#Dot source the files
Foreach($import in @($Public + $Private))
{
    Try
    {
        . $import.fullname
    }
    Catch
    {
        Write-Error -Message "Failed to import function $($import.fullname): $_"
    }
}

#Create / Read config
    $script:_PSSlackXmlpath = Get-PSSlackConfigPath
    if(-not (Test-Path -Path $script:_PSSlackXmlpath -ErrorAction SilentlyContinue))
    {
        Try
        {
            Write-Warning "Did not find config file $($script:_PSSlackXmlpath), attempting to create"
            [pscustomobject]@{
                Uri = $null
                Token = $null
                ArchiveUri = $null
                Proxy = $null
                MapUser = $null
                ForceVerbose = $False
            } | Export-Clixml -Path $($script:_PSSlackXmlpath) -Force -ErrorAction Stop
        }
        Catch
        {
            Write-Warning "Failed to create config file $($script:_PSSlackXmlpath): $_"
        }
    }

#Initialize the config variable. I know, I know...
    Try
    {
        #Import the config
        $PSSlack = $null
        $PSSlack = Get-PSSlackConfig -Source PSSlack.xml -ErrorAction Stop
    }
    Catch
    {
        Write-Warning "Error importing PSSlack config: $_"
    }

$_PSSlackUserMap = @{}
if($PSSlack.MapUser){
  $_PSSlackUserMap = Get-SlackUserMap -Update
}

# Create a hashtable for use with the "leaky bucket" rate-limiting algorithm. (Some of Slack's API calls will fail if you request them too quickly.)
# https://en.wikipedia.org/wiki/Leaky_bucket
$Script:APIRateBuckets = @{}

# Import some color defs.
$_PSSlackColorMap = @{
    aliceblue = "#F0F8FF"
    antiquewhite = "#FAEBD7"
    aqua = "#00FFFF"
    aquamarine = "#7FFFD4"
    azure = "#F0FFFF"
    beige = "#F5F5DC"
    bisque = "#FFE4C4"
    black = "#000000"
    blanchedalmond = "#FFEBCD"
    blue = "#0000FF"
    blueviolet = "#8A2BE2"
    brown = "#A52A2A"
    burlywood = "#DEB887"
    cadetblue = "#5F9EA0"
    chartreuse = "#7FFF00"
    chocolate = "#D2691E"
    coral = "#FF7F50"
    cornflowerblue = "#6495ED"
    cornsilk = "#FFF8DC"
    crimson = "#DC143C"
    darkblue = "#00008B"
    darkcyan = "#008B8B"
    darkgoldenrod = "#B8860B"
    darkgray = "#A9A9A9"
    darkgreen = "#006400"
    darkkhaki = "#BDB76B"
    darkmagenta = "#8B008B"
    darkolivegreen = "#556B2F"
    darkorange = "#FF8C00"
    darkorchid = "#9932CC"
    darkred = "#8B0000"
    darksalmon = "#E9967A"
    darkseagreen = "#8FBC8F"
    darkslateblue = "#483D8B"
    darkslategray = "#2F4F4F"
    darkturquoise = "#00CED1"
    darkviolet = "#9400D3"
    deeppink = "#FF1493"
    deepskyblue = "#00BFFF"
    dimgray = "#696969"
    dodgerblue = "#1E90FF"
    firebrick = "#B22222"
    floralwhite = "#FFFAF0"
    forestgreen = "#228B22"
    fuchsia = "#FF00FF"
    gainsboro = "#DCDCDC"
    ghostwhite = "#F8F8FF"
    gold = "#FFD700"
    goldenrod = "#DAA520"
    gray = "#808080"
    green = "#008000"
    greenyellow = "#ADFF2F"
    honeydew = "#F0FFF0"
    hotpink = "#FF69B4"
    indianred = "#CD5C5C"
    indigo = "#4B0082"
    ivory = "#FFFFF0"
    khaki = "#F0E68C"
    lavender = "#E6E6FA"
    lavenderblush = "#FFF0F5"
    lawngreen = "#7CFC00"
    lemonchiffon = "#FFFACD"
    lightblue = "#ADD8E6"
    lightcoral = "#F08080"
    lightcyan = "#E0FFFF"
    lightgoldenrodyellow = "#FAFAD2"
    lightgreen = "#90EE90"
    lightgrey = "#D3D3D3"
    lightpink = "#FFB6C1"
    lightsalmon = "#FFA07A"
    lightseagreen = "#20B2AA"
    lightskyblue = "#87CEFA"
    lightslategray = "#778899"
    lightsteelblue = "#B0C4DE"
    lightyellow = "#FFFFE0"
    lime = "#00FF00"
    limegreen = "#32CD32"
    linen = "#FAF0E6"
    maroon = "#800000"
    mediumaquamarine = "#66CDAA"
    mediumblue = "#0000CD"
    mediumorchid = "#BA55D3"
    mediumpurple = "#9370DB"
    mediumseagreen = "#3CB371"
    mediumslateblue = "#7B68EE"
    mediumspringgreen = "#00FA9A"
    mediumturquoise = "#48D1CC"
    mediumvioletred = "#C71585"
    midnightblue = "#191970"
    mintcream = "#F5FFFA"
    mistyrose = "#FFE4E1"
    moccasin = "#FFE4B5"
    navajowhite = "#FFDEAD"
    navy = "#000080"
    oldlace = "#FDF5E6"
    olive = "#808000"
    olivedrab = "#6B8E23"
    orange = "#FFA500"
    orangered = "#FF4500"
    orchid = "#DA70D6"
    palegoldenrod = "#EEE8AA"
    palegreen = "#98FB98"
    paleturquoise = "#AFEEEE"
    palevioletred = "#DB7093"
    papayawhip = "#FFEFD5"
    peachpuff = "#FFDAB9"
    peru = "#CD853F"
    pink = "#FFC0CB"
    plum = "#DDA0DD"
    powderblue = "#B0E0E6"
    purple = "#800080"
    red = "#FF0000"
    rosybrown = "#BC8F8F"
    royalblue = "#4169E1"
    saddlebrown = "#8B4513"
    salmon = "#FA8072"
    sandybrown = "#F4A460"
    seagreen = "#2E8B57"
    seashell = "#FFF5EE"
    sienna = "#A0522D"
    silver = "#C0C0C0"
    skyblue = "#87CEEB"
    slateblue = "#6A5ACD"
    slategray = "#708090"
    snow = "#FFFAFA"
    springgreen = "#00FF7F"
    steelblue = "#4682B4"
    tan = "#D2B48C"
    teal = "#008080"
    thistle = "#D8BFD8"
    tomato = "#FF6347"
    turquoise = "#40E0D0"
    violet = "#EE82EE"
    wheat = "#F5DEB3"
    white = "#FFFFFF"
    whitesmoke = "#F5F5F5"
    yellow = "#FFFF00"
    yellowgreen = "#9ACD32"
}

[Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bor [Net.SecurityProtocolType]::Tls12
Export-ModuleMember -Function $Public.Basename -Variable _PSSlackColorMap