Wow Ryan you sure know your stuff! I'm not too familiar with packet sniffing, so that's on my next list of things to become familiar with, but I may not need that yet because your scripts appear to have found the problem. Even with this though, I'm still not sure what the remedy is. Here's what I get back on the command line:
---------------------------------- ./gdata_calendar_delete.sh [EMAIL PROTECTED] **** http://www.google.com/calendar/feeds/[EMAIL PROTECTED]/private/full/d2m4la05l9f4kkm3h1fniu08uc/63311131585 * About to connect() to www.google.com port 80 * Trying 72.14.253.99... connected * Connected to www.google.com (72.14.253.99) port 80 > POST /calendar/feeds/ehamai@ gmail.com/private/full/d2m4la05l9f4kkm3h1fniu08uc/63311131585 HTTP/1.1 > User-Agent: curl/7.15.4 (i486-pc-linux-gnu) libcurl/7.15.4 OpenSSL/0.9.8b zlib/1.1.4 libidn/0.6.3 > Host: www.google.com > Accept: */* > Content-Type: application/atom+xml > Authorization: GoogleLogin auth=*** > X-HTTP-Method-Override: DELETE > Content-Length: 0 < HTTP/1.1 302 Moved Temporarily < Set-Cookie: S=calendar=4ZPpMUDOYVA < Location: http://www.google.com/calendar/feeds/[EMAIL PROTECTED]/private/full/d2m4la05l9f4kkm3h1fniu08uc/63311131585?gsessionid=4ZPpMUDOYVA < Cache-control: private < Content-Length: 310 < Date: Mon, 02 Apr 2007 02:44:24 GMT < Content-Type: text/html < Server: GFE/1.3 <HTML> <HEAD> <TITLE>Moved Temporarily</TITLE> </HEAD> <BODY BGCOLOR="#FFFFFF" TEXT="#000000"> <H1>Moved Temporarily</H1> The document has moved <A HREF=" http://www.google.com/calendar/feeds/[EMAIL PROTECTED]/private/full/d2m4la05l9f4kkm3h1fniu08uc/63311131585?gsessionid=4ZPpMUDOYVA ">here</A>. </BODY> </HTML> * Connection #0 to host www.google.com left intact * Closing connection #0 ------------------------------------------------------- It looks like I'm getting a "HTTP/1.1 302 Moved Temporarily" error, although I'm not really sure why the document was moved, how I'm supposed to catch a 302 error, and how I'm supposed to get the new uri through the C# API's. I took the new address and plugged it into your script and the event finally disappeared from my Calendar! Awesome! I'm so happy that we're making progress on this. Do you have any idea why the document moved and how I should deal with this type of situation in my code? Thanks again! - Elliott On Apr 1, 6:18 pm, "Ryan Boyd (Google)" <[EMAIL PROTECTED]> wrote: > Hi Elliott, > > Thanks for the additional information. I haven't yet tried running > the sample code under Mono/Linux, but can certainly give that a shot > and see if it could be related. > > The .NET client library is actually developed under Mono/OS X, so I > doubt using Mono should be an issue. > > The DELETE request is somewhat special, as it doesn't often use a > common HTTP method (as opposed to GET, POST). Are you able to do a > packet capture to analyze the requests? While the authentication is > over SSL, you should be able to see the HTTP traffic in plaintext -- I > generally use Ethereal/Wireshark for this type of thing, but you can > also use tcpdump. This may give you more information about what's > happening. > > You can also try grabbing the 'edit url' via the AtomEntry.EditUri > property and printing it out. Using this value, you can try deleting > the event manually through curl. Following this post is the content > of 2 shell scripts which use curl. gdata_calendar_delete.sh calls > gdata_login.sh to retrieve a ClientLogin token. It then uses this > token to DELETE the event by doing a POST with a 'X-HTTP-Method- > Override: DELETE' header (a GData specific header to perform a DELETE > via a HTTP POST). Calling gdata_calendar_delete.sh is done by: > ./gdata_calendar_delete.sh <username> <password> <edit url of entry to > delete> > > Happy coding, > -Ryan > > Disclaimer: These scripts are provided for example purposes only-- I'm > not providing any guarantees as to the quality or security of these > scripts. If you are using a shared machine, your password will be > viewable in the process listing, and may also be recorded into a shell > history file. You can freely modify these as you wish. > > gdata_login.sh > ---- > #!/bin/sh > export GDATA_AUTH=`curl 2>/dev/nullhttps://www.google.com/accounts/ClientLogin > -d Email=$1 -d Passwd=$2 -d accountType=HOSTED_OR_GOOGLE -d > source=curlExample -d service=cl | grep '^Auth=' | cut -c 6-` > echo $GDATA_AUTH > > gdata_calendar_delete.sh > --- > #!/bin/bash > export AUTH=`./gdata_login.sh $1 $2` > curl -v -d '' -H "Content-Type: application/atom+xml" -H > "Authorization: GoogleLogin auth=$AUTH" -H "X-HTTP-Method-Override: > DELETE" $3 > > On Apr 1, 4:59 pm, "ekun" <[EMAIL PROTECTED]> wrote: > > > Hi Ryan, > > > Thanks for the response! So to answer your questions: > > > 1.) It's taking about 2 minutes to return > > 2.) I'm not doing anything else with my calendar nor am I running > > multiple threads. > > 3.) There shouldn't be any proxy servers between me and Google unless > > Comcast has some kind of funky configuration. > > > I did try to catch the exception this time and this is the actual > > message that was output: > > > "Execution of request failed:http://www.google.com/calendar/feeds/[EMAIL > > PROTECTED]/private/full/..." > > > I also wanted to mention that I'm using mono on Linux, which was > > originally giving me authentication problems because by default Mono > > blocks everything related to web requests. I got past that problem by > > using the mozroots.exe program to add all Mozilla certificates to Mono > > (http://www.mono-project.com/FAQ:_Security), which allows me to > > authenticate with Google, query events, and create events. I figured > > that if I could get that far, then deleting an event shouldn't be a > > problem, but perhaps mono doesn't like me sending a feed request to > > that specific event uri? That's probably not the case, but I just > > thought I'd mention it. > > > Thanks for helping me out :) > > > - Elliott > > > On Apr 1, 3:32 pm, "Ryan Boyd (Google)" <[EMAIL PROTECTED]> wrote: > > > > The good news is that it doesn't look like you're doing anything > > > fundamentally wrong :) > > > > However, I'm not quite sure what's causing the problem you're > > > experiencing. It seems as if the client isn't getting a response back > > > from the server in a resonable period of time and is throwing an > > > exception. > > > > A few questions: > > > 1) How long is this taking to run? > > > 2) Are you doing anything else with your calendar while this is > > > running? Ie, do you have another program running against the same > > > calendar.. or is this program running in multiple threads? > > > 3) Do you have any proxy servers in between your computer and Google > > > that you are aware of? > > > > Cheers, > > > > -Ryan > > > > On Apr 1, 1:35 pm, "ekun" <[EMAIL PROTECTED]> wrote: > > > > > Oops, I think I posted this on the wrong group originally, so if > > > > you're reading this again, my apologies... :) > > > > > Hi all, > > > > > I'm new to Google API's, so please pardon such a basic question. > > > > Basically, I just created a test function based off of the API > > > > Developers guide which would query an event from my calendar, and then > > > > delete it. The query works fine so I know that my URI and > > > > CalendarService values are fine. However, as soon as I try to delete > > > > the entry from the Calendar, I get a timeout exception at run time. > > > > Here's what my function looks like: > > > > > public static void queryCalendar(Uri calendarURI, CalendarService > > > > service) > > > > { > > > > EventQuery myQuery = new EventQuery(calendarURI.ToString()); > > > > myQuery.Query = "Tennis"; > > > > EventFeed myResultsFeed = service.Query(myQuery); > > > > if (myResultsFeed.Entries.Count > 0) > > > > { > > > > AtomEntry firstMatchEntry = myResultsFeed.Entries[0]; > > > > Console.WriteLine("Query found {0}", > > > > firstMatchEntry.Title.Text); > > > > > // Method 1: Causes a timeout exception at run-time > > > > myResultsFeed.Entries[0].Delete(); > > > > > // Method 2: Causes a timeout exception at run-time > > > > //service.Delete(myResultsFeed.Entries[0]); > > > > > // Method 3: Causes a timeout exception at run-time > > > > // service.Delete(new > > > > Uri(myResultsFeed.Entries[0].EditUri.ToString())); > > > > > } > > > > > } > > > > > The exception that I keep receiving looks like this: > > > > Unhandled Exception: Google.GData.Client.GDataRequestException: > > > > Execution of request failed:http://www.google.com/calendar/feeds/[EMAIL > > > > PROTECTED]/private/full/... > > > > ---> System.Net.WebException: The request timed out > > > > at System.Net.HttpWebRequest.EndGetResponse (IAsyncResult > > > > asyncResult) [0x00000] > > > > at System.Net.HttpWebRequest.GetResponse () [0x00000] > > > > at Google.GData.Client.GDataRequest.Execute () [0x00000] --- End of > > > > inner exception stack trace --- > > > > > at Google.GData.Client.GDataRequest.Execute () [0x00000] > > > > at Google.GData.Client.GDataGAuthRequest.Execute (Int32 iRetrying) > > > > [0x00000] > > > > > Am I just doing something fundamentally wrong, or has someone else > > > > ever run into this problem. Any help at all would totally be > > > > appreciated. Thank you!!! --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
