code: def _validate(self, request):
          
          call_arguments = self.get_call_arguments(request)
          args = call_arguments["transport_args"]
          rest = call_arguments["handler_args"]
          params = call_arguments["raw_args"]
  
          self._validate_generic_parameters(args)
  
          def create_call(principal):
              self._validate_principal(principal, args)
              self._validate_signature(request, principal, args, params)
              return Call(raw_params=rest,
                          principal=principal,
                          action=args["action"],
                          version=args["version"],
                          id=request.id)
  
          deferred = maybeDeferred(self.get_principal, args["access_key_id"])
          deferred.addCallback(create_call)
          return deferred
docs: Validate an L{HTTPRequest} before executing it.
  
          The following conditions are checked:
  
          - The request contains all the generic parameters.
          - The action specified in the request is a supported one.
          - The signature mechanism is a supported one.
          - The provided signature matches the one calculated using the locally
            stored secret access key for the user.
          - The signature hasn't expired.
  
          @return: The validated L{Call}, set with its default arguments and the
             the principal of the accessing L{User}.