mirror of https://github.com/nucypher/nucypher.git
Implements new input scheme API on Webcontrollers.
parent
71a7fc7a1c
commit
e70ba7eb18
|
@ -304,9 +304,16 @@ class WebController(CharacterControlServer):
|
||||||
|
|
||||||
_400_exceptions = (MissingField,
|
_400_exceptions = (MissingField,
|
||||||
InvalidInputField,
|
InvalidInputField,
|
||||||
)
|
TypeError,
|
||||||
|
JSONDecodeError)
|
||||||
|
|
||||||
try:
|
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
|
# Client Errors
|
||||||
|
@ -350,4 +357,4 @@ class WebController(CharacterControlServer):
|
||||||
#
|
#
|
||||||
else:
|
else:
|
||||||
self.log.debug(f"{interface_name} [200 - OK]")
|
self.log.debug(f"{interface_name} [200 - OK]")
|
||||||
return response
|
return self.emitter.respond(response=response)
|
||||||
|
|
|
@ -212,11 +212,9 @@ class WebEmitter:
|
||||||
self.log = Logger('web-emitter')
|
self.log = Logger('web-emitter')
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def assemble_response(response: dict, request_id: int, duration) -> dict:
|
def assemble_response(response: dict) -> dict:
|
||||||
response_data = {'result': response,
|
response_data = {'result': response,
|
||||||
'version': str(nucypher.__version__),
|
'version': str(nucypher.__version__)}
|
||||||
'id': str(request_id),
|
|
||||||
'duration': str(duration)}
|
|
||||||
return response_data
|
return response_data
|
||||||
|
|
||||||
def exception(drone_character,
|
def exception(drone_character,
|
||||||
|
@ -232,10 +230,8 @@ class WebEmitter:
|
||||||
raise e
|
raise e
|
||||||
return drone_character.sink(str(e), status=response_code)
|
return drone_character.sink(str(e), status=response_code)
|
||||||
|
|
||||||
def ipc(drone_character, response, request_id, duration) -> Response:
|
def respond(drone_character, response) -> Response:
|
||||||
assembled_response = drone_character.assemble_response(response=response,
|
assembled_response = drone_character.assemble_response(response=response)
|
||||||
request_id=request_id,
|
|
||||||
duration=duration)
|
|
||||||
serialized_response = WebEmitter.transport_serializer(assembled_response)
|
serialized_response = WebEmitter.transport_serializer(assembled_response)
|
||||||
|
|
||||||
# ---------- HTTP OUTPUT
|
# ---------- HTTP OUTPUT
|
||||||
|
|
|
@ -125,7 +125,7 @@ class AliceInterface(CharacterPublicInterface):
|
||||||
label=label
|
label=label
|
||||||
)
|
)
|
||||||
|
|
||||||
plaintexts = self.alice.decrypt_message_kit(
|
plaintexts = self.character.decrypt_message_kit(
|
||||||
message_kit=message_kit,
|
message_kit=message_kit,
|
||||||
data_source=data_source,
|
data_source=data_source,
|
||||||
label=label
|
label=label
|
||||||
|
|
|
@ -9,4 +9,4 @@ class EncryptMessage(BaseSchema):
|
||||||
|
|
||||||
# output
|
# output
|
||||||
message_kit = fields.UmbralMessageKit(dump_only=True)
|
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?
|
||||||
|
|
|
@ -718,7 +718,8 @@ class Bob(Character):
|
||||||
app_name = bytes(drone_bob.stamp).hex()[:6]
|
app_name = bytes(drone_bob.stamp).hex()[:6]
|
||||||
controller = WebController(app_name=app_name,
|
controller = WebController(app_name=app_name,
|
||||||
character_controller=drone_bob.controller,
|
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()
|
drone_bob.controller = controller.make_control_transport()
|
||||||
|
|
||||||
|
@ -1338,7 +1339,8 @@ class Enrico(Character):
|
||||||
app_name = bytes(drone_enrico.stamp).hex()[:6]
|
app_name = bytes(drone_enrico.stamp).hex()[:6]
|
||||||
controller = WebController(app_name=app_name,
|
controller = WebController(app_name=app_name,
|
||||||
character_controller=drone_enrico.controller,
|
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
|
drone_enrico.controller = controller
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue