THANKS! I' about to try this but your comment about groups went right  
over my head. What do you mean?

PS  I hope you understand that my side comments are intended to  amuse  
and put a little perspective on whats important. not insult.
On Jun 16, 2009, at 3:00 PM, Eric (Google) wrote:

>
> Groups is going to make this an absolute mess,
> but here is my test script:
>
> using System;
> using System.Collections.Generic;
> using System.Linq;
> using System.Text;
> using Google.GData.Documents;
> using Google.GData.Client;
> using Google.GData.Extensions;
> using System.IO;
> using System.Collections;
> using Google.Documents;
>
> namespace ConsoleApplication1
> {
>  class Program
>  {
>    static public DocumentsService service = null;
>
>    public static Hashtable GDocumentsAllowedTypes;
>
>    /// <summary>
>    /// Static constructor used to initialize GDocumentsAllowedTypes.
>    /// </summary>
>    static Program()
>    {
>        GDocumentsAllowedTypes = new Hashtable();
>        GDocumentsAllowedTypes.Add("CSV", "text/csv");
>        GDocumentsAllowedTypes.Add("TAB", "text/tab-separated-
> values");
>        GDocumentsAllowedTypes.Add("TSV", "text/tab-separated-
> values");
>        GDocumentsAllowedTypes.Add("TXT", "text/plain");
>        GDocumentsAllowedTypes.Add("HTML", "text/html");
>        GDocumentsAllowedTypes.Add("HTM", "text/html");
>        GDocumentsAllowedTypes.Add("DOC", "application/msword");
>        GDocumentsAllowedTypes.Add("DOCX", "application/msword");
>        GDocumentsAllowedTypes.Add("ODS", "application/x-
> vnd.oasis.opendocument.spreadsheet");
>        GDocumentsAllowedTypes.Add("ODT", "application/
> vnd.oasis.opendocument.text");
>        GDocumentsAllowedTypes.Add("RTF", "application/rtf");
>        GDocumentsAllowedTypes.Add("SXW", "application/
> vnd.sun.xml.writer");
>        GDocumentsAllowedTypes.Add("XLSX", "application/vnd.ms-
> excel");
>        GDocumentsAllowedTypes.Add("XLS", "application/vnd.ms-excel");
>        GDocumentsAllowedTypes.Add("PPT", "application/vnd.ms-
> powerpoint");
>        GDocumentsAllowedTypes.Add("PPS", "application/vnd.ms-
> powerpoint");
>        GDocumentsAllowedTypes.Add("PDF", "application/pdf");
>    }
>
>    static void Main(string[] args)
>    {
>      service = new DocumentsService("companyName-AppName-
> versionNum");
>      service.setUserCredentials("u...@gmail.com", "password");
>      service.QueryAuthenticationToken(); // Authenticate the user
> immediately
>
>      DocumentsFeed doclistFeed = service.Query(new DocumentsListQuery
> ());
>
>      DocumentEntry entry = (DocumentEntry)doclistFeed.Entries[0];
>      Console.WriteLine("Updating " + entry.Title.Text);
>
>      DocumentEntry updatedEntry = ReplaceDocContents(entry, "C:\
> \replace.doc");
>      Console.WriteLine(entry.Title.Text + " Updated!");
>      Console.WriteLine("view at " + entry.AlternateUri.ToString());
>
>      Console.Read();  // hang
>    }
>
>    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.");
>        }
>        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;
>    }
>  }
> }
>
> Eric
>
> On Jun 16, 11:41 am, harry mendell <harry.mend...@gmail.com> wrote:
>> OK, I will do that, but in my interest for self-preservation I would
>> like to be able to get something working today. I almost considered
>> hiring a temp to hit the update button onthe docs update button on  
>> the
>> docs.google.com page every minute (LOL), I also thought of using
>> Amazon's mechanical turk and offer  .05 an upload :)
>>
>> Since we have gone so far with this to you have anything else I can
>> try before my surrender?
>> On Jun 16, 2009, at 1:59 PM, Eric Bidelman wrote:
>>
>>
>>
>>> See my earlier reply.  Java and Python are the most complete w.r.t.
>>> examples
>>> and code snippets in the docs:
>>> http://code.google.com/apis/documents/docs/2.0/ 
>>> developers_guide_java....
>>> http://code.google.com/apis/documents/docs/1.0/developers_guide_pytho 
>>> ...
>>
>>> 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:rqfFdRlpa
>>>>  
>>>> ...
>>>> "
>>>>   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/ 
>>>>> ...
>>
>>>>> 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 =...
>>
>> read more ยป
> >


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