Exemple #1
0
def verify_auth(request):
    """Take incoming request and validate it to create a valid AccessToken."""
    service = get_model_instance(request.user, PACKAGE)
    service.auth.request_token.oauth_verify = request.GET.get('oauth_verifier')
    service.auth.request_token.save()
    
    if not generate_access_token(service, "https://twitter.com/oauth/access_token"):
        messages.error(
                        request,
                        'Unable to validate your account with Twitter, please grant gargoyle.me access.'
                    )
        return HttpResponseRedirect(settings_redirect(request))

    # Mark as setup completed
    service.setup = True

    # Test if service is protected on twitter's side
    # if so mark it
    twitter_user = get_user(service)
    if twitter_user.protected:
        service.public = False
    else:
        service.public = True

    service.save()

    return HttpResponseRedirect(settings_redirect(request))
Exemple #2
0
def verify_auth(request):
    """Take incoming request and validate it to create a valid AccessToken."""
    service = get_model_instance(request.user, PACKAGE)
    service.auth.request_token.oauth_verify = request.GET.get('oauth_verifier')
    service.auth.request_token.save()
    
    if not generate_access_token(service, service.app.auth_settings['access_token_url']):
        messages.error(
                        request,
                        'Unable to validate your username with Flickr, please check grant permission for gargoyle.me to access your photos.'
                    )
        return HttpResponseRedirect(settings_redirect(request))

    ## Mark as setup completed
    service.setup = True

    ## Test if service is protected on twitter's side
    ## if so mark it
    #twitter_user = get_user(service)
    #if twitter_user.protected:
        #service.public = False
    #else:
        #service.public = True

    service.save()

    return redirect(settings_redirect(request))
Exemple #3
0
def auth(request):
    """We dont need a full oauth setup just a username."""

    service = get_model_instance(request.user, PACKAGE_NAME)
    if service and request.method == 'POST':
        username = request.POST['username']

        if username:
            user_feed = get_url('http://feeds.delicious.com/v2/json/%s' % (username,))

            if username:
                # check the username is valid
                if user_feed[0]['d'] == '404 Not Found':
                    messages.error(request, 'Unable to find username "%s", please try again' % (username,))
                else:
                    if not service.auth:
                        auth_handler = Auth()
                    else:
                        auth_handler = service.auth
                    auth_handler.username = username
                    auth_handler.save()
                    if not service.auth:
                        service.auth = auth_handler
    
                    service.setup = True
                    service.public = True
                    service.save()
        else:
            messages.error(request, 'Please enter a Delicious username')

    return redirect(settings_redirect(request))
Exemple #4
0
def verify_auth(request):
    """Handle the redirect from foursquare as part of the oauth process.
    """

    service = get_model_instance(request.user, PACKAGE)
    code = request.GET.get('code')

    url = "https://foursquare.com/oauth2/access_token?client_id=%s&client_secret=%s&grant_type=authorization_code&redirect_uri=%s&code=%s" % (service.app.auth_settings['consumer_key'], service.app.auth_settings['consumer_secret'], service.app.auth_settings['return_url'], code)

    access_token = get_url(url)

    if access_token.has_key('error'):
        messages.error(request, 'Unable to validate your with Foursquare, please wait a few minutes and retry.')
    else:
        at = AccessToken.objects.create(
            oauth_token = access_token["access_token"],
            oauth_token_secret = '',
            oauth_verify = ''
        )

        service.auth.access_token = at
        service.auth.save()

        service.setup = True
        service.public = True
        service.save()


    return redirect(settings_redirect(request))
Exemple #5
0
def auth(request):
    """We dont need a full oauth setup just a username."""
    
    service = get_model_instance(request.user, MODULE_NAME)
    if service and request.method == 'POST':
        username = request.POST['username']

        if username:
            # Delete existing token
            AccessToken.objects.filter(service=service).delete()
            # Before creating a new one
            AccessToken.objects.create(
                service=service,
                username=username,
                created=datetime.now(),
                api_token=service.app.oauth.consumer_key
            )

            user_feed = get_data(
                            None,
                            'http://feeds.delicious.com/v2/json/%s' % (username),
                            disable_oauth=True)
            
            # check the username is valid
            if user_feed[0]['d'] == '404 Not Found':
                messages.error(request, 'Unable to find your username, please try again')
            else:
                service.setup = True
                service.public = True
                service.save()
        else:
            messages.error(request, 'Please enter a Delicious username')

    return redirect(settings_redirect(request))
Exemple #6
0
def auth(request):
    """We dont need a full oauth setup just a username.
    """
    service = get_model_instance(request.user, PACKAGE_NAME)
    if service and request.method == 'POST':
        username = request.POST['username']

        if username:
            user_feed = get_url('http://ws.audioscrobbler.com/2.0/?method=user.getinfo&user=%s&api_key=%s&format=json' % (
                                      username, service.app.auth_settings['api_key']))
            #user_feed = get_data(
                #service,
                #'http://ws.audioscrobbler.com/2.0/?method=user.getinfo&user=%s&api_key=%s&format=json'  % (
                    #username,
                    #service.app.auth_settings['api_key']
                #),
                #disable_oauth=True
            #)

            # check we have a valid username
            if user_feed.has_key('error'):
                messages.error(
                    request,
                    'Unable to validate your username "%s" with Last.fm, please check your username and retry.' % (
                    username,
                    )
                )
                return redirect(settings_redirect(request))
            
            if not service.auth:
                auth_handler = Auth()
            else:
                auth_handler = service.auth
            auth_handler.username = username
            auth_handler.save()
            if not service.auth:
                service.auth = auth_handler

            service.setup = True
            service.public = True
            service.save()

        else:
            messages.error(request, 'Please enter a Last.fm username')

    return redirect(settings_redirect(request))
Exemple #7
0
def auth(request):
    """We dont need a full oauth setup just a username.
    """

    service = get_model_instance(request.user, PACKAGE)
    if service and request.method == 'POST':
        username = request.POST['username']

        if username:
            user_feed = get_data(
                service,
                'https://api.github.com/users/%s' % (username),
                disable_oauth=True
            )

            if user_feed.has_key('message') and user_feed['message'] == "Not Found":
                messages.error(request,
                               'Unable to validate your username with github, please check your username and retry.')
                return redirect(settings_redirect(request))
            
            if not service.auth:
                auth_handler = Auth()
            else:
                auth_handler = service.auth

            auth_handler.username = username
            auth_handler.save()

            if not service.auth:
                service.auth = auth_handler

            service.setup = True
            service.public = True
            service.save()
            
        else:
            messages.error(request, 'Please enter a github username')

    return redirect(settings_redirect(request))
Exemple #8
0
def verify_auth(request):
    """Handle the redirect from foursquare as part of the oauth process."""

    service = get_model_instance(request.user, MODULE_NAME)
    request_token = RequestToken.objects.get(service=service)
    request_token.oauth_verify = request.GET.get('oauth_verifier')
    request_token.save()

    generate_access_token(service, request_token)
    service.setup = True
    service.public = True
    service.save()
    request_token.delete()

    return redirect(settings_redirect(request))
Exemple #9
0
def auth(request):
    """We dont need a full oauth setup just a username.
    """

    # http://flickr.com/services/auth/?api_key=[api_key]&perms=[perms]&api_sig=[api_sig]

    service = get_model_instance(request.user, PACKAGE_NAME)

    if service and request.method == "POST":
        username = request.POST["username"]

        if username:
            # Talk to flickr to get a flickr ID 1234567@N0 style
            url = (
                "http://api.flickr.com/services/rest/?method=flickr.people.findByUsername&api_key=%s&username=%s&format=json&nojsoncallback=1"
                % (service.app.auth_settings["api_key"], username)
            )

            http_requester = httplib2.Http()
            resp, content = http_requester.request(url, "GET")

            if resp["status"] == "200":
                json = simplejson.loads(content)

                # Parse the request and check we have got back flickr id
                if json["stat"] == "ok":
                    userid = json["user"]["id"]

                    if not service.auth:
                        auth_handler = Auth()
                    else:
                        auth_handler = service.auth
                    auth_handler.username = username
                    auth_handler.secret = userid
                    auth_handler.save()
                    if not service.auth:
                        service.auth = auth_handler

                    service.setup = True
                    service.public = True
                    service.save()
                else:
                    messages.error(
                        request, "Unable to validate your username with Flickr, please check your username and retry."
                    )
        else:
            messages.error(request, "Please enter a Flickr username")
    return redirect(settings_redirect(request))
Exemple #10
0
def auth(request):
    """We dont need a full oauth setup just a username."""

    service = get_model_instance(request.user, MODULE_NAME)

    if service and request.method == 'POST':
        username = request.POST['username']

        if username:
            # talk to flickr to get a flickr ID 1234567@N0 style
            url = "http://api.flickr.com/services/rest/?method=flickr.people.findByUsername&api_key=%s&username=%s&format=json&nojsoncallback=1" % \
                (service.app.oauth.consumer_key, username)
    
            http_requester = httplib2.Http()
            resp, content = http_requester.request(url, "GET")
    
            if resp['status'] == '200':
                json = simplejson.loads(content)
    
                # parse the request and check we have got back flickr id
                if json['stat'] == 'ok':
    
                    userid = json['user']['id']
    
                    # Delete existing token
                    AccessToken.objects.filter(service=service).delete()
    
                    # Before creating a new one
                    AccessToken.objects.create(
                        service=service,
                        username=username,
                        userid=userid,
                        created=datetime.now(),
                        api_token=service.app.oauth.consumer_key
                    )
    
                    service.setup = True
                    service.public = True
                    service.save()
                else:
                    messages.error(request,
        'Unable to validate your username with Flickr, please check your username and retry.')
                    
        else:
            messages.error(request, 'Please enter a Flickr username')

    return redirect(settings_redirect(request))
Exemple #11
0
def auth(request):
    """We dont need a full oauth setup just a username.
    """
    service = get_model_instance(request.user, PACKAGE_NAME)
    if service and request.method == 'POST':
        username = request.POST['username']

        if username:
            # Fetch the page and try to find the reader id
            url = "http://www.google.com/reader/shared/%s" % (username,)
            links = SoupStrainer('link')
            h = httplib2.Http()
            resp, content = h.request(url, "GET")
            parsed_links = [tag for tag in soup(str(content), parseOnlyThese=links)]

            if parsed_links:
                try:
                    user_id = parsed_links[2].attrs[2][1].split('%2F')[1]

                    if not service.auth:
                        auth_handler = Auth()
                    else:
                        auth_handler = service.auth
                    auth_handler.username = username
                    auth_handler.secret = user_id
                    auth_handler.save()
                    if not service.auth:
                        service.auth = auth_handler

                    service.setup = True
                    service.public = True
                    service.save()
                except:
                    messages.error(
                        request,
                        'Unable to find Google Reader account with username "%s"' % (username,)
                    )
            else:
                messages.error(
                    request,
                    'Unable to find Google Reader account with username "%s"' % (username,)
                )
        else:
            messages.error(request, "Please enter a Google Reader username")

    return redirect(settings_redirect(request))
Exemple #12
0
def auth(request):
    """We dont need a full oauth setup just a username."""

    service = get_model_instance(request.user, MODULE_NAME)
    if service and request.method == 'POST':
        username = request.POST['username']

        # Delete existing token
        AccessToken.objects.filter(service=service).delete()
        # Before creating a new one
        AccessToken.objects.create(
            service=service,
            username=username,
            created=datetime.now(),
            api_token=service.app.oauth.consumer_key
        )

        service.setup = True
        service.public = True
        service.save()

    return redirect(settings_redirect(request))
Exemple #13
0
def auth(request):
    """We dont need a full oauth setup just a username."""
    service = get_model_instance(request.user, MODULE_NAME)
    if service and request.method == 'POST':
        username = request.POST['username']

        if username:
            # fetch the page and try to find the reader id
            url = "http://www.google.com/reader/shared/%s" % username
            links = SoupStrainer('link')
            h = httplib2.Http()
            resp, content = h.request(url, "GET")
            parsed_links = [tag for tag in soup(str(content), parseOnlyThese=links)]
            
            if parsed_links:
                try:
                    userid = parsed_links[2].attrs[2][1].split('%2F')[1]
                    # Delete existing token
                    AccessToken.objects.filter(service=service).delete()
                    # Before creating a new one
                    AccessToken.objects.create(
                        service=service,
                        username=username,
                        userid=userid,
                        created=datetime.now(),
                        api_token=service.app.oauth.consumer_key
                    )
        
                    service.setup = True
                    service.public = True
                    service.save()
                except:
                    messages.error(request, "Unable to find Google Reader account with that username")
            else:
                messages.error(request, "Unable to find Google Reader account with that username")
        else:
            messages.error(request, "Please enter a Google Reader username")

    return redirect(settings_redirect(request))
Exemple #14
0
def verify_auth(request):
    """Handle reply from github"""
    """Take incoming request and validate it to create a valid AccessToken."""

    try:
        service = get_model_instance(request.user, PACKAGE)
        code = request.GET.get('code')
    
        if code:
            # swap our newly aquired code for a everlasting signed "token"
            reply = get_url('https://github.com/login/oauth/access_token?client_id=%s&client_secret=%s&code=%s' % (
                service.app.auth_settings['api_key'], 
                service.app.auth_settings['api_secret'], 
                code), json=False, method="POST", disable_ssl=True)
        
            if  not reply.startswith('access_token'):
                raise Exception('Token Failure')
            
            access, perm_type = reply.split('&')
            
            service.auth.access_token = AccessToken.objects.create(
                oauth_token = access.split('=')[1],
                oauth_token_secret = access.split('=')[1],
            )
            
            service.auth.save()
            
            # Mark as setup completed
            service.setup = True    
            service.save()

    except:
        messages.error(
            request,
            'Unable to validate your account with GitHub, please grant permission for gargoyle.me to access your account.'
        )

    return redirect(settings_redirect(request))
Exemple #15
0
def verify_auth(request):
    """Get the values back from facebook and store them for use later."""

    service = get_model_instance(request.user, PACKAGE)
    code = request.GET.get('code')
    if request.is_secure():
        scheme = "https://"
    else:
        scheme = "http://"
    base_url = "%s%s" % (scheme, request.get_host(),)
    callback = "%s%s" % (base_url, reverse('causal-facebook-callback'),)

    url = "https://graph.facebook.com/oauth/access_token&code=%s&client_secret=%s&redirect_uri=%s&client_id=%s" % (
        code,
        service.app.auth_settings['consumer_secret'],
        callback,
        service.app.auth_settings['app_id']
    )

    response = cgi.parse_qs(urllib.urlopen(url).read())

    if response.has_key('access_token'):
        at = AccessToken.objects.create(
            oauth_token=''.join(response["access_token"]),
            oauth_token_secret='',
            oauth_verify=''
        )
        service.auth.access_token = at
        service.auth.save()
        service.setup = True
        service.public = True
        service.save()
        messages.success(request, 'Connection to Facebook complete.')

    else:
        messages.error(request, 'There was an error connnecting to Facebook.')

    return redirect(settings_redirect(request))
Exemple #16
0
def verify_auth(request):
    """Take incoming request and validate it to create a valid AccessToken."""
    service = get_model_instance(request.user, MODULE_NAME)
    request_token = RequestToken.objects.get(service=service)
    request_token.oauth_verify = request.GET.get('oauth_verifier')
    request_token.save()
    generate_access_token(service, request_token)

    # Mark as setup completed
    service.setup = True

    # test if service is protected on twitter's side
    # if so mark it
    service_auth = _auth(service.app.oauth)
    user = tweepy.API(service_auth).get_user('twitter')
    service.public = False
    if not user.protected:
        service.public = True

    service.save()

    request_token.delete()
    return HttpResponseRedirect(settings_redirect(request))
Exemple #17
0
def auth(request):
    """We dont need a full oauth setup just a username."""
    service = get_model_instance(request.user, MODULE_NAME)
    if service and request.method == 'POST':
        username = request.POST['username']

        if username:
            # Delete existing token
            AccessToken.objects.filter(service=service).delete()
            
            user_feed = get_data(
                            None,
                            'http://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&user=%s&api_key=%s&format=json'  % (username, service.app.oauth.consumer_key),
                            disable_oauth=True)
            
            # check we have a valid username
            if not user_feed.has_key('error') and user_feed['error'] != 6:
                # Before creating a new one
                AccessToken.objects.create(
                    service=service,
                    username=username,
                    created=datetime.now(),
                    api_token=service.app.oauth.consumer_key
                )
        
                service.setup = True
                service.public = True
                service.save()
                
            else:
                messages.error(request, 
                               'Unable to validate your username with Last.fm, please check your username and retry.')

        else:
            messages.error(request, 'Please enter a Last.fm username')

    return redirect(settings_redirect(request))
Exemple #18
0
def verify_auth(request):
    """Get the values back from facebook and store them for use later."""

    service = get_model_instance(request.user, MODULE_NAME)
    code = request.GET.get('code')
    callback = "%s%s" % (service.app.oauth.callback_url_base,
                         reverse('causal-facebook-callback'),)
    url = "%s&code=%s&client_secret=%s&redirect_uri=%s&client_id=%s" % (
        service.app.oauth.access_token_url,
        code,
        service.app.oauth.consumer_secret,
        callback,
        service.app.oauth.consumer_key
    )

    response = cgi.parse_qs(urllib.urlopen(url).read())

    if response.has_key('access_token'):
        # Delete existing token
        AccessToken.objects.filter(service=service).delete()
        # Before creating a new one
        AccessToken.objects.create(
            service=service,
            oauth_token=''.join(response["access_token"]),
            oauth_token_secret='',
            created=datetime.now(),
            oauth_verify=''
        )
        service.setup = True
        service.public = True
        service.save()
        messages.success(request, 'Connection to Facebook complete.')

    else:
        messages.error(request, 'There was an error connnecting to Facebook.')

    return redirect(settings_redirect(request))
Exemple #19
0
def auth(request):
    """We dont need a full oauth setup just a username."""

    service = get_model_instance(request.user, MODULE_NAME)
    if service and request.method == 'POST':
        username = request.POST['username']

        if username:
            # Delete existing token
            AccessToken.objects.filter(service=service).delete()
    
            # Before creating a new one
            AccessToken.objects.create(
                service=service,
                username=username,
                created=datetime.now(),
                api_token=service.app.oauth.consumer_key
            )

            user_feed = get_data(
                            None,
                            'http://github.com/%s.json' % (username),
                            disable_oauth=True)
            
            # check the username is valid
            if user_feed.has_key('error'):
                messages.error(request, 
                               'Unable to validate your username with Git Hub, please check your username and retry.')
            else:
                service.setup = True
                service.public = True
                service.save()
        else:
            messages.error(request, 'Please enter a GitHub username')

    return redirect(settings_redirect(request))