def _generate_auth_url(self, path, params, accepts_clientid):
        """Returns the path and query string portion of the request URL, first
        adding any necessary parameters.

        :param path: The path portion of the URL.
        :type path: string

        :param params: URL parameters.
        :type params: dict or list of key/value tuples

        :rtype: string

        """
        # Deterministic ordering through sorting by key.
        # Useful for tests, and in the future, any caching.
        extra_params = getattr(self, "_extra_params", None) or {}
        if type(params) is dict:
            params = sorted(dict(extra_params, **params).items())
        else:
            params = sorted(extra_params.items()) + params[:] # Take a copy.

        if accepts_clientid and self.client_id and self.client_secret:
            if self.channel:
                params.append(("channel", self.channel))
            params.append(("client", self.client_id))

            path = "?".join([path, urlencode_params(params)])
            sig = sign_hmac(self.client_secret, path)
            return path + "&signature=" + sig

        if self.key:
            params.append(("key", self.key))
            return path + "?" + urlencode_params(params)

        raise ValueError("Must provide API key for this API. It does not accept "
                         "enterprise credentials.")
def _generate_auth_url ( self , path , params , accepts_clientid ) : extra_params = getattr ( self , "_extra_params" , None ) or { } if type ( params ) is dict : params = sorted ( dict ( extra_params , ** params ) . items ( ) ) else : params = sorted ( extra_params . items ( ) ) + params [ : ] if accepts_clientid and self . client_id and self . client_secret : if self . channel : params . append ( ( "channel" , self . channel ) ) params . append ( ( "client" , self . client_id ) ) path = "?" . join ( [ path , urlencode_params ( params ) ] ) sig = sign_hmac ( self . client_secret , path ) return path + "&signature=" + sig if self . key : params . append ( ( "key" , self . key ) ) return path + "?" + urlencode_params ( params ) raise ValueError ( "Must provide API key for this API. It does not accept " "enterprise credentials." )
Returns the path and query string portion of the request URL, first
        adding any necessary parameters.

        :param path: The path portion of the URL.
        :type path: string

        :param params: URL parameters.
        :type params: dict or list of key/value tuples

        :rtype: string