Modules/Post-RestVsts.psm1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
. "$PSScriptRoot\Test-Environment.ps1"
function Post-RestVsts {
    [CmdletBinding(SupportsShouldProcess)]
    param (
        [Parameter(Mandatory = $true)][Alias("U")]
        [string]$afterProject,
        [Parameter(Mandatory = $false)]
        [hashtable]$vars = $null,
        [Parameter(Mandatory = $true)][Alias("V")]
        [string]$version,
        [Parameter(Mandatory=$false)]
        $body
    )
    test-environment
    $v = Get-VstsConnection
    $url = "https://$($v.InstanceName).visualstudio.com/DefaultCollection/$($v.ProjectName)" 
    if (-not $afterProject.StartsWith("/")) {
        $url += '/'
    }
    $url += $afterProject
    if ($afterProject.IndexOf('?') -ne -1) {
        $url += "&"
    } else {
        $url += "?"
    }
    if ($vars -eq $null) { $vars = @{}}
    $vars['api-version']=$version;
    
    $url += (($vars.GetEnumerator() | ForEach-Object { "$($_.key)=$($_.value)" }) -join '&') 
    Write-Verbose $url
    $json = ConvertTo-Json $body
    Write-Verbose $json
    if ($WhatIfPreference -ne $true) {
        $response = Invoke-RestMethod -Method Post -Uri $url -ContentType 'application/json' -Headers $v.RequestHeaders -Verbose:$VerbosePreference -Body $json
        $response    
    }
}