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
-~----------~----~----~----~------~----~------~--~---

Reply via email to