| // 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_ |