43 lines
1.2 KiB
Python
43 lines
1.2 KiB
Python
# Copyright (C) 2015 Custodia Project Contributors - see LICENSE file
|
|
from __future__ import absolute_import
|
|
|
|
from six import string_types
|
|
|
|
from ipaserver.custodia.message.common import InvalidMessage
|
|
from ipaserver.custodia.message.common import MessageHandler
|
|
|
|
|
|
class SimpleKey(MessageHandler):
|
|
"""Handles 'simple' messages"""
|
|
|
|
def parse(self, msg, name):
|
|
"""Parses a simple message
|
|
|
|
:param msg: the json-decoded value
|
|
:param name: the requested name
|
|
|
|
:raises UnknownMessageType: if the type is not 'simple'
|
|
:raises InvalidMessage: if the message cannot be parsed or validated
|
|
"""
|
|
|
|
# On requests we imply 'simple' if there is no input message
|
|
if msg is None:
|
|
return
|
|
|
|
if not isinstance(msg, string_types):
|
|
raise InvalidMessage("The 'value' attribute is not a string")
|
|
|
|
self.name = name
|
|
self.payload = msg
|
|
self.msg_type = 'simple'
|
|
|
|
def reply(self, output):
|
|
if output is None:
|
|
return None
|
|
|
|
if self.name.endswith('/'):
|
|
# directory listings are pass-through with simple messages
|
|
return output
|
|
|
|
return {'type': self.msg_type, 'value': output}
|