See my earlier reply. Java and Python are the most complete w.r.t. examplesand code snippets in the docs: http://code.google.com/apis/documents/docs/2.0/developers_guide_java.html http://code.google.com/apis/documents/docs/1.0/developers_guide_python.html
E On Tue, Jun 16, 2009 at 8:00 AM, harry mendell <harry.mend...@gmail.com>wrote: > Stuck again! Do any of the new apis support all of the high level client > code, If so I'm hitting the ejector seat button. I don't care if I have to > learn a new language from scratch be it "ruby on rails or whatever", the > whole point of this exercise is to make developing new apps a " LEGO kit". > Otherwise I am going to have to really study these low level protocols. It > reminds me of my old assembler days. The more things change the more they > remain the same. At least I can see from the other forum posts that I am not > alone in my frustration. Step back for a second. Almost all of the forum > questions involve what is essentially reading and writing data. I thought > that was solved in the 1960s :) > I have a suggestion. > Take all of the classes/methods that allow public and published data and > produce a private and behind the firewall version that does exactly the same > thing. Boom! Problems solved at once and I'll have a chance using Google > internally. > - Harry > > In the mean time could you please sherpa me to mid-base? > On Jun 15, 2009, at 7:50 PM, Eric Bidelman wrote: > > That 3rd parameter to update is a mimetype, not an file extension.That's > the GDocumntsAllowedType hashmap takes care of :) > > try: text/csv > > Eric > > On Mon, Jun 15, 2009 at 4:35 PM, harry mendell <harry.mend...@gmail.com>wrote: > >> Google.GData.Client.GDataRequestException was unhandled >> Message="Execution of request failed: >> http://docs.google.com/feeds/media/private/full/spreadsheet:rqfFdRlpaWjFOyJ9MrslMjg >> " >> Source="Google.GData.Client" >> ResponseString="Malformed Content-Type" >> StackTrace: >> at Google.GData.Client.GDataRequest.Execute() >> at Google.GData.Client.GDataGAuthRequest.Execute(Int32 >> retryCounter) >> at Google.GData.Client.GDataGAuthRequest.Execute() >> at Google.GData.Client.Service.StreamSend(Uri targetUri, Stream >> inputStream, GDataRequestType type, String contentType, String slugHeader, >> String etag, AsyncSendData data) >> at Google.GData.Client.Service.StreamSend(Uri targetUri, Stream >> inputStream, GDataRequestType type, String contentType, String slugHeader) >> at Google.GData.Client.Service.Update(Uri uriTarget, Stream input, >> String contentType, String slugHeader) >> at myfirstcsharp.Program.Main(String[] args) in C:\Documents and >> Settings\harry\My Documents\Visual Studio >> 2008\Projects\updatesheet\myfirstcsharp\Program.cs:line 54 >> at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] >> args) >> at System.AppDomain.nExecuteAssembly(Assembly assembly, String[] >> args) >> at System.Runtime.Hosting.ManifestRunner.Run(Boolean checkAptModel) >> at System.Runtime.Hosting.ManifestRunner.ExecuteAsAssembly() >> at >> System.Runtime.Hosting.ApplicationActivator.CreateInstance(ActivationContext >> activationContext, String[] activationCustomData) >> at >> System.Runtime.Hosting.ApplicationActivator.CreateInstance(ActivationContext >> activationContext) >> at System.Activator.CreateInstance(ActivationContext >> activationContext) >> at >> Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssemblyDebugInZone() >> at System.Threading.ThreadHelper.ThreadStart_Context(Object state) >> at System.Threading.ExecutionContext.Run(ExecutionContext >> executionContext, ContextCallback callback, Object state) >> at System.Threading.ThreadHelper.ThreadStart() >> InnerException: System.Net.WebException >> Message="The remote server returned an error: (400) Bad Request." >> Source="System" >> StackTrace: >> at System.Net.HttpWebRequest.GetResponse() >> at Google.GData.Client.GDataRequest.Execute() >> InnerException: >> >> >> On Jun 15, 2009, at 6:49 PM, Eric Bidelman wrote: >> >> Sorry. The definition of GDocumntsAllowedType is in the lib's source: >> http://code.google.com/p/google-gdata/source/browse/trunk/clients/cs/src/gdocuments/documentservice.cs#56 >> >> What is the exception/response from the server? >> >> Eric >> >> On Mon, Jun 15, 2009 at 3:37 PM, harry mendell >> <harry.mend...@gmail.com>wrote: >> >>> >>> Dear Eric, >>> I tried adapting your code and wrote a test which I copied below. It >>> fails at >>> DocumentEntry entry = service.Update(new >>> Uri(lastUploadEntry.MediaUri.ToString()), >>> stream, "CSV", lastUploadEntry.Title.Text) as DocumentEntry; >>> which is almost at the bottom. I think I'm having a some code of >>> compatibility issue between the ACL and token auth, but this end of the pool >>> is pretty deep. >>> Would you mind taking a look? >>> Thanks, >>> Harry >>> >>> >>> >>> >>> >>> >>> using System; >>> using System.IO; >>> using System.Collections; >>> using System.Net; >>> using System.Collections.Generic; >>> using Google.Spreadsheets; >>> using System.Linq; >>> using System.Text; >>> using Google.GData.Documents; >>> using Google.GData.Client; >>> using Google.GData.Extensions; >>> >>> >>> >>> namespace myfirstcsharp >>> { >>> >>> class Program >>> { >>> static void Main(string[] args) >>> { >>> DocumentsService service = new DocumentsService( >>> "HBM-DocListUploader-1"); >>> ((GDataRequestFactory)service.RequestFactory).KeepAlive = >>> false; >>> service.setUserCredentials("qvtuat", "qvtqvtqvt"); >>> //force the service to authenticate >>> DocumentsListQuery query = new DocumentsListQuery(); >>> query.NumberToRetrieve = 1; >>> service.Query(query); >>> >>> >>> // For testing only. Creates document called radar.csv >>> DocumentEntry lastUploadEntry = service.UploadDocument( >>> "c:/radar.csv", "radar.csv"); >>> // For testing only. Now lets see if we can update it >>> FileInfo fileInfo = new FileInfo("c:/radar.csv"); >>> FileStream stream = fileInfo.Open(FileMode.Open, >>> FileAccess.Read, >>> FileShare.ReadWrite); >>> >>> try >>> { >>> /* It didn't recogize GDocumntsAllowedType so I >>> commented the check since I know its good type >>> // convert the extension to caps and strip the "." off >>> the front >>> string ext = fileInfo.Extension.ToUpper().Substring(1); >>> String contentType = (String)GDocumentsAllowedTypes[ext]; >>> >>> if (contentType == null) >>> { >>> throw new ArgumentException("File extension '" + ext >>> + "' is not recognized as valid."); >>> } >>> // Make sure we don't overwrite someone else's changes. >>> Use entry's ETag >>> */ >>> GDataRequestFactory factory = (GDataRequestFactory >>> )service.RequestFactory; >>> factory.CustomHeaders.Add("If-Match: " + >>> lastUploadEntry.Etag); >>> service.RequestFactory = factory; >>> DocumentEntry entry = service.Update(new >>> Uri(lastUploadEntry.MediaUri.ToString()), >>> stream, "CSV", lastUploadEntry.Title.Text) as DocumentEntry; >>> } >>> finally >>> { >>> stream.Close(); >>> } >>> } >>> } >>> } >>> >>> >>> On Jun 11, 2009, at 5:16 PM, Eric (Google) wrote: >>> >>> >>> This worked for me: >>> >>> DocumentsService service = new DocumentsService("yourCompany-AppName- >>> v1"); >>> // TODO: Fetch DocumentEntry >>> ReplaceDocContents(entryToUpdate, "C:\somewhere\test.doc"); >>> ... >>> >>> static public DocumentEntry ReplaceDocContents(DocumentEntry >>> entryToUpdate, string replacementFileName) >>> { >>> DocumentEntry entry = null; >>> >>> FileInfo fileInfo = new FileInfo(replacementFileName); >>> FileStream stream = fileInfo.Open(FileMode.Open, FileAccess.Read, >>> FileShare.ReadWrite); >>> >>> try >>> { >>> // convert the extension to caps and strip the "." off the front >>> string ext = fileInfo.Extension.ToUpper().Substring(1); >>> >>> String contentType = (String)GDocumentsAllowedTypes[ext]; >>> >>> if (contentType == null) >>> { >>> throw new ArgumentException("File extension '" + ext + >>> "' is not recognized as valid."); >>> } >>> >>> // Make sure we don't overwrite someone else's changes. Use >>> entry's ETag >>> GDataRequestFactory factory = (GDataRequestFactory) >>> service.RequestFactory; >>> factory.CustomHeaders.Add("If-Match: " + entryToUpdate.Etag); >>> service.RequestFactory = factory; >>> >>> entry = service.Update(new Uri(entryToUpdate.MediaUri.ToString()), >>> stream, contentType, >>> entryToUpdate.Title.Text) as DocumentEntry; >>> } >>> finally >>> { >>> stream.Close(); >>> } >>> >>> return entry; >>> } >>> >>> You may have more luck next time if the post isn't "write my app for >>> me". >>> >>> Eric >>> >>> On Jun 11, 11:49 am, harry mendell <qvt...@gmail.com> wrote: >>> >>> I tried .net and first and can upload but not update. At this point I >>> >>> would be grateful for any solution. I've been at this for over a week >>> >>> and am ready to put my head through the wall:) >>> >>> >>> PS I am able to do it a cell at a time with the spreadsheet api, but >>> >>> its slow, and besides I am not going to be able to sleep until I get >>> >>> this. I haven't felt like such a newbie since I poped out of my >>> >>> mother. Starting to feel postal. >>> >>> >>> >>> >>> >>> >>> >> >> >> >> >> >> >> > > > > > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Google Docs Data APIs" group. To post to this group, send email to Google-Docs-Data-APIs@googlegroups.com To unsubscribe from this group, send email to google-docs-data-apis+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/Google-Docs-Data-APIs?hl=en -~----------~----~----~----~------~----~------~--~---