1# 2# Copyright (C) 2017 The Android Open Source Project 3# 4# Licensed under the Apache License, Version 2.0 (the "License"); 5# you may not use this file except in compliance with the License. 6# You may obtain a copy of the License at 7# 8# http://www.apache.org/licenses/LICENSE-2.0 9# 10# Unless required by applicable law or agreed to in writing, software 11# distributed under the License is distributed on an "AS IS" BASIS, 12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13# See the License for the specific language governing permissions and 14# limitations under the License. 15# 16 17 18class ApiMessage(object): 19 """The class for the messages defined by TFC API.""" 20 21 def __init__(self, all_keys, **kwargs): 22 """Initializes the attributes. 23 24 Args: 25 all_keys: A collection of attribute names. 26 **kwargs: The names and values of the attributes. The names must be 27 in all_keys. 28 29 Raises: 30 KeyError if any key in kwargs is not in all_keys. 31 """ 32 for key, value in kwargs.iteritems(): 33 if key not in all_keys: 34 raise KeyError(key) 35 setattr(self, key, value) 36 37 def ToJson(self, keys): 38 """Creates a JSON object containing the specified keys. 39 40 Args: 41 keys: The attributes to be included in the object. 42 43 Returns: 44 A JSON object. 45 """ 46 return dict((x, getattr(self, x)) for x in keys if hasattr(self, x)) 47