A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/microsoft/PowerShellForGitHub/commit/ad15657551d137c5db063b64f15c2760f74ac5af below:

Fix handling of -WhatIf in core functions (#213) · microsoft/PowerShellForGitHub@ad15657 · GitHub

@@ -193,130 +193,123 @@ function Invoke-GHRestMethod

193 193

$headers.Add("Content-Type", "application/json; charset=UTF-8")

194 194

}

195 195 196 +

if (-not $PSCmdlet.ShouldProcess($url, "Invoke-WebRequest"))

197 +

{

198 +

return

199 +

}

200 + 196 201

try

197 202

{

198 203

Write-Log -Message $Description -Level Verbose

199 204

Write-Log -Message "Accessing [$Method] $url [Timeout = $(Get-GitHubConfiguration -Name WebRequestTimeoutSec))]" -Level Verbose

200 205 206 +

$result = $null

201 207

$NoStatus = Resolve-ParameterWithDefaultConfigurationValue -Name NoStatus -ConfigValueName DefaultNoStatus

202 208

if ($NoStatus)

203 209

{

204 -

if ($PSCmdlet.ShouldProcess($url, "Invoke-WebRequest"))

210 +

$params = @{}

211 +

$params.Add("Uri", $url)

212 +

$params.Add("Method", $Method)

213 +

$params.Add("Headers", $headers)

214 +

$params.Add("UseDefaultCredentials", $true)

215 +

$params.Add("UseBasicParsing", $true)

216 +

$params.Add("TimeoutSec", (Get-GitHubConfiguration -Name WebRequestTimeoutSec))

217 + 218 +

if ($Method -in $ValidBodyContainingRequestMethods -and (-not [String]::IsNullOrEmpty($Body)))

219 +

{

220 +

$bodyAsBytes = [System.Text.Encoding]::UTF8.GetBytes($Body)

221 +

$params.Add("Body", $bodyAsBytes)

222 +

Write-Log -Message "Request includes a body." -Level Verbose

223 +

if (Get-GitHubConfiguration -Name LogRequestBody)

224 +

{

225 +

Write-Log -Message $Body -Level Verbose

226 +

}

227 +

}

228 + 229 +

[Net.ServicePointManager]::SecurityProtocol=[Net.SecurityProtocolType]::Tls12

230 +

$result = Invoke-WebRequest @params

231 +

if ($Method -eq 'Delete')

205 232

{

233 +

Write-Log -Message "Successfully removed." -Level Verbose

234 +

}

235 +

}

236 +

else

237 +

{

238 +

$jobName = "Invoke-GHRestMethod-" + (Get-Date).ToFileTime().ToString()

239 + 240 +

[scriptblock]$scriptBlock = {

241 +

param($Url, $Method, $Headers, $Body, $ValidBodyContainingRequestMethods, $TimeoutSec, $LogRequestBody, $ScriptRootPath)

242 + 243 +

# We need to "dot invoke" Helpers.ps1 and GitHubConfiguration.ps1 within

244 +

# the context of this script block since we're running in a different

245 +

# PowerShell process and need access to Get-HttpWebResponseContent and

246 +

# config values referenced within Write-Log.

247 +

. (Join-Path -Path $ScriptRootPath -ChildPath 'Helpers.ps1')

248 +

. (Join-Path -Path $ScriptRootPath -ChildPath 'GitHubConfiguration.ps1')

249 + 206 250

$params = @{}

207 -

$params.Add("Uri", $url)

251 +

$params.Add("Uri", $Url)

208 252

$params.Add("Method", $Method)

209 -

$params.Add("Headers", $headers)

253 +

$params.Add("Headers", $Headers)

210 254

$params.Add("UseDefaultCredentials", $true)

211 255

$params.Add("UseBasicParsing", $true)

212 -

$params.Add("TimeoutSec", (Get-GitHubConfiguration -Name WebRequestTimeoutSec))

256 +

$params.Add("TimeoutSec", $TimeoutSec)

213 257 214 258

if ($Method -in $ValidBodyContainingRequestMethods -and (-not [String]::IsNullOrEmpty($Body)))

215 259

{

216 260

$bodyAsBytes = [System.Text.Encoding]::UTF8.GetBytes($Body)

217 261

$params.Add("Body", $bodyAsBytes)

218 262

Write-Log -Message "Request includes a body." -Level Verbose

219 -

if (Get-GitHubConfiguration -Name LogRequestBody)

263 +

if ($LogRequestBody)

220 264

{

221 265

Write-Log -Message $Body -Level Verbose

222 266

}

223 267

}

224 268 225 -

[Net.ServicePointManager]::SecurityProtocol=[Net.SecurityProtocolType]::Tls12

226 -

$result = Invoke-WebRequest @params

227 -

if ($Method -eq 'Delete')

269 +

try

228 270

{

229 -

Write-Log -Message "Successfully removed." -Level Verbose

271 +

[Net.ServicePointManager]::SecurityProtocol=[Net.SecurityProtocolType]::Tls12

272 +

Invoke-WebRequest @params

230 273

}

231 -

}

232 -

}

233 -

else

234 -

{

235 -

$jobName = "Invoke-GHRestMethod-" + (Get-Date).ToFileTime().ToString()

236 - 237 -

if ($PSCmdlet.ShouldProcess($jobName, "Start-Job"))

238 -

{

239 -

[scriptblock]$scriptBlock = {

240 -

param($Url, $Method, $Headers, $Body, $ValidBodyContainingRequestMethods, $TimeoutSec, $LogRequestBody, $ScriptRootPath)

241 - 242 -

# We need to "dot invoke" Helpers.ps1 and GitHubConfiguration.ps1 within

243 -

# the context of this script block since we're running in a different

244 -

# PowerShell process and need access to Get-HttpWebResponseContent and

245 -

# config values referenced within Write-Log.

246 -

. (Join-Path -Path $ScriptRootPath -ChildPath 'Helpers.ps1')

247 -

. (Join-Path -Path $ScriptRootPath -ChildPath 'GitHubConfiguration.ps1')

248 - 249 -

$params = @{}

250 -

$params.Add("Uri", $Url)

251 -

$params.Add("Method", $Method)

252 -

$params.Add("Headers", $Headers)

253 -

$params.Add("UseDefaultCredentials", $true)

254 -

$params.Add("UseBasicParsing", $true)

255 -

$params.Add("TimeoutSec", $TimeoutSec)

256 - 257 -

if ($Method -in $ValidBodyContainingRequestMethods -and (-not [String]::IsNullOrEmpty($Body)))

258 -

{

259 -

$bodyAsBytes = [System.Text.Encoding]::UTF8.GetBytes($Body)

260 -

$params.Add("Body", $bodyAsBytes)

261 -

Write-Log -Message "Request includes a body." -Level Verbose

262 -

if ($LogRequestBody)

263 -

{

264 -

Write-Log -Message $Body -Level Verbose

265 -

}

266 -

}

267 - 274 +

catch [System.Net.WebException]

275 +

{

276 +

# We need to access certain headers in the exception handling,

277 +

# but the actual *values* of the headers of a WebException don't get serialized

278 +

# when the RemoteException wraps it. To work around that, we'll extract the

279 +

# information that we actually care about *now*, and then we'll throw our own exception

280 +

# that is just a JSON object with the data that we'll later extract for processing in

281 +

# the main catch.

282 +

$ex = @{}

283 +

$ex.Message = $_.Exception.Message

284 +

$ex.StatusCode = $_.Exception.Response.StatusCode

285 +

$ex.StatusDescription = $_.Exception.Response.StatusDescription

286 +

$ex.InnerMessage = $_.ErrorDetails.Message

268 287

try

269 288

{

270 -

[Net.ServicePointManager]::SecurityProtocol=[Net.SecurityProtocolType]::Tls12

271 -

Invoke-WebRequest @params

289 +

$ex.RawContent = Get-HttpWebResponseContent -WebResponse $_.Exception.Response

272 290

}

273 -

catch [System.Net.WebException]

291 +

catch

274 292

{

275 -

# We need to access certain headers in the exception handling,

276 -

# but the actual *values* of the headers of a WebException don't get serialized

277 -

# when the RemoteException wraps it. To work around that, we'll extract the

278 -

# information that we actually care about *now*, and then we'll throw our own exception

279 -

# that is just a JSON object with the data that we'll later extract for processing in

280 -

# the main catch.

281 -

$ex = @{}

282 -

$ex.Message = $_.Exception.Message

283 -

$ex.StatusCode = $_.Exception.Response.StatusCode

284 -

$ex.StatusDescription = $_.Exception.Response.StatusDescription

285 -

$ex.InnerMessage = $_.ErrorDetails.Message

286 -

try

287 -

{

288 -

$ex.RawContent = Get-HttpWebResponseContent -WebResponse $_.Exception.Response

289 -

}

290 -

catch

291 -

{

292 -

Write-Log -Message "Unable to retrieve the raw HTTP Web Response:" -Exception $_ -Level Warning

293 -

}

294 - 295 -

throw (ConvertTo-Json -InputObject $ex -Depth 20)

293 +

Write-Log -Message "Unable to retrieve the raw HTTP Web Response:" -Exception $_ -Level Warning

296 294

}

297 -

}

298 295 299 -

$null = Start-Job -Name $jobName -ScriptBlock $scriptBlock -Arg @(

300 -

$url,

301 -

$Method,

302 -

$headers,

303 -

$Body,

304 -

$ValidBodyContainingRequestMethods,

305 -

(Get-GitHubConfiguration -Name WebRequestTimeoutSec),

306 -

(Get-GitHubConfiguration -Name LogRequestBody),

307 -

$PSScriptRoot)

308 - 309 -

if ($PSCmdlet.ShouldProcess($jobName, "Wait-JobWithAnimation"))

310 -

{

311 -

Wait-JobWithAnimation -Name $jobName -Description $Description

312 -

}

313 - 314 -

if ($PSCmdlet.ShouldProcess($jobName, "Receive-Job"))

315 -

{

316 -

$result = Receive-Job $jobName -AutoRemoveJob -Wait -ErrorAction SilentlyContinue -ErrorVariable remoteErrors

296 +

throw (ConvertTo-Json -InputObject $ex -Depth 20)

317 297

}

318 298

}

319 299 300 +

$null = Start-Job -Name $jobName -ScriptBlock $scriptBlock -Arg @(

301 +

$url,

302 +

$Method,

303 +

$headers,

304 +

$Body,

305 +

$ValidBodyContainingRequestMethods,

306 +

(Get-GitHubConfiguration -Name WebRequestTimeoutSec),

307 +

(Get-GitHubConfiguration -Name LogRequestBody),

308 +

$PSScriptRoot)

309 + 310 +

Wait-JobWithAnimation -Name $jobName -Description $Description

311 +

$result = Receive-Job $jobName -AutoRemoveJob -Wait -ErrorAction SilentlyContinue -ErrorVariable remoteErrors

312 + 320 313

if ($remoteErrors.Count -gt 0)

321 314

{

322 315

throw $remoteErrors[0].Exception


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4