docs: def _build_authorization_request_url(
          self,
          response_type,
          redirect_url,
          state=None
      ):
          """Form URL to request an auth code or access token.
  
          Parameters
              response_type (str)
                  Either 'code' (Authorization Code Grant) or
                  'token' (Implicit Grant)
              redirect_url (str)
                  The URL that the Uber server will redirect the user to after
                  finishing authorization. The redirect must be HTTPS-based and
                  match the URL you registered your application with. Localhost
                  URLs are permitted and can be either HTTP or HTTPS.
              state (str)
                  Optional CSRF State token to send to server.
  
          Returns
              (str)
                  The fully constructed authorization request URL.
  
          Raises
              UberIllegalState (ApiError)
                  Raised if response_type parameter is invalid.
          """
          if response_type not in auth.VALID_RESPONSE_TYPES:
              message = '{} is not a valid response type.'
              raise UberIllegalState(message.format(response_type))
  
          args = OrderedDict([
              ('scope', ' '.join(self.scopes)),
              ('state', state),
              ('redirect_uri', redirect_url),
              ('response_type', response_type),
              ('client_id', self.client_id),
          ])
  
          return build_url(auth.AUTH_HOST, auth.AUTHORIZE_PATH, args)