diff --git a/Sources/JetStream/context.swift b/Sources/JetStream/context.swift index 4b0b39f..75b2f7f 100644 --- a/Sources/JetStream/context.swift +++ b/Sources/JetStream/context.swift @@ -56,6 +56,7 @@ extension JetStreamContext { struct AckFuture { var sub: NatsSubscription + //TODO(jrm): Add handling of all response errors (wrong expected sequence etc.) func wait() async throws -> Ack { guard let response = await sub.makeAsyncIterator().next() else { throw JetStreamPublishError("broken pipe") diff --git a/Sources/JetStream/errors.swift b/Sources/JetStream/errors.swift index 0dfe70e..af49b2a 100644 --- a/Sources/JetStream/errors.swift +++ b/Sources/JetStream/errors.swift @@ -16,8 +16,14 @@ import Foundation struct JetStreamError: Codable { var code: uint //FIXME(jrm): This should be mapped to predefined JetStream errors from the server. - var err_code: ErrorCode + var errorCode: ErrorCode var description: String? + + enum CodingKeys: String, CodingKey { + case code = "code" + case errorCode = "err_code" + case description = "description" + } } struct ErrorCode: Codable { @@ -26,7 +32,7 @@ struct ErrorCode: Codable { static let clusterPeerNotMember = ErrorCode(rawValue: 10040) /// Consumer expected to be ephemeral but detected a durable name set in subject - static let consumerephemeral_with_durable = ErrorCode(rawValue: 10019) + static let consumerEphemeralWithDurable = ErrorCode(rawValue: 10019) /// Stream external delivery prefix overlaps with stream subject static let streamExternalDeletePrefixOverlaps = ErrorCode(rawValue: 10022) @@ -507,5 +513,5 @@ enum Response: Codable { } func test() { - JetStreamError(code: 400, err_code: ErrorCode.accountResourcesExceeded, description: nil) + JetStreamError(code: 400, errorCode: ErrorCode.accountResourcesExceeded, description: nil) }