X-Git-Url: https://git.mdrn.pl/audio.git/blobdiff_plain/ac39503a5a9a16c1098e65ee16a866cf8eb19a8f..f2ed1449ece59c6247b8befc9ca6f423f7e4b004:/src/apiclient/views.py diff --git a/src/apiclient/views.py b/src/apiclient/views.py new file mode 100644 index 0000000..351dd2e --- /dev/null +++ b/src/apiclient/views.py @@ -0,0 +1,46 @@ +import cgi + +from django.contrib.auth.decorators import login_required +from django.core.urlresolvers import reverse +from django.http import HttpResponseRedirect, HttpResponse +import requests +from requests_oauthlib import OAuth1Session + +from apiclient.models import OAuthConnection +from apiclient.settings import WL_CONSUMER_KEY, WL_CONSUMER_SECRET +from apiclient.settings import WL_REQUEST_TOKEN_URL, WL_ACCESS_TOKEN_URL, WL_AUTHORIZE_URL + + +@login_required +def oauth(request): + oauth = OAuth1Session(WL_CONSUMER_KEY, WL_CONSUMER_SECRET) + request_token = oauth.fetch_request_token(WL_REQUEST_TOKEN_URL) + + conn = OAuthConnection.get(request.user) + conn.access = False + conn.token = request_token['oauth_token'] + conn.token_secret = request_token['oauth_token_secret'] + conn.save() + + url = oauth.authorization_url(WL_AUTHORIZE_URL) + url += '&oauth_callback=' + request.build_absolute_uri(reverse("apiclient_oauth_callback")) + return HttpResponseRedirect(url) + + +@login_required +def oauth_callback(request): + conn = OAuthConnection.get(request.user) + oauth_verifier = request.GET.get('oauth_verifier', 'verifier') + + oauth = OAuth1Session( + WL_CONSUMER_KEY, WL_CONSUMER_SECRET, + conn.token, conn.token_secret, + verifier=oauth_verifier) + access_token = oauth.fetch_access_token(WL_ACCESS_TOKEN_URL) + + conn.access = True + conn.token = access_token['oauth_token'] + conn.token_secret = access_token['oauth_token_secret'] + conn.save() + + return HttpResponseRedirect('/')