| // Copyright 2015 The Weave Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #ifndef LIBWEAVE_SRC_COMMANDS_COMMAND_DEFINITION_H_ | |
| #define LIBWEAVE_SRC_COMMANDS_COMMAND_DEFINITION_H_ | |
| #include <memory> | |
| #include <string> | |
| #include <base/macros.h> | |
| #include <base/values.h> | |
| #include <weave/error.h> | |
| namespace weave { | |
| enum class UserRole { | |
| kViewer, | |
| kUser, | |
| kManager, | |
| kOwner, | |
| }; | |
| // A simple GCD command definition. This class contains the full object schema | |
| // describing the command parameter types and constraints. | |
| class CommandDefinition final { | |
| public: | |
| // Factory method to construct a command definition from a JSON dictionary. | |
| static std::unique_ptr<CommandDefinition> FromJson( | |
| const base::DictionaryValue& dict, ErrorPtr* error); | |
| const base::DictionaryValue& ToJson() const { return definition_; } | |
| // Returns the role required to execute command. | |
| UserRole GetMinimalRole() const { return minimal_role_; } | |
| private: | |
| CommandDefinition(const base::DictionaryValue& definition, | |
| UserRole minimal_role); | |
| base::DictionaryValue definition_; | |
| UserRole minimal_role_; | |
| DISALLOW_COPY_AND_ASSIGN(CommandDefinition); | |
| }; | |
| } // namespace weave | |
| #endif // LIBWEAVE_SRC_COMMANDS_COMMAND_DEFINITION_H_ |