def get_key(self, request): if request.token: return '%s&%s' % \ (quote(request.consumer.secret), quote(request.token.secret)) return '%s&' % quote(request.consumer.secret)
def testEncoding(self): params = ( (u"abcABC123", u"abcABC123"), (u"-._~", u"-._~"), (u"%", u"%25"), (u"+", u"%2B"), (u"&=*", u"%26%3D%2A"), (unichr(0x000A), u"%0A"), (unichr(0x0020), u"%20"), (unichr(0x007F), u"%7F"), (unichr(0x0080), u"%C2%80"), (unichr(0x3001), u"%E3%80%81"), ) for p in params: self.assertEqual(quote(p[0]), p[1]) self.assertEqual(unquote(quote(p[0])), p[1])
def normalized_params(self): key_values = [] if self.has_oauth_header(): for k, v in self.OAUTH.items(): if k != "signature": key_values.append((OAUTH_PREFIX + k, v)) if self.request.POST and self.request.META["CONTENT_TYPE"] == "application/x-www-form-urlencoded": dcts = (self.request.POST, self.request.GET) else: dcts = (self.request.GET,) for dct in dcts: for k in dct: if k != OAUTH_PREFIX + "signature": for value in dct.getlist(k): key_values.append((k, value)) key_values.sort() return u"&".join(u"%s=%s" % (quote(unicode(k)), quote(unicode(v))) for k, v in key_values)
def signature_base_string(self): return u"%s&%s&%s" % (self.request.method, quote(self.base_uri()), quote(self.normalized_params()))