I meant Google Groups.  It ruins code formatting.

On Tue, Jun 16, 2009 at 12:34 PM, harry mendell <harry.mend...@gmail.com>wrote:

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