|
|
|
@ -30,32 +30,42 @@ Set-StrictMode -Version 3.0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$tmp = New-TemporaryFile
|
|
|
|
|
$tmpPath = $tmp.FullName
|
|
|
|
|
$webpPath = $tmpPath -replace 'tmp$','webp'
|
|
|
|
|
|
|
|
|
|
if ($Fullscreen) {
|
|
|
|
|
grim $tmp.FullName
|
|
|
|
|
grim $tmpPath
|
|
|
|
|
} else {
|
|
|
|
|
grim -g $(slurp) $tmp.FullName
|
|
|
|
|
grim -g $(slurp) $tmpPath
|
|
|
|
|
}
|
|
|
|
|
if ((Get-Item $tmpPath).Length -eq 0) {
|
|
|
|
|
Write-Error ('Temp file "{0}" is empty' -f $tmpPath) -ErrorAction Continue
|
|
|
|
|
Remove-Item $tmpPath
|
|
|
|
|
exit
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (($tmp | Get-Item).Length -eq 0) {
|
|
|
|
|
Write-Error ('Screenshot file "{0}" is empty' -f $tmp.FullName) -ErrorAction Continue
|
|
|
|
|
$tmp | Remove-Item
|
|
|
|
|
magick $tmpPath $webpPath
|
|
|
|
|
if ((Get-Item $webpPath).Length -eq 0) {
|
|
|
|
|
Write-Error ('WebP file "{0}" is empty' -f $webpPath) -ErrorAction Continue
|
|
|
|
|
Remove-Item $webpPath
|
|
|
|
|
exit
|
|
|
|
|
} else {
|
|
|
|
|
Remove-Item $tmpPath
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$mediaSplat = @{
|
|
|
|
|
Authentication = 'Bearer'
|
|
|
|
|
Token = $accessToken | ConvertTo-SecureString -AsPlainText
|
|
|
|
|
Headers = @{
|
|
|
|
|
'Content-Type' = 'image/jpeg'
|
|
|
|
|
'Content-Type' = 'image/webp'
|
|
|
|
|
}
|
|
|
|
|
Method = 'Post'
|
|
|
|
|
Uri = ($homeserverUrl+'/_matrix/media/r0/upload')
|
|
|
|
|
InFile = $tmp.FullName
|
|
|
|
|
InFile = $webpPath
|
|
|
|
|
}
|
|
|
|
|
$media = Invoke-RestMethod @mediaSplat
|
|
|
|
|
|
|
|
|
|
$tmp | Remove-Item
|
|
|
|
|
Remove-Item $webpPath
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$serverName = $media.content_uri.Split('/')[2]
|
|
|
|
@ -65,18 +75,20 @@ $mediaUrl = '{0}/_matrix/media/r0/download/{1}/{2}' -f $homeserverUrl,$serverNam
|
|
|
|
|
$mediaUrl | wl-copy --trim-newline
|
|
|
|
|
|
|
|
|
|
if ($roomId) {
|
|
|
|
|
$fileName = $webpPath | Split-Path -Leaf
|
|
|
|
|
|
|
|
|
|
$eventSplat = @{
|
|
|
|
|
Authentication = 'Bearer'
|
|
|
|
|
Token = $accessToken | ConvertTo-SecureString -AsPlainText
|
|
|
|
|
Method = 'Put'
|
|
|
|
|
Uri = '{0}/_matrix/client/r0/rooms/{1}/send/{2}/{3}' -f $homeserverUrl,$roomId,'m.room.message',($tmp.Name)
|
|
|
|
|
Uri = '{0}/_matrix/client/r0/rooms/{1}/send/{2}/{3}' -f $homeserverUrl,$roomId,'m.room.message',$filename
|
|
|
|
|
Body = @{
|
|
|
|
|
body = $tmp.Name
|
|
|
|
|
body = $fileName
|
|
|
|
|
msgtype = 'm.image'
|
|
|
|
|
url = $media.content_uri
|
|
|
|
|
} | ConvertTo-Json
|
|
|
|
|
}
|
|
|
|
|
$event = Invoke-RestMethod @eventSplat
|
|
|
|
|
$event_id = (Invoke-RestMethod @eventSplat).event_id
|
|
|
|
|
|
|
|
|
|
Write-Output ('{0}' -f $event.event_id)
|
|
|
|
|
Write-Output ('{0}' -f $event_id)
|
|
|
|
|
}
|
|
|
|
|