jellyflood/JellyfinPlayer/OpenCastSwift/Models/CastMessage.swift

37 lines
1005 B
Swift

//
// CastMessage.swift
// OpenCastSwift
//
// Created by Miles Hollingsworth on 4/22/18
// Copyright © 2018 Miles Hollingsworth. All rights reserved.
//
import Foundation
extension CastMessage {
static func encodedMessage(payload: CastPayload, namespace: String, sourceId: String, destinationId: String) throws -> Data {
var message = CastMessage()
message.protocolVersion = .castv210
message.sourceID = sourceId
message.destinationID = destinationId
message.namespace = namespace
switch payload {
case .json(let payload):
let json = try JSONSerialization.data(withJSONObject: payload, options: [])
guard let jsonString = String(data: json, encoding: .utf8) else {
fatalError("error forming json string")
}
message.payloadType = .string
message.payloadUtf8 = jsonString
case .data(let payload):
message.payloadType = .binary
message.payloadBinary = payload
}
return try message.serializedData()
}
}