diff options
Diffstat (limited to 'cast/sender/channel/message_util.cc')
-rw-r--r-- | cast/sender/channel/message_util.cc | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/cast/sender/channel/message_util.cc b/cast/sender/channel/message_util.cc index 48623cee..6d96b730 100644 --- a/cast/sender/channel/message_util.cc +++ b/cast/sender/channel/message_util.cc @@ -5,6 +5,7 @@ #include "cast/sender/channel/message_util.h" #include "cast/sender/channel/cast_auth_util.h" +#include "util/json/json_serialization.h" namespace openscreen { namespace cast { @@ -34,5 +35,33 @@ CastMessage CreateAuthChallengeMessage(const AuthContext& auth_context) { return message; } +ErrorOr<CastMessage> CreateAppAvailabilityRequest(const std::string& sender_id, + int request_id, + const std::string& app_id) { + Json::Value dict(Json::ValueType::objectValue); + dict[kMessageKeyType] = Json::Value( + CastMessageTypeToString(CastMessageType::kGetAppAvailability)); + Json::Value app_id_value(Json::ValueType::arrayValue); + app_id_value.append(Json::Value(app_id)); + dict[kMessageKeyAppId] = std::move(app_id_value); + dict[kMessageKeyRequestId] = Json::Value(request_id); + + CastMessage message; + message.set_payload_type(::cast::channel::CastMessage_PayloadType_STRING); + ErrorOr<std::string> serialized = json::Stringify(dict); + if (serialized.is_error()) { + return serialized.error(); + } + message.set_payload_utf8(serialized.value()); + + message.set_protocol_version( + ::cast::channel::CastMessage_ProtocolVersion_CASTV2_1_0); + message.set_source_id(sender_id); + message.set_destination_id(kPlatformReceiverId); + message.set_namespace_(kReceiverNamespace); + + return message; +} + } // namespace cast } // namespace openscreen |