view oauth_experiment.py @ 13:775e00932285

Added some google openid experimenting
author Atul Varma <avarma@mozilla.com>
date Sun, 13 Jun 2010 16:13:21 -0700
parents 63ea847bfa75
children
line wrap: on
line source

import os
import json
import oauth2 as oauth
import wsgiref.util

import twitter_client
import file_storage
from static_file_serving import StaticFileApp

class MyTwitterApp(object):
    def __init__(self, default, access_tokens):
        self.default = default
        self.twitter = None
        self.access_tokens = access_tokens

    def onsuccess(self, environ, start_response):
        access_token = environ['oauth.access_token']
        tokid = access_token['oauth_token']
        if tokid not in self.access_tokens:
            self.access_tokens[tokid] = access_token
        start_response('200 OK', [('Content-Type', 'text/html')])
        js = 'window.opener.onLogin(window, "%s");' % tokid
        return ['<script>%s</script>' % js]

    def __call__(self, environ, start_response):
        path = environ['PATH_INFO']

        if path.startswith('/twitter/') and self.twitter is not None:
            wsgiref.util.shift_path_info(environ)
            return self.twitter(environ, start_response)

        return self.default(environ, start_response)

def ensure_dirs(*paths):
    for path in paths:
        if not os.path.exists(path):
            os.mkdir(path)

mydir = os.getcwd()
staticfilesdir = os.path.join(mydir, 'static-files')
storagedir = os.path.join(mydir, 'storage')
reqdir = os.path.join(storagedir, 'request-tokens')
accdir = os.path.join(storagedir, 'access-tokens')

ensure_dirs(storagedir, reqdir, accdir)

static_files = StaticFileApp(staticfilesdir)

app = MyTwitterApp(
    default=static_files,
    access_tokens=file_storage.FileStorage(accdir)
    )

config = json.loads(open("config.json").read())

consumer = oauth.Consumer(config['consumer_key'],
                          config['consumer_secret'])

twitter = twitter_client.TwitterOauthClientApp(
    consumer=consumer,
    oauth=oauth,
    request_tokens=file_storage.FileStorage(reqdir),
    onsuccess=app.onsuccess
    )

app.twitter = twitter