From 3ee21a35d35ee75628cf0a95e5bc6bf6c033d721 Mon Sep 17 00:00:00 2001 From: Stefan Hagemann Date: Wed, 24 Oct 2018 11:18:24 +0200 Subject: [PATCH] Add bearer token to config and query --- PSGitLab/Private/DownloadFromGitLabAPI.ps1 | 9 ++++++++- PSGitLab/Private/QueryGitLabAPI.ps1 | 14 ++++++++++++-- .../Configuration/Save-GitLabAPIConfiguration.ps1 | 5 ++++- 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/PSGitLab/Private/DownloadFromGitLabAPI.ps1 b/PSGitLab/Private/DownloadFromGitLabAPI.ps1 index b4ffe6a..72a1b35 100644 --- a/PSGitLab/Private/DownloadFromGitLabAPI.ps1 +++ b/PSGitLab/Private/DownloadFromGitLabAPI.ps1 @@ -42,6 +42,7 @@ ) $GitLabConfig = ImportConfig $Domain = $GitLabConfig.Domain + $BearerToken=$GitLabConfig.BearerToken if ( $IsWindows -or ( [version]$PSVersionTable.PSVersion -lt [version]'5.99.0' ) ) { $Token = DecryptString -Token $GitLabConfig.Token @@ -56,11 +57,17 @@ { Write-Verbose -Message ('URL: {0}' -f $RequestURI) $wc = New-Object -TypeName System.Net.WebClient - $wc.Headers.Add('PRIVATE-TOKEN',$Token) + if ($BearerToken) { + $wc.Headers.Add('Bearer',$Token) + } + else { + $wc.Headers.Add('PRIVATE-TOKEN',$Token) + } Write-Verbose -Message ('Downloading File from {0} to {1}' -f $RequestURI, $OutFile) $wc.DownloadFile($RequestURI,$OutFile) Remove-Variable -Name Token Remove-Variable -Name RequestURI + Remove-Variable -Name BearerToken } catch { diff --git a/PSGitLab/Private/QueryGitLabAPI.ps1 b/PSGitLab/Private/QueryGitLabAPI.ps1 index cd55b6d..3ced04a 100644 --- a/PSGitLab/Private/QueryGitLabAPI.ps1 +++ b/PSGitLab/Private/QueryGitLabAPI.ps1 @@ -24,14 +24,23 @@ Function QueryGitLabAPI { if ($GitLabConfig.APIVersion) { $Version = "v$($GitLabConfig.APIVersion)" } + $BearerToken=$GitLabConfig.BearerToken $Domain = $GitLabConfig.Domain if ( $IsWindows -or ( [version]$PSVersionTable.PSVersion -lt [version]"5.99.0" ) ) { $Token = DecryptString -Token $GitLabConfig.Token } elseif ( $IsLinux -or $IsMacOS ) { $Token = $GitLabConfig.Token } - $Headers = @{ - 'PRIVATE-TOKEN'=$Token; + if ($BearerToken) { + $Headers = @{ + 'Authorization'= "Bearer " + $Token; + } + + } + else { + $Headers = @{ + 'PRIVATE-TOKEN'=$Token; + } } $Request.Add('Headers',$Headers) @@ -81,6 +90,7 @@ Function QueryGitLabAPI { Remove-Variable -Name Token Remove-Variable -Name Headers Remove-Variable -Name Request + Remove-Variable -Name BearerToken } foreach ($Result in $Results) { diff --git a/PSGitLab/Public/Configuration/Save-GitLabAPIConfiguration.ps1 b/PSGitLab/Public/Configuration/Save-GitLabAPIConfiguration.ps1 index 42ec60d..d8b6a0d 100644 --- a/PSGitLab/Public/Configuration/Save-GitLabAPIConfiguration.ps1 +++ b/PSGitLab/Public/Configuration/Save-GitLabAPIConfiguration.ps1 @@ -14,7 +14,8 @@ param( [ValidatePattern("^(?:http|https):\/\/(?:[\w\.\-\+]+:{0,1}[\w\.\-\+]*@)?(?:[a-z0-9\-\.]+)(?::[0-9]+)?(?:\/|\/(?:[\w#!:\.\?\+=&%@!\-\/\(\)]+)|\?(?:[\w#!:\.\?\+=&%@!\-\/\(\)]+))?$")] $Domain, - $APIVersion = 4 + $APIVersion = 4, + $BearerToken = $false ) if ( $Domain -match '^http:\/\/' ) { @@ -27,6 +28,7 @@ if ( $IsWindows -or ( [version]$PSVersionTable.PSVersion -lt [version]"5.99.0" ) Token=(ConvertTo-SecureString -string $Token -AsPlainText -Force) Domain=$Domain; APIVersion=$APIVersion; + BearerToken=$BearerToken; } $ConfigFile = "$env:appdata\PSGitLab\PSGitLabConfiguration.xml" @@ -39,6 +41,7 @@ if ( $IsWindows -or ( [version]$PSVersionTable.PSVersion -lt [version]"5.99.0" ) Token=$Token Domain=$Domain; APIVersion=$APIVersion; + BearerToken=$BearerToken; } $ConfigFile = "{0}/.psgitlab/PSGitLabConfiguration.xml" -f $HOME