Fortune_Tester/FortuneBetAPI.ps1
2026-04-06 13:57:08 +03:00

95 lines
2.5 KiB
PowerShell

# FortuneBetAPI.ps1
# Global state
$Global:FortuneBetToken = $null
$Global:FortuneBetRefreshToken = $null
$Global:ApiBase = "http://127.0.0.1:8080/api/v1"
$Global:TenantSlug = "fortunebets" # adjust if different
function Invoke-FortuneBetRequest {
param(
[string]$Method,
[string]$Path,
[object]$Body = $null,
[switch]$Tenant
)
$url = if ($Tenant) {
"$Global:ApiBase/tenant/$Global:TenantSlug/$Path"
} else {
"$Global:ApiBase/$Path"
}
$headers = @{
"Content-Type" = "application/json"
}
if ($Global:FortuneBetToken) {
$headers["Authorization"] = "Bearer $($Global:FortuneBetToken)"
}
$bodyJson = if ($Body) { ($Body | ConvertTo-Json -Depth 5 -Compress) } else { $null }
try {
$response = Invoke-RestMethod -Method $Method -Uri $url -Headers $headers -Body $bodyJson
return $response
}
catch {
Write-Error "Request failed: $($_.Exception.Message)"
if ($_.ErrorDetails) { Write-Host $_.ErrorDetails }
}
}
function Login-FortuneBetCustomer {
param(
[string]$Email,
[string]$Password
)
$payload = @{
email = $Email
password = $Password
}
$resp = Invoke-FortuneBetRequest -Method "POST" -Path "auth/customer-login" -Tenant -Body $payload
if ($resp -and $resp.access_token) {
$Global:FortuneBetToken = $resp.access_token
$Global:FortuneBetRefreshToken = $resp.refresh_token
Write-Host "✅ Logged in. Token stored."
} else {
Write-Error "❌ Login failed. Response: $($resp | ConvertTo-Json -Depth 5)"
}
}
function Refresh-FortuneBetToken {
if (-not $Global:FortuneBetRefreshToken) {
Write-Error "No refresh token stored."
return
}
$payload = @{
refresh_token = $Global:FortuneBetRefreshToken
}
$resp = Invoke-FortuneBetRequest -Method "POST" -Path "auth/refresh" -Body $payload
if ($resp -and $resp.access_token) {
$Global:FortuneBetToken = $resp.access_token
Write-Host "🔄 Token refreshed."
} else {
Write-Error "❌ Refresh failed."
}
}
# Example convenience wrapper
function Get-FortuneBetProfile {
$resp = Invoke-FortuneBetRequest -Method "GET" -Path "user/customer-profile" -Tenant
return $resp
}
# Example usage:
# . .\FortuneBetAPI.ps1 # dot-source to load functions
# Login-FortuneBetCustomer -Email "test@example.com" -Password "1234"
# Get-FortuneBetProfile
# Refresh-FortuneBetToken