:meth:`.WWebServiceProto.execute` method implementation

def execute(self, request, target_route):
		""" :meth:`.WWebServiceProto.execute` method implementation
		"""
		presenter = self.create_presenter(request, target_route)
		presenter_name = target_route.presenter_name()
		action_name = target_route.presenter_action()
		presenter_args = target_route.presenter_args()

		if hasattr(presenter, action_name) is False:
			raise RuntimeError('No such action "%s" for "%s" presenter' % (action_name, presenter_name))

		action = getattr(presenter, action_name)
		if ismethod(action) is False:
			raise RuntimeError(
				'Unable to execute "%s" action for "%s" presenter' % (action_name, presenter_name)
			)

		args_spec = getfullargspec(action)
		defaults = len(args_spec.defaults) if args_spec.defaults is not None else 0
		action_args = list()
		action_kwargs = dict()

		for i in range(len(args_spec.args)):
			arg = args_spec.args[i]
			if arg == 'self':
				continue

			is_kwarg = i >= (len(args_spec.args) - defaults)

			if is_kwarg is False:
				action_args.append(presenter_args[arg])
			elif arg in presenter_args:
				action_kwargs[arg] = presenter_args[arg]

		return action(*action_args, **action_kwargs)