LightDiffusion-Next / tests /server_test.ps1
Aatricks's picture
Deploy ZeroGPU Gradio Space snapshot
b701455
<#
.SYNOPSIS
This script provides Windows PowerShell equivalents for the provided curl commands.
It uses Invoke-RestMethod, which natively handles JSON parsing.
You can run each command block separately in your PowerShell terminal.
#>
# -----------------------------------------------------------------
# Command 1: Generate Image
#
# Original:
# curl -X POST http://localhost:7861/api/generate \
# -H "Content-Type: application/json" \
# -d '{"prompt": "painted nebula over distant mountains", "width": 512, "height": 512, "num_images": 1}' \
# | jq -r '.image' | base64 -d > nebula.png
# -----------------------------------------------------------------
Write-Host "Running Command 1: Generating Image..."
# 1. Define the request body as a PowerShell object
$body = @{
prompt = "painted nebula over distant mountains"
width = 512
height = 512
num_images = 1
}
# 2. Make the API call. Invoke-RestMethod automatically:
# - Parses the JSON response into a PowerShell object
try {
# *** FIX 2: Manually convert the body to a JSON string ***
# This ensures that Invoke-RestMethod sends the exact JSON payload
# and avoids potential auto-conversion issues that can result in an empty body.
$jsonBody = $body | ConvertTo-Json -Depth 10
$response = Invoke-RestMethod -Uri "http://localhost:7861/api/generate" -Method POST -Body $jsonBody -ContentType 'application/json'
# 3. Access the 'image' property from the response object
# (This replaces the need for `jq -r '.image'`)
$base64Image = $response.image
if ($base64Image) {
# 4. Decode the Base64 string into raw bytes
# (This replaces the need for `base64 -d`)
$imageBytes = [System.Convert]::FromBase64String($base64Image)
# 5. Save the bytes to a file
# (This replaces `> nebula.png`)
Set-Content -Path ".\nebula.png" -Value $imageBytes -Encoding Byte -NoNewline
Write-Host "Success! Image saved to '.\nebula.png'"
} else {
Write-Warning "API response did not contain an 'image' field."
Write-Host "Full Response:"
Write-Output $response | ConvertTo-Json -Depth 10
}
} catch {
Write-Error "Failed to call API: $_"
}
Write-Host "`n" -NoNewline
# -----------------------------------------------------------------
# Command 2: Inspect Queue State
#
# Original:
# curl http://localhost:7861/api/telemetry | jq
# -----------------------------------------------------------------
Write-Host "Running Command 2: Inspecting Telemetry..."
try {
# Invoke-RestMethod makes the GET request and parses the JSON.
# PowerShell automatically formats the output object, similar to jq.
$telemetry = Invoke-RestMethod -Uri "http://localhost:7861/api/telemetry"
# Output the resulting object.
# For a view closer to `jq`, you can pipe to ConvertTo-Json:
# $telemetry | ConvertTo-Json -Depth 100
Write-Host "Telemetry Data:"
Write-Output $telemetry
} catch {
Write-Error "Failed to call API: $_"
}