dotfiles/win/sentry.ps1
2020-11-17 16:26:46 +08:00

57 lines
1.8 KiB
PowerShell

[CmdletBinding()]
param (
[ValidateSet("Projects", "MarkRead")]
[string]
$CMD,
[Parameter(Mandatory=$false)]
[string]
$PRO,
[Parameter(Mandatory=$false)]
[string]
$ORG="malong",
[Parameter(Mandatory=$false)]
[string]
$TOKEN="4ef37b6c118e44a499450fb996f2d58ef81faa46e2f14f38aadfa6d4ee0c4062"
)
function Projects {
$PROJECTS_URL="https://sentry.malongtech.cn/api/0/projects/"
while ($PROJECTS_URL) {
$projectsRes = Invoke-WebRequest -Uri $PROJECTS_URL -Headers @{'Authorization'="Bearer $TOKEN"}
$projects = $projectsRes.Content | ConvertFrom-Json
if (-not $projects.Length) {
break
}
foreach ($project in $projects) {
Write-Host $project.id $project.name
}
$PROJECTS_URL=$projectsRes.Headers.Link
if (-not $PROJECTS_URL.Length) {
break
}
$PROJECTS_URL = $PROJECTS_URL[0].ToString()
$PROJECTS_URL=$PROJECTS_URL.SubString(1, $PROJECTS_URL.IndexOf(";")-2)
}
}
function MarkRead {
$ISSUES_URL="https://sentry.malongtech.cn/api/0/projects/$ORG/$PRO/issues/"
while ($true) {
$issuesRes = Invoke-WebRequest -Uri $ISSUES_URL -Headers @{'Authorization'="Bearer $TOKEN"}
$issues = $issuesRes.Content | ConvertFrom-Json
if (-not $issues.Length) {
break
}
$qs = $issues | Select-Object -Property id | %{"id=$($_.id)"} | Join-String -Separator "&"
$deleteRes = Invoke-WebRequest -Uri "$($ISSUES_URL)?$qs" -Method Delete -Body @{'id'=$ids} -Headers @{'Authorization'="Bearer $TOKEN"}
Write-Host "status: $($deleteRes.StatusCode) content: $($deleteRes.Content)"
}
}
switch ($CMD) {
"MarkRead" { MarkRead }
Default { Projects }
}