import Foundation

/// Parses Ably-specific JSON message format from SSE data.
public struct AblyMessageParser {
    private let decoder: JSONDecoder
    
    public init(decoder: JSONDecoder = JSONDecoder()) {
        self.decoder = decoder
    }
    
    /// Parses Ably JSON message from SSE event data.
    /// - Parameter jsonString: The JSON string from SSE data field
    /// - Returns: AblyEvent.Message on success, AblyEvent.Error on failure
    public func parseMessage(_ jsonString: String) -> AblyEvent {
        do {
            let data = jsonString.data(using: .utf8) ?? Data()
            let message = try decoder.decode(AblyMessage.self, from: data)
            print("📡 Parsed Ably message: \(message)")
            return .message(message)
        } catch {
            print("❌ Failed to parse Ably message: \(jsonString), error: \(error)")
            return .error(error)
        }
    }
}
