Пример #1
0
 def get_result(self, method, **overrides):
     args, kwargs = get_arguments(method)
     arg_values = []
     for name in args:
         if name in overrides:
             arg_values.append(overrides[name])
         elif name in self.arguments:
             arg_values.append(self.arguments[name])
         else:
             self.fail('Missing argument "%s" for %s' % (name, method.__name__))
     for key in kwargs:
         if key in overrides:
             kwargs[key] = overrides[key]
         elif key in self.arguments:
             kwargs[key] = self.arguments[key]
     return method(*arg_values, **kwargs)
Пример #2
0
 def get_result(self, method, **overrides):
     args, kwargs = get_arguments(method)
     arg_values = []
     for name in args:
         if name in overrides:
             arg_values.append(overrides[name])
         elif name in self.arguments:
             arg_values.append(self.arguments[name])
         else:
             self.fail('Missing argument "%s" for %s' %
                       (name, method.__name__))
     for key in kwargs:
         if key in overrides:
             kwargs[key] = overrides[key]
         elif key in self.arguments:
             kwargs[key] = self.arguments[key]
     return method(*arg_values, **kwargs)
Пример #3
0
    def run(self, xml_data):
        """
        Processes the XML data, executes the commands, and returns the result.

        This is just a version of _marshaled_dispatch that uses datetime objects
        rather than these weird DateTime instances.

        """

        try:
            params, method_name = xmlrpclib.loads(xml_data, use_datetime=1)
        except Exception:
            return self._exception_response()

        if logging.debug:
            method = self.funcs.get(method_name)
            if method:
                # Log the method signature that is being called.
                # Hide the password though!
                args = list(get_arguments(method)[0])
                for (position, (name, value)) in enumerate(zip(args, params)):
                    if name == 'password':
                        value = '*' * len(value)
                    args[position] = value
                logging.debug('Running %s%s' % (method_name, tuple(args)))

        try:
            response = self._dispatch(method_name, params)
            response = (response,)
            return xmlrpclib.dumps(response, methodresponse=1,
                                   allow_none=self.allow_none,
                                   encoding=self.encoding)

        except Fault, fault:
            logging.warning('Fault: %s' % fault)
            return xmlrpclib.dumps(
                fault,
                allow_none=self.allow_none,
                encoding=self.encoding,
            )