Public/Functions/General/Get-GithubRawUrl.ps1
<#
.Synopsis Returns the RAW URL for a provided GitHub or GitHub Gist URL .Description Returns the RAW URL for a provided GitHub or GitHub Gist URL .Link https://osd.osdeploy.com #> function Get-GithubRawUrl { [CmdletBinding()] param ( [Parameter(Mandatory)] [System.Uri] # Github Url to retrieve $Uri ) #Write-Warning 'GithubRaw functions are currently under development' #Write-Warning 'Functionality is subject to change until this warning is removed' if ($Uri -match 'gist.github.com') { try { $GetUri = (Invoke-WebRequest -UseBasicParsing -Method Get -Uri $Uri).Links | Where-Object {($_.outerHTML -match 'RAW') -and ($_.class -match 'btn-sm btn')} | Select-Object -ExpandProperty href $GetUri = $GetUri | ForEach-Object {"https://gist.githubusercontent.com$_" -replace '\/raw\/[\w-]{40}','/raw'} $GetUri } catch { Write-Warning $_ } } elseif ($Uri -match 'github.com') { try { $GetUri = (Invoke-WebRequest -UseBasicParsing -Method Get -Uri $Uri).Links | Where-Object {($_.outerHTML -match 'RAW') -and ($_.class -match 'btn-sm btn')} | Select-Object -ExpandProperty href $GetUri = $GetUri -replace '/raw/','/' $GetUri = $GetUri | ForEach-Object {"https://raw.githubusercontent.com$_"} $GetUri } catch { Write-Warning $_ } } elseif (([System.Uri]$Uri).AbsoluteUri) { ([System.Uri]$Uri).AbsoluteUri } else { [System.String]$Uri } } <# .Synopsis Returns the RAW content for a provided GitHub or GitHub Gist URL .Description Returns the RAW content for a provided GitHub or GitHub Gist URL .Link https://osd.osdeploy.com #> function Get-GithubRawContent { [CmdletBinding()] param ( [Parameter(Mandatory)] [System.Uri] # Github Url to retrieve $Uri ) $GithubRawUrl = Get-GithubRawUrl -Uri $Uri #Write-Verbose $GithubRawUrl if ($GithubRawUrl) { foreach ($Item in $GithubRawUrl) { Write-Verbose $Item try { $WebRequest = Invoke-WebRequest -Uri $Item -UseBasicParsing -Method Head -ErrorAction SilentlyContinue if ($WebRequest.StatusCode -eq 200) { Invoke-RestMethod -Uri $Item } } catch { Write-Warning $_ } } } } |