Public/Remove-RyverMessage.ps1
function Remove-RyverMessage { <# .SYNOPSIS Delete a Ryver message. .DESCRIPTION Delete a Ryver message. .INPUTS System.String .NOTES - Troy Lindsay - Twitter: @troylindsay42 - GitHub: tlindsay42 .EXAMPLE Remove-RyverMessage -ID 001234567890123456789 -ChannelID 12345678 -Type 'Forum' Deletes message with ID 001234567890123456789 in the public forum channel with ID 12345678. .EXAMPLE 001234567890123456789 | Remove-RyverMessage -ChannelID 12345678 -Type 'Team' Deletes message with ID 001234567890123456789 in the private team channel with ID 12345678 via pipeline value. .EXAMPLE Remove-RyverMessage 001234567890123456789 12345678 'User' Deletes message with ID 001234567890123456789 in the public forum with ID 12345678 via positional parameter. .EXAMPLE [PSCustomObject] @{ ID = 001234567890123456789; ChannelID = 12345678; Type = 'Forum' } | Remove-RyverMessage Deletes message with ID 001234567890123456789 in the public forum with ID 12345678 via the pipeline by parameter name. .LINK https://tlindsay42.github.io/PSRyver/Public/Remove-RyverMessage/ .LINK https://github.com/tlindsay42/PSRyver/blob/master/PSRyver/Public/Remove-RyverMessage.ps1 .FUNCTIONALITY Ryver #> [CmdletBinding( HelpUri = 'https://tlindsay42.github.io/PSRyver/Public/Remove-RyverMessage/', SupportsShouldProcess = $true, ConfirmImpact = 'High' )] [OutputType( [Void] )] param ( # Specifies the ID of the message that will be deleted. [Parameter( Mandatory = $true, Position = 0, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true )] [UInt64] $ID, <# Specifies the ID of the public forum channel, private team channel, or user direct message where the chat message will be posted. #> [Parameter( Mandatory = $true, Position = 1, ValueFromPipelineByPropertyName = $true )] [UInt64] $ChannelID, <# Specifies the type of channel to post the message in: - Public forum - Private team - User direct message #> [Parameter( Mandatory = $true, Position = 2, ValueFromPipelineByPropertyName = $true )] [ValidateSet( 'Forum', 'Team', 'User' )] [String] $Type ) begin { $function = $MyInvocation.MyCommand.Name Write-Verbose -Message "Beginning: '${function}'." Assert-RyverApiConfig } process { Write-Verbose -Message ( "Processing: '${function}' with ParameterSetName '$( $PSCmdlet.ParameterSetName )' and Parameters: " + ( $PSBoundParameters | Remove-SensitiveData | Format-Table -AutoSize | Out-String ) ) #region init $path = '/' #endregion if ( $PSCmdlet.ShouldProcess( $ID, 'Delete Ryver message' ) -eq $true ) { switch ( $Type ) { 'Forum' { $path += "forums(${ChannelID})" } 'Team' { $path += "workrooms(${ChannelID})" } 'User' { $path += "users(${ChannelID})" } } $path += '/Chat.DeleteMessage()' $splat = @{ Path = $path Method = 'Post' Body = @{ id = $ID } | ConvertTo-Json -ErrorAction 'Stop' } Invoke-RyverRestMethod @splat } } end { Write-Verbose -Message "Ending: '${function}'." } } |