97 lines
2.6 KiB
Python
97 lines
2.6 KiB
Python
#!/usr/bin/python2.4
|
|
# -*- coding: utf-8 -*-
|
|
#
|
|
# Copyright 2010 Google Inc. All Rights Reserved.
|
|
|
|
"""One-line documentation for discovery module.
|
|
|
|
A detailed description of discovery.
|
|
"""
|
|
|
|
__author__ = 'jcgregorio@google.com (Joe Gregorio)'
|
|
|
|
|
|
from apiclient.discovery import build
|
|
|
|
import httplib2
|
|
import oauth2 as oauth
|
|
import re
|
|
import simplejson
|
|
|
|
|
|
def oauth_wrap(consumer, token, http):
|
|
"""
|
|
Args:
|
|
http - An instance of httplib2.Http
|
|
or something that acts like it.
|
|
|
|
Returns:
|
|
A modified instance of http that was passed in.
|
|
|
|
Example:
|
|
|
|
h = httplib2.Http()
|
|
h = oauth_wrap(h)
|
|
|
|
Grumble. You can't create a new OAuth
|
|
subclass of httplib2.Authenication because
|
|
it never gets passed the absolute URI, which is
|
|
needed for signing. So instead we have to overload
|
|
'request' with a closure that adds in the
|
|
Authorization header and then calls the original version
|
|
of 'request()'.
|
|
"""
|
|
request_orig = http.request
|
|
signer = oauth.SignatureMethod_HMAC_SHA1()
|
|
|
|
def new_request(uri, method="GET", body=None, headers=None,
|
|
redirections=httplib2.DEFAULT_MAX_REDIRECTS, connection_type=None):
|
|
"""Modify the request headers to add the appropriate
|
|
Authorization header."""
|
|
req = oauth.Request.from_consumer_and_token(
|
|
consumer, token, http_method=method, http_url=uri)
|
|
req.sign_request(signer, consumer, token)
|
|
if headers == None:
|
|
headers = {}
|
|
headers.update(req.to_header())
|
|
headers['user-agent'] = 'jcgregorio-test-client'
|
|
return request_orig(uri, method, body, headers,
|
|
redirections, connection_type)
|
|
|
|
http.request = new_request
|
|
return http
|
|
|
|
|
|
def get_wrapped_http():
|
|
f = open("oauth_token.dat", "r")
|
|
oauth_params = simplejson.loads(f.read())
|
|
|
|
consumer = oauth.Consumer(
|
|
oauth_params['consumer_key'], oauth_params['consumer_secret'])
|
|
token = oauth.Token(
|
|
oauth_params['oauth_token'], oauth_params['oauth_token_secret'])
|
|
|
|
# Create a simple monkeypatch for httplib2.Http.request
|
|
# just adds in the oauth authorization header and then calls
|
|
# the original request().
|
|
http = httplib2.Http()
|
|
return oauth_wrap(consumer, token, http)
|
|
|
|
|
|
def main():
|
|
http = get_wrapped_http()
|
|
p = build("buzz", "v1", http=http)
|
|
activities = p.activities()
|
|
activitylist = activities.list(scope='@self', userId='@me')
|
|
print activitylist['items'][0]['title']
|
|
activities.insert(userId='@me', body={
|
|
'title': 'Testing insert',
|
|
'object': {
|
|
'content': u'Just a short note to show that insert is working. ☄',
|
|
'type': 'note'}
|
|
}
|
|
)
|
|
|
|
if __name__ == '__main__':
|
|
main()
|