def _build_canonical_str()

in datahub/auth/aliyun_account.py [0:0]


    def _build_canonical_str(url_components, req):
        # Build signing string
        lines = [req.method, req.headers[Headers.CONTENT_TYPE], req.headers[Headers.DATE], ]

        headers_to_sign = dict()

        # req headers
        headers = req.headers
        for k, v in six.iteritems(headers):
            k = k.lower()
            if k.startswith('x-datahub-'):
                headers_to_sign[k] = v

        # url params
        canonical_query = AliyunAccount._build_canonical_query(url_components.query)

        headers_to_sign = OrderedDict([(k, headers_to_sign[k])
                                       for k in sorted(headers_to_sign)])
        logger.debug('headers to sign: %s' % headers_to_sign)

        for k, v in six.iteritems(headers_to_sign):
            lines.append('%s:%s' % (k, v))

        lines.append(url_components.path + '?' + canonical_query if canonical_query else url_components.path)
        return '\n'.join(lines)