Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 20 additions & 1 deletion antd-swift/Sources/AntdSdk/AntdRestClient.swift
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ public final class AntdRestClient: AntdClientProtocol, @unchecked Sendable {
public func health() async throws -> HealthStatus {
do {
let resp: HealthResponseDTO = try await getJSON("/health")
return HealthStatus(ok: resp.status == "ok", network: resp.network ?? "unknown")
return resp.toHealthStatus()
} catch {
return HealthStatus(ok: false, network: "unknown")
}
Expand Down Expand Up @@ -251,6 +251,25 @@ public final class AntdRestClient: AntdClientProtocol, @unchecked Sendable {
private struct HealthResponseDTO: Decodable {
let status: String?
let network: String?
let version: String?
let evm_network: String?
let uptime_seconds: UInt64?
let build_commit: String?
let payment_token_address: String?
let payment_vault_address: String?

func toHealthStatus() -> HealthStatus {
HealthStatus(
ok: status == "ok",
network: network ?? "unknown",
version: version ?? "",
evmNetwork: evm_network ?? "",
uptimeSeconds: uptime_seconds ?? 0,
buildCommit: build_commit ?? "",
paymentTokenAddress: payment_token_address ?? "",
paymentVaultAddress: payment_vault_address ?? ""
)
}
}

private struct CostAddressDTO: Decodable {
Expand Down
28 changes: 27 additions & 1 deletion antd-swift/Sources/AntdSdk/Models.swift
Original file line number Diff line number Diff line change
@@ -1,13 +1,39 @@
import Foundation

/// Health check result from the antd daemon.
///
/// The diagnostic fields (`version`, `evmNetwork`, `uptimeSeconds`,
/// `buildCommit`, `paymentTokenAddress`, `paymentVaultAddress`) were added in
/// antd 0.4.0. They default to `""` / `0` so the struct stays usable when
/// talking to a pre-0.4.0 daemon that doesn't report them.
public struct HealthStatus: Sendable, Equatable {
public let ok: Bool
public let network: String
public let version: String
public let evmNetwork: String
public let uptimeSeconds: UInt64
public let buildCommit: String
public let paymentTokenAddress: String
public let paymentVaultAddress: String

public init(ok: Bool, network: String) {
public init(
ok: Bool,
network: String,
version: String = "",
evmNetwork: String = "",
uptimeSeconds: UInt64 = 0,
buildCommit: String = "",
paymentTokenAddress: String = "",
paymentVaultAddress: String = ""
) {
self.ok = ok
self.network = network
self.version = version
self.evmNetwork = evmNetwork
self.uptimeSeconds = uptimeSeconds
self.buildCommit = buildCommit
self.paymentTokenAddress = paymentTokenAddress
self.paymentVaultAddress = paymentVaultAddress
}
}

Expand Down
20 changes: 20 additions & 0 deletions antd-swift/Tests/AntdSdkTests/SmokeTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,26 @@ final class SmokeTests: XCTestCase {
let health = HealthStatus(ok: true, network: "local")
XCTAssertTrue(health.ok)
XCTAssertEqual(health.network, "local")
// Diagnostic fields default to empty / 0 for the 2-arg init,
// so callers + pre-0.4.0 daemon responses both still work.
XCTAssertEqual(health.version, "")
XCTAssertEqual(health.evmNetwork, "")
XCTAssertEqual(health.uptimeSeconds, 0)
XCTAssertEqual(health.buildCommit, "")

let fullHealth = HealthStatus(
ok: true,
network: "default",
version: "0.4.0",
evmNetwork: "arbitrum-one",
uptimeSeconds: 42,
buildCommit: "abcdef123456",
paymentTokenAddress: "0xtoken",
paymentVaultAddress: "0xvault"
)
XCTAssertEqual(fullHealth.version, "0.4.0")
XCTAssertEqual(fullHealth.evmNetwork, "arbitrum-one")
XCTAssertEqual(fullHealth.uptimeSeconds, 42)

let put = PutResult(cost: "100", address: "abc123")
XCTAssertEqual(put.cost, "100")
Expand Down