def get_oauth_signature(self, request):
        if self.signature_method == SIGNATURE_PLAINTEXT:
            # fast-path
            return signature.sign_plaintext(self.client_secret,
                                            self.resource_owner_secret)

        uri, headers, body = self._render(request)

        collected_params = signature.collect_parameters(
            uri_query=urlparse.urlparse(uri).query,
            body=body,
            headers=headers)
        log.debug("Collected params: {0}".format(collected_params))

        normalized_params = signature.normalize_parameters(collected_params)
        normalized_uri = signature.normalize_base_string_uri(uri,
                                                             headers.get('Host', None))
        log.debug("Normalized params: {0}".format(normalized_params))
        log.debug("Normalized URI: {0}".format(normalized_uri))

        base_string = signature.construct_base_string(request.http_method,
                                                      normalized_uri, normalized_params)

        log.debug("Base signing string: {0}".format(base_string))

        if self.signature_method not in self.SIGNATURE_METHODS:
            raise ValueError('Invalid signature method.')

        sig = self.SIGNATURE_METHODS[self.signature_method](base_string, self)

        log.debug("Signature: {0}".format(sig))
        return sig
Get an OAuth signature to be used in signing a request
dataset/ETHPy150Open idan/oauthlib/oauthlib/oauth1/rfc5849/__init__.py/Client.get_oauth_signature