Functions/Public/Submit-GitHubReview.ps1
function Submit-GitHubReview { <# .SYNOPSIS Submits a review for the given pull request. #> [CmdletBinding(DefaultParameterSetName = 'COMMENT')] [OutputType('PSGitHub.Review')] param( # Number of the pull request [Parameter(Mandatory, ValueFromPipelineByPropertyName)] [ValidateRange(1, [int]::MaxValue)] [int] $Number, # The owner of the target repository [Parameter(ValueFromPipelineByPropertyName)] [ValidatePattern('^[\w-\.]+$')] # safety check to make sure no owner/repo slug (with slash) was passed [string] $Owner = (Get-GitHubUser -Token $Token).login, # This doesn't work for org repos. # The name of the target repository [Parameter(Mandatory, ValueFromPipelineByPropertyName)] [ValidateNotNullOrEmpty()] [ValidatePattern('^[\w-\.]+$')] [Alias('Repository')] [string] $RepositoryName, [Parameter(Mandatory, ValueFromPipelineByPropertyName)] [int] $ReviewId, [Parameter(Mandatory, ParameterSetName = 'REQUEST_CHANGES')] [switch] $RequestChanges, [Parameter(Mandatory, ParameterSetName = 'APPROVE')] [switch] $Approve, # Required when using REQUEST_CHANGES or COMMENT for the event # parameter. The body text of the pull request review. [Parameter(Position = 0, ParameterSetName = 'COMMENT')] [Parameter(Position = 0, ParameterSetName = 'APPROVE')] [Parameter(Position = 0, Mandatory, ParameterSetName = 'REQUEST_CHANGES')] [string] $Body, # Optional base URL of the GitHub API, for example "https://ghe.mycompany.com/api/v3/" (including the trailing slash). # Defaults to "https://api.github.com" [Uri] $BaseUri = [Uri]::new('https://api.github.com'), [Security.SecureString] $Token ) process { $apiBody = @{ event = $PSCmdlet.ParameterSetName body = $Body } Invoke-GithubApi -Method POST "repos/$Owner/$RepositoryName/pulls/$Number/reviews/$ReviewId/events" ` -Body ($apiBody | ConvertTo-Json) ` -BaseUri $BaseUri ` -Token $Token | ForEach-Object { $_.PSTypeNames.Insert(0, 'PSGitHub.Review') $_.User.PSTypeNames.Insert(0, 'PSGitHub.User') $_ } } } |