add `Remove-MatrixRoomMessage` (#4)

* fix debug url

* fix `MatrixMessage` type

* add `Remove-MatrixRoomMessage`

* add `Get-Help` block
This commit is contained in:
James 2022-04-05 17:15:17 +01:00 committed by GitHub
parent 2075ddb626
commit a9bc50465f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 84 additions and 26 deletions

View File

@ -77,7 +77,8 @@ FunctionsToExport = @(
'Get-MatrixJoinedRooms', 'Get-MatrixJoinedRooms',
'Get-MatrixJoinedMembers', 'Get-MatrixJoinedMembers',
'Get-MatrixRoomId', 'Get-MatrixRoomId',
'Get-MatrixRoomMessages' 'Get-MatrixRoomMessages',
'Remove-MatrixRoomMessage'
) )
# Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export. # Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export.

View File

@ -2,30 +2,22 @@
<Type> <Type>
<Name>MatrixMessage</Name> <Name>MatrixMessage</Name>
<Members> <Members>
<NoteProperty> <MemberSet>
<Name>PSStandardMembers</Name>
<Members>
<PropertySet>
<Name>DefaultDisplayPropertySet</Name>
<ReferencedProperties>
<Name>EventID</Name> <Name>EventID</Name>
<Value>EventID</Value>
</NoteProperty>
<NoteProperty>
<Name>Sender</Name> <Name>Sender</Name>
<Value>Sender</Value>
</NoteProperty>
<NoteProperty>
<Name>Body</Name> <Name>Body</Name>
<Value>Body</Value>
</NoteProperty>
<NoteProperty>
<Name>Format</Name> <Name>Format</Name>
<Value>Format</Value>
</NoteProperty>
<NoteProperty>
<Name>FormattedBody</Name> <Name>FormattedBody</Name>
<Value>FormattedBody</Value>
</NoteProperty>
<NoteProperty>
<Name>MsgType</Name> <Name>MsgType</Name>
<Value>MsgType</Value> </ReferencedProperties>
</NoteProperty> </PropertySet>
</Members>
</MemberSet>
</Members> </Members>
</Type> </Type>
</Types> </Types>

View File

@ -16,7 +16,6 @@ function Get-MatrixRoomMessages {
[int]$Limit = 50 [int]$Limit = 50
) )
Write-Debug "URL: $url"
$headers = Get-MatrixAuthHeaders -AccessToken $AccessToken $headers = Get-MatrixAuthHeaders -AccessToken $AccessToken
try { try {
@ -51,6 +50,8 @@ function Get-MatrixRoomMessages {
+ "?filter=$filterId" ` + "?filter=$filterId" `
+ "&full_state=true&set_presence=offline") + "&full_state=true&set_presence=offline")
Write-Debug "URL: $url"
$res = Invoke-RestMethod -Uri $url -Headers $headers $res = Invoke-RestMethod -Uri $url -Headers $headers
} catch { } catch {
Write-Error $_ Write-Error $_

View File

@ -0,0 +1,64 @@
<#
.Synopsis
Redact a Matrix message in a given Room ID.
.Description
Redact a Matrix message in a given Room ID from _matrix/client/v3/rooms/{roomId}/redact/{eventId}/{txnId}. See https://spec.matrix.org/v1.2/client-server-api/#put_matrixclientv3roomsroomidredacteventidtxnid.
.Parameter ServerUrl
URL for the Matrix server to log into, for example "https://matrix.example.com".
.Parameter AccessToken
A SecureString containing the Matrix access token.
.Parameter RoomId
The Matrix room ID to redact the message from.
.Parameter Message
The MatrixMessage object that contains the Event ID to redact.
.Parameter Reason
The reason to provide for the redaction (optional).
.Example
Remove-MatrixRoomMessage -ServerUrl $server -AccessToken $token -RoomId "!ehXvUhWNASUkSLvAGP:matrix.org" -Message $message -Reason "Redacted by PSMatrix"
#>
function Remove-MatrixRoomMessage {
param (
[Parameter(Mandatory)]
[string]
$ServerUrl,
[Parameter(Mandatory)]
[SecureString]
$AccessToken,
[Parameter(Mandatory)]
[string]
$RoomId,
[Parameter(Mandatory)]
[MatrixMessage]
$Message,
[Parameter(Mandatory=$false)]
[string]
$Reason
)
$eventId = $Message.EventID
$txnId = New-Guid
$url = New-MatrixUrl -ServerUrl $ServerUrl -ApiPath "_matrix/client/v3/rooms/$RoomId/redact/$eventId/$txnId"
Write-Debug "URL: $url"
$method = "Put"
$headers = Get-MatrixAuthHeaders -AccessToken $AccessToken
$body = @{
reason = $Reason
} | ConvertTo-Json
try {
return Invoke-RestMethod -Uri $url -Method $method -Headers $headers -Body $body
} catch {
Write-Error $_
}
}