ConvertFrom-RabbitMqDelivery.ps1

function ConvertFrom-RabbitMqDelivery {
    <#
    .SYNOPSIS
        Parse a RabbitMq delivery
 
    .DESCRIPTION
        Parse a RabbitMq delivery.
 
        Deserializes based on delivery contenttype, falls back to string
 
    .PARAMETER Delivery
        RabbitMq Delivery to parse.
 
    .EXAMPLE
        ConvertFrom-RabbitMqDelivery -Delivery $Delivery
    #>

    param(
        [RabbitMQ.Client.Events.BasicDeliverEventArgs]$Delivery
    )
    switch($Delivery.BasicProperties.ContentType) {
        "text/plain" {
            [Text.Encoding]::UTF8.GetString($Delivery.Body)
        }
        "application/clixml+xml" {
            $XmlBody = [Text.Encoding]::UTF8.GetString($Delivery.Body)
            [System.Management.Automation.PSSerializer]::DeserializeAsList($XmlBody)
        }
        "application/json" {
            $JsonBody = [Text.Encoding]::UTF8.GetString($Delivery.Body)
            ConvertFrom-Json $JsonBody
        }
        default {
            [Text.Encoding]::UTF8.GetString($Delivery.Body)
        }
    }
}