Script to setup Windows 10 1903
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

58 lines
2.2 KiB

# https://www.deviantart.com/team/status-update/An-adjustments-being-made-to-1307747979
# Start listiner to copy code from URL
$Listener = [System.Net.HttpListener]::new()
# With "/"
$Listener.Prefixes.Add('http://localhost:8080/cb/')
$Listener.Start()
$Bytes = [byte[]]::new(32)
[System.Security.Cryptography.RandomNumberGenerator]::Create().GetBytes($Bytes)
$codeVerifier = [Convert]::ToBase64String($Bytes).TrimEnd('=').Replace('+','-').Replace('/','_')
$Hash = [System.Security.Cryptography.SHA256]::Create().ComputeHash([Text.Encoding]::ASCII.GetBytes($CodeVerifier))
$CodeChallenge = [Convert]::ToBase64String($Hash).TrimEnd('=').Replace('+','-').Replace('/','_')
$state = [guid]::NewGuid().ToString('N')
$ClientId = $env:DEVIANTART_CLIENT_ID
$RedirectURL = [uri]::EscapeDataString("http://localhost:8080/cb")
Start-Process -FilePath "https://www.deviantart.com/oauth2/authorize?response_type=code&client_id=$clientId&redirect_uri=$RedirectURL&scope=browse&state=$State&code_challenge=$CodeChallenge&code_challenge_method=S256"
# Blocks until the browser hits the redirect_uri
$context = $Listener.GetContext()
$request = $context.Request
$code = $request.QueryString['code']
$context.Response.Close()
$Listener.Stop()
# Get access token
# https://deviantart.readme.io/docs/authentication
$Body = @{
grant_type = "authorization_code"
client_id = $env:DEVIANTART_CLIENT_ID
client_secret = $env:DEVIANTART_CLIENT_SECRET
redirect_uri = "http://localhost:8080/cb"
code = $code
code_verifier = $codeVerifier
}
$Parameters = @{
Uri = "https://www.deviantart.com/oauth2/token"
Body = $Body
Method = "Post"
Verbose = $true
UseBasicParsing = $true
}
$Response = Invoke-RestMethod @Parameters
# Get download URL
# UUID is 8A8DC033-242C-DD2E-EDB0-CC864772D5F4
# https://www.deviantart.com/jepricreations/art/Windows-11-Cursors-Concept-886489356
$Headers = @{
Authorization = "Bearer $($Response.access_token)"
}
$Parameters = @{
Uri = "https://www.deviantart.com/api/v1/oauth2/deviation/download/8A8DC033-242C-DD2E-EDB0-CC864772D5F4?mature_content=true"
Headers = $Headers
Verbose = $true
UseBasicParsing = $true
}
$Response = Invoke-RestMethod @Parameters
$Response.src