27 lines
873 B
Python
27 lines
873 B
Python
# -*- coding: utf-8 -*-
|
|
|
|
import base64
|
|
import datetime
|
|
import hashlib
|
|
import hmac
|
|
|
|
from django.utils.encoding import force_bytes
|
|
from django.utils.six.moves.urllib import parse as urllib
|
|
from django.utils.six.moves.urllib import parse as urlparse
|
|
|
|
|
|
def sign_uri(uri, user=None, format='json'):
|
|
timestamp = datetime.datetime.utcnow().isoformat()[:19] + 'Z'
|
|
scheme, netloc, path, params, query, fragment = urlparse.urlparse(uri)
|
|
if query:
|
|
query += '&'
|
|
if format:
|
|
query += 'format=%s&' % format
|
|
query += 'orig=coucou&algo=sha256×tamp=' + timestamp
|
|
if user:
|
|
query += '&email=' + urllib.quote(user.email)
|
|
query += '&signature=%s' % urllib.quote(
|
|
base64.b64encode(hmac.new(b'1234', force_bytes(query), hashlib.sha256).digest())
|
|
)
|
|
return urlparse.urlunparse((scheme, netloc, path, params, query, fragment))
|