I don't understand why my previous posts were discarded, however I try to ask it again:
Hi, I'm trying to write a simple python script to add an event to a calendar. I cannot use the client library, so I'm struggling with the protocol. Here is my problem: 1) ClientLogin authentication -> OK, it works 2) First POST to http://www.google.com/calendar/feeds/default/private/full -> OK, I use a 'X-If-No-Redirect' header and obtain a 412 error with a S-cookie and a gsessionid as per documentation 3) New POST to http://www.google.com/calendar/feeds/default/private/full with the cookie and/or gsessionid -> I obtain a 412 error again! Probably my error is very trivial, but I am quite inexpert with the protocol and I don't see it. Here is the code: # -*- coding: utf-8 -*- import urllib, urllib2 email = '[email protected]' password = 'password' clientapp = 'marco-gcsmssendpy-1' service = 'cl' params = urllib.urlencode({'Email': email, 'Passwd': password, 'source': clientapp, 'service': service}) req = urllib2.Request(url='https://www.google.com/accounts/ ClientLogin', data=params) f = urllib2.urlopen(req) for line in f.readlines(): if line[0:5] == 'Auth=': authtoken=line[5:] headers = { 'GData-Version': '2', 'Authorization': 'GoogleLogin auth=' + authtoken, 'Content-Type': 'application/atom+xml', 'X-If-No-Redirect': '1' } xmlentry = ''' <entry xmlns='http://www.w3.org/2005/Atom' xmlns:gd='http://schemas.google.com/g/2005'> <category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/g/2005#event'></category> <title type='text'>Tennis with Beth</title> <content type='text'>Meet for a quick lesson.</content> <gd:transparency value='http://schemas.google.com/g/2005#event.opaque'> </gd:transparency> <gd:eventStatus value='http://schemas.google.com/g/2005#event.confirmed'> </gd:eventStatus> <gd:where valueString='Rolling Lawn Courts'></gd:where> <gd:when startTime='2010-04-17T15:00:00.000Z' endTime='2010-04-17T17:00:00.000Z'></gd:when> </entry> ''' req3 = urllib2.Request(url='http://www.google.com/calendar/feeds/ default/private/full', headers=headers, data=xmlentry) try: f4 = urllib2.urlopen(req3) except urllib2.HTTPError, detail: # print detail.info().get('X-Redirect-Location') idx = detail.info().get('X-Redirect-Location').index("?gsessionid=") gsid = detail.info().get('X-Redirect-Location')[idx+12:] #idx = detail.info().get('Set-Cookie').index(";") #ckie = detail.info().get('Set-Cookie')[0:idx] req4 = urllib2.Request(url='http://www.google.com/calendar/feeds/ default/private/full', headers=headers, data=xmlentry) #req.add_header('Cookie', ckie) req4.add_header('gsessionid', gsid) f5 = urllib2.urlopen(req4) print f5.read() raw_input("press enter to exit") -- You received this message because you are subscribed to the Google Groups "Google Calendar Data API" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/google-calendar-help-dataapi?hl=en.
