Files
steipete--codexbar/Sources/CodexBarClaudeWebProbe/ClaudeWebProbeEntry.swift
T
2026-07-13 12:22:33 +08:00

64 lines
2.4 KiB
Swift

import CodexBarCore
import Foundation
@main
enum CodexBarClaudeWebProbe {
private static let defaultEndpoints: [String] = [
"https://claude.ai/api/organizations",
"https://claude.ai/api/organizations/{orgId}/usage",
"https://claude.ai/api/organizations/{orgId}/overage_spend_limit",
"https://claude.ai/api/organizations/{orgId}/members",
"https://claude.ai/api/organizations/{orgId}/me",
"https://claude.ai/api/organizations/{orgId}/billing",
"https://claude.ai/api/me",
"https://claude.ai/api/user",
"https://claude.ai/api/session",
"https://claude.ai/api/account",
"https://claude.ai/settings/billing",
"https://claude.ai/settings/account",
"https://claude.ai/settings/usage",
]
static func main() async {
let args = CommandLine.arguments.dropFirst()
let endpoints = args.isEmpty ? Self.defaultEndpoints : Array(args)
let includePreview = ProcessInfo.processInfo.environment["CLAUDE_WEB_PROBE_PREVIEW"] == "1"
do {
let results = try await ClaudeWebAPIFetcher.probeEndpoints(
endpoints,
browserDetection: BrowserDetection(cacheTTL: 0),
includePreview: includePreview)
for result in results {
Self.printResult(result)
}
} catch {
fputs("Probe failed: \(error.localizedDescription)\n", stderr)
Darwin.exit(1)
}
}
private static func printResult(_ result: ClaudeWebAPIFetcher.ProbeResult) {
let status = result.statusCode.map(String.init) ?? "error"
print("==> \(result.url)")
print("status: \(status)")
if let contentType = result.contentType { print("content-type: \(contentType)") }
if !result.topLevelKeys.isEmpty {
print("keys: \(result.topLevelKeys.joined(separator: ", "))")
}
if !result.emails.isEmpty {
print("emails: \(result.emails.joined(separator: ", "))")
}
if !result.planHints.isEmpty {
print("plan-hints: \(result.planHints.joined(separator: ", "))")
}
if !result.notableFields.isEmpty {
print("fields: \(result.notableFields.joined(separator: ", "))")
}
if let preview = result.bodyPreview, !preview.isEmpty {
print("preview: \(preview)")
}
print("")
}
}