1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
|
// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROMEOS_ASH_COMPONENTS_BOCA_SESSION_API_SESSION_PARSER_H_
#define CHROMEOS_ASH_COMPONENTS_BOCA_SESSION_API_SESSION_PARSER_H_
#include <string>
#include "base/values.h"
#include "chromeos/ash/components/boca/proto/bundle.pb.h"
#include "chromeos/ash/components/boca/proto/roster.pb.h"
#include "chromeos/ash/components/boca/proto/session.pb.h"
namespace ash::boca {
// Enum translation
::boca::StudentStatus::StudentState StudentStatusJsonToProto(
const std::string& status);
::boca::Session::SessionState SessionStateJsonToProto(const std::string& state);
::boca::LockedNavigationOptions::NavigationType NavigationTypeJsonToProto(
const std::string& type);
::boca::StudentGroup::GroupSource GroupSourceJsonToProto(
const std::string& type);
::boca::ViewScreenConfig::ViewScreenState ViewScreenStateJsonToProto(
const std::string& type);
// Proto to Json
void ParseTeacherProtoFromJson(base::Value::Dict* session_dict,
::boca::Session* session);
void ParseJoinCodeProtoFromJson(base::Value::Dict* session_dict,
::boca::Session* session);
void ParseRosterProtoFromJson(base::Value::Dict* session_dict,
::boca::Session* session);
void ParseSessionConfigProtoFromJson(base::Value::Dict* session_dict,
::boca::Session* session,
bool is_producer);
void ParseStudentStatusProtoFromJson(base::Value::Dict* session_dict,
::boca::Session* session,
bool is_producer);
void ParseIndividualStudentStatusFromJson(
::boca::StudentStatus* student_status,
base::Value::Dict* student_status_dict);
// This helper returns unique_ptr for easier lifecycle management.
std::unique_ptr<::boca::Session> GetSessionProtoFromJson(std::string json,
bool is_producer);
// Json to Proto
void ParseRosterJsonFromProto(::boca::Roster* roster,
base::Value::Dict* roster_dict);
void ParseOnTaskConfigJsonFromProto(::boca::OnTaskConfig* on_task_config,
base::Value::Dict* on_task_config_dict);
void ParseCaptionConfigJsonFromProto(::boca::CaptionsConfig* captions_config,
base::Value::Dict* caption_config_dict);
} // namespace ash::boca
#endif // CHROMEOS_ASH_COMPONENTS_BOCA_SESSION_API_SESSION_PARSER_H_
|