aboutsummaryrefslogtreecommitdiff
path: root/cast/sender/channel/message_util.cc
diff options
context:
space:
mode:
Diffstat (limited to 'cast/sender/channel/message_util.cc')
-rw-r--r--cast/sender/channel/message_util.cc29
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