Re-skin the API documentation layout for the retro theme to ensure readability and maintain the Windows 98 aesthetic. The default dark revamp tokens were unreadable on the black retro desktop background. Changes include: - Styling the API sidebar as a raised silver window with a classic title bar. - Styling endpoint cards as silver windows with navy title bars. - Excluding API navigation links, shortcut cards, and link pills from default retro link styles to prevent styling conflicts. - Updating API documentation content, including adding a section for resumable uploads.
82 lines
2.7 KiB
PowerShell
82 lines
2.7 KiB
PowerShell
#requires -version 5
|
|
<#
|
|
.SYNOPSIS
|
|
warpbox: command line uploader for Warpbox
|
|
.DESCRIPTION
|
|
Set the server once, then upload anything:
|
|
setx WARPBOX_HOST "https://your.warpbox.host"
|
|
warpbox .\report.pdf
|
|
|
|
Install (PowerShell):
|
|
iwr "$env:WARPBOX_HOST/static/api/warpbox.ps1" -OutFile $HOME\warpbox.ps1
|
|
# add a function to your $PROFILE: function warpbox { & "$HOME\warpbox.ps1" @args }
|
|
|
|
Auth: set the token once so it never lands in your command history.
|
|
setx WARPBOX_TOKEN "wbx_your_token"
|
|
Create a token under Account, Access tokens.
|
|
|
|
.EXAMPLE
|
|
.\warpbox.ps1 .\report.pdf
|
|
.EXAMPLE
|
|
.\warpbox.ps1 -Password 123 -Expiry 2d .\photo.png .\clip.mp4
|
|
#>
|
|
[CmdletBinding()]
|
|
param(
|
|
[Alias('p')][string]$Password,
|
|
[Alias('e')][string]$Expiry,
|
|
[Alias('n')][int]$MaxDownloads,
|
|
[Alias('o')][switch]$Obfuscate,
|
|
[string]$Server = $env:WARPBOX_HOST,
|
|
[string]$Auth = $env:WARPBOX_TOKEN,
|
|
[string]$AuthFile,
|
|
[switch]$Json,
|
|
[switch]$Help,
|
|
[Parameter(ValueFromRemainingArguments = $true)][string[]]$Files
|
|
)
|
|
|
|
if ($Help -or -not $Files) {
|
|
Write-Host 'warpbox: upload files to Warpbox'
|
|
Write-Host 'USAGE: warpbox.ps1 [-Password pw] [-Expiry 2d] [-MaxDownloads n] [-Obfuscate] [-Json] <file> [file ...]'
|
|
Write-Host 'SERVER: set WARPBOX_HOST in your environment (setx WARPBOX_HOST "https://your.host")'
|
|
Write-Host 'AUTH: set WARPBOX_TOKEN in your environment (setx WARPBOX_TOKEN "wbx_...")'
|
|
if (-not $Files -and -not $Help) { exit 2 } else { exit 0 }
|
|
}
|
|
|
|
if (-not $Server) {
|
|
Write-Error 'warpbox: no server set. Use -Server <url> or set WARPBOX_HOST'
|
|
exit 2
|
|
}
|
|
if ($AuthFile) { $Auth = (Get-Content -Raw $AuthFile).Trim() }
|
|
|
|
function ConvertTo-Minutes($v) {
|
|
if ($v -match '^(\d+)([mhdw]?)$') {
|
|
$n = [int]$Matches[1]
|
|
switch ($Matches[2]) {
|
|
'h' { return $n * 60 }
|
|
'd' { return $n * 1440 }
|
|
'w' { return $n * 10080 }
|
|
default { return $n }
|
|
}
|
|
}
|
|
return $v
|
|
}
|
|
|
|
# Expand wildcards (PowerShell does not expand them in arguments).
|
|
$expanded = @()
|
|
foreach ($f in $Files) {
|
|
$hits = Get-ChildItem -Path $f -File -ErrorAction SilentlyContinue
|
|
if ($hits) { $expanded += $hits.FullName } else { $expanded += $f }
|
|
}
|
|
|
|
$curlArgs = @('-fS')
|
|
foreach ($f in $expanded) { $curlArgs += @('-F', "file=@$f") }
|
|
if ($Password) { $curlArgs += @('-F', "password=$Password") }
|
|
if ($Expiry) { $curlArgs += @('-F', "expires_minutes=$(ConvertTo-Minutes $Expiry)") }
|
|
if ($MaxDownloads) { $curlArgs += @('-F', "max_downloads=$MaxDownloads") }
|
|
if ($Obfuscate) { $curlArgs += @('-F', 'obfuscate_metadata=on') }
|
|
if ($Auth) { $curlArgs += @('-H', "Authorization: Bearer $Auth") }
|
|
if ($Json) { $curlArgs += @('-H', 'Accept: application/json') }
|
|
$curlArgs += "$($Server.TrimEnd('/'))/api/v1/upload"
|
|
|
|
& curl.exe @curlArgs
|