Implements new input scheme API on Webcontrollers.

pull/1555/head
Kieran R. Prasch 2020-01-08 18:38:43 -08:00 committed by damon
parent 71a7fc7a1c
commit e70ba7eb18
5 changed files with 20 additions and 15 deletions

View File

@ -304,9 +304,16 @@ class WebController(CharacterControlServer):
_400_exceptions = (MissingField,
InvalidInputField,
)
TypeError,
JSONDecodeError)
try:
response = interface(request=control_request.data, *args, **kwargs) # < ------- INLET
request_body = control_request.data or dict()
if request_body:
request_body = json.loads(request_body)
request_body.update(kwargs)
response = self._perform_action(action=interface.__name__, request=request_body)
#
# Client Errors
@ -350,4 +357,4 @@ class WebController(CharacterControlServer):
#
else:
self.log.debug(f"{interface_name} [200 - OK]")
return response
return self.emitter.respond(response=response)

View File

@ -212,11 +212,9 @@ class WebEmitter:
self.log = Logger('web-emitter')
@staticmethod
def assemble_response(response: dict, request_id: int, duration) -> dict:
def assemble_response(response: dict) -> dict:
response_data = {'result': response,
'version': str(nucypher.__version__),
'id': str(request_id),
'duration': str(duration)}
'version': str(nucypher.__version__)}
return response_data
def exception(drone_character,
@ -232,10 +230,8 @@ class WebEmitter:
raise e
return drone_character.sink(str(e), status=response_code)
def ipc(drone_character, response, request_id, duration) -> Response:
assembled_response = drone_character.assemble_response(response=response,
request_id=request_id,
duration=duration)
def respond(drone_character, response) -> Response:
assembled_response = drone_character.assemble_response(response=response)
serialized_response = WebEmitter.transport_serializer(assembled_response)
# ---------- HTTP OUTPUT

View File

@ -125,7 +125,7 @@ class AliceInterface(CharacterPublicInterface):
label=label
)
plaintexts = self.alice.decrypt_message_kit(
plaintexts = self.character.decrypt_message_kit(
message_kit=message_kit,
data_source=data_source,
label=label

View File

@ -9,4 +9,4 @@ class EncryptMessage(BaseSchema):
# output
message_kit = fields.UmbralMessageKit(dump_only=True)
signature = fields.Str(dump_only=True) # maybe we need a signature field?
signature = fields.String(dump_only=True) # maybe we need a signature field?

View File

@ -718,7 +718,8 @@ class Bob(Character):
app_name = bytes(drone_bob.stamp).hex()[:6]
controller = WebController(app_name=app_name,
character_controller=drone_bob.controller,
crash_on_error=crash_on_error)
crash_on_error=crash_on_error,
interface=drone_bob._interface_class(character=drone_bob))
drone_bob.controller = controller.make_control_transport()
@ -1338,7 +1339,8 @@ class Enrico(Character):
app_name = bytes(drone_enrico.stamp).hex()[:6]
controller = WebController(app_name=app_name,
character_controller=drone_enrico.controller,
crash_on_error=crash_on_error)
crash_on_error=crash_on_error,
interface=drone_enrico._interface_class(character=drone_enrico))
drone_enrico.controller = controller