#!/usr/bin/env python3 from rauth import OAuth1Session from bottle import redirect, request, response, route, run from common import * COOKIE_NAME = 'c' # This secret is used for signing cookies. # Generate a value with uuidgen. SECRET = None HOST = 'localhost' PORT = 8090 # In your SmugMug Account Settings, configure your API Key # to use this callback URI. CALLBACK_URI = 'http://' + HOST + ':' + str(PORT) + '/callback' @route('/') def index(): return ''' <html><body><ul> <li><a href='/authorize'>Authorize</a></li> <li> <form action='/test' method='GET'> <label for='path'>API URI Path:</label> <input type='text' name='path' id='path' value='/api/v2!authuser'> <input type='submit' value='GET'> </form> </li> </ul></body></html> '''; def set_cookie(obj): response.set_cookie( COOKIE_NAME, obj, secret=SECRET, httponly=True, path='/') @route('/authorize') def authorize(): rt, rts = SERVICE.get_request_token(params={'oauth_callback': 'http://localhost:8090/callback'}) set_cookie({'rt': rt, 'rts': rts}) auth_url = SERVICE.get_authorize_url(rt) redirect(auth_url) @route('/callback') def callback(): cookie = request.get_cookie(COOKIE_NAME, secret=SECRET) at, ats = SERVICE.get_access_token(cookie['rt'], cookie['rts'], params={'oauth_verifier': request.query['oauth_verifier']}) set_cookie({'at': at, 'ats': ats}) redirect('/') @route('/test') def test(): cookie = request.get_cookie(COOKIE_NAME, secret=SECRET) session = OAuth1Session( API_KEY, API_KEY_SECRET, access_token=cookie['at'], access_token_secret=cookie['ats']) response.set_header('Content-Type', 'application/json') return session.get( API_ORIGIN + request.query['path'], headers={'Accept': 'application/json'}).text if __name__ == '__main__': run(host=HOST, port=PORT)