def __api_processor(self, valid_dispatch, valid_response, isubscriber): """ Will loop through a valid response objects and will compare it to a registered protocol subscribers :param valid_dispatch: :param valid_response: :param isubscriber: :return: The chosen API or False """ for sub in subscribers([valid_response], isubscriber): self.__logger.debug('Matched request subscribers: {}'.format(sub.__class__.__name__)) try: verifyObject(isubscriber, sub) except DoesNotImplement as e: self.__logger.warning('Incorrect implementation: {}'.format(e)) else: comp = sub.compare() if comp is not False and IJSONResource.providedBy(comp): self.__logger.debug('Signature compare to {}'.format(comp.__class__.__name__)) # trying to resolve API that will deal with these request if len(comp.to_dict().keys()) > 1: # process request without root element return NonRootAPI(comp).check() else: # root element return RootAPI(comp).check() # if there are no one subsciber from IJSONResource self.__logger.warning('The request {} from type {} was not recognized as a structure or an API'.format( valid_response.response, valid_dispatch.message_type )) return False
def __api_processor(self, valid_dispatch, valid_response, isubscriber): """ Will loop through a valid response objects and will compare it to a registered protocol subscribers :param valid_dispatch: :param valid_response: :param isubscriber: :return: The chosen API or False """ for sub in subscribers([valid_response], isubscriber): self.__logger.debug('Matched request subscribers: {}'.format( sub.__class__.__name__)) try: verifyObject(isubscriber, sub) except DoesNotImplement as e: self.__logger.warning('Incorrect implementation: {}'.format(e)) else: comp = sub.compare() if comp is not False and IJSONResource.providedBy(comp): self.__logger.debug('Signature compare to {}'.format( comp.__class__.__name__)) # trying to resolve API that will deal with these request if len(comp.to_dict().keys()) > 1: # process request without root element return NonRootAPI(comp).check() else: # root element return RootAPI(comp).check() # if there are no one subsciber from IJSONResource self.__logger.warning( 'The request {} from type {} was not recognized as a structure or an API' .format(valid_response.response, valid_dispatch.message_type)) return False
def result_validation(self, sender=None, drop=None, section='TCP'): """ A Result Helper more info TBA :param sender: :param drop: :param section: :return: mixin """ if IValidator.providedBy(self.factory): self.__logger.warning('{} Message is invalid: {}'.format( section, self.factory.message)) if drop is not None: drop() else: return 'message is invalid' else: if self.factory: self.__logger.info('{} Response: {}'.format( section, self.factory)) if IJSONResource.providedBy(self.factory): if sender is not None: sender(self.factory.to_json()) else: return self.factory.to_json() elif isinstance(self.factory, Deferred): self.factory.addCallback(self.deferred_response, sender) self.factory.addErrback(self.deferred_response_error) else: self.__logger.warning( '{}: This message was not be dispatched'.format(section)) drop()
def subscriber_dispatcher(self, sub_data): """ Callback function for our global subscriber will pass sub_data to GlobalSubscribeMessage and then will trying to get wamp component which implements IUserGlobalSubscriber and adapts IGlobalSubscribeMessage :param sub_data: """ log = Logger() try: result = IDispatcher(Validator(sub_data)).dispatch() # NETODO what exception can happen here? except Exception as e: import traceback print traceback.format_exc() log.warning('subscriber_dispatcher exception: {}'.format( e.message)) else: if IValidator.providedBy(result): log.warning('WAMP Message is invalid: {}'.format( result.message)) if result is not False and IJSONResource.providedBy(result): fac = None for sub in subscribers([result], IUserGlobalSubscriber): sub.subscribe(self) fac = True break if not fac: log.warning( 'There are no user definition for IUserGlobalSubscriber, message was skipped' )
def subscriber_dispatcher(self, sub_data): """ Callback function for our global subscriber will pass sub_data to GlobalSubscribeMessage and then will trying to get wamp component which implements IUserGlobalSubscriber and adapts IGlobalSubscribeMessage :param sub_data: """ log = Logger() try: result = IDispatcher(Validator(sub_data)).dispatch() # NETODO what exception can happen here? except Exception as e: import traceback print traceback.format_exc() log.warning('subscriber_dispatcher exception: {}'.format( e.message )) else: if IValidator.providedBy(result): log.warning('WAMP Message is invalid: {}'.format(result.message)) if result is not False and IJSONResource.providedBy(result): fac = None for sub in subscribers([result], IUserGlobalSubscriber): sub.subscribe(self) fac = True break if not fac: log.warning('There are no user definition for IUserGlobalSubscriber, message was skipped')
def result_validation(self, sender=None, drop=None, section='TCP'): """ A Result Helper more info TBA :param sender: :param drop: :param section: :return: mixin """ if IValidator.providedBy(self.factory): self.__logger.warning('{} Message is invalid: {}'.format(section, self.factory.message)) if drop is not None: drop() else: return 'message is invalid' else: if self.factory: self.__logger.info('{} Response: {}'.format(section, self.factory)) if IJSONResource.providedBy(self.factory): if sender is not None: sender(self.factory.to_json()) else: return self.factory.to_json() elif isinstance(self.factory, Deferred): self.factory.addCallback(self.deferred_response, sender) self.factory.addErrback(self.deferred_response_error) else: self.__logger.warning('{}: This message was not be dispatched'.format(section)) drop()