Actually I get a 'Not a valid image' response. The partial images had to do with the conenction at work.
Still haven't found what the problem is. On Fri, May 8, 2009 at 8:15 PM, Jeff Fisher <[email protected]> wrote: > Yeah, it's odd that it's only reading part of the file before giving up (as > evidenced by your partial images on PWA.) I'm suspicious of it being > something inside of Net::HTTP since literally all we are doing is putting > the file contents as body_stream and telling it to chunk it. Maybe strip > down everything to just using Net::HTTP directly and have it post an image > to somewhere that you can Wireshark the request and see what it's doing > wrong. > > Cheers, > -Jeff > > > On Thu, May 7, 2009 at 11:12 PM, Leonardo Borges Barbosa < > [email protected]> wrote: > >> Tks for the update Jeff. >> >> I'm gonna keep on digging to see if I can find the root cause of it in >> 1.8.7. >> >> regards, >> Leonardo Borges >> www.leonardoborges.com >> >> >> On Fri, May 8, 2009 at 2:23 AM, Jeff Fisher <[email protected]>wrote: >> >>> Well you don't want to buffer the whole file into memory (think about >>> when you are uploading a 800MB YouTube file.) So what happens here is the >>> request's body property is set to a File object, like you noticed, but then >>> in default_service.rb: >>> >>> case request.body >>> when String >>> req.body = request.body >>> when Hash >>> req.set_form_data(request.body) >>> when File >>> req.body_stream = request.body >>> request.chunked = true >>> when GData::HTTP::MimeBody >>> req.body_stream = request.body >>> request.chunked = true >>> else >>> req.body = request.body.to_s >>> end >>> >>> Notice that when the body is a File object, we set the body_stream to be >>> the file object and tell it to use chunked encoding. This causes Net::HTTP >>> to read from that file object when sending its request. >>> >>> So I don't think this is the bug, though it could be there is some bug >>> with how Net::HTTP is doing the chunked encoding that is broken for 1.8.7. >>> >>> Cheers, >>> -Jeff >>> >>> >>> >>> >>> On Wed, May 6, 2009 at 1:43 PM, Leonardo Borges Barbosa < >>> [email protected]> wrote: >>> >>>> Jeff, I believe I found another bug. After I sent you my last email I >>>> went digging in gdata's source code and found the reason for that specific >>>> exception. >>>> >>>> In lib/gdata/client/base.rb, method make_file_request, the line 64 reads >>>> like this: >>>> response = self.make_request(method, url, file) >>>> >>>> This causes this request to be sent: >>>> <GData::HTTP::Request:0x15ad8a8 @url=" >>>> http://picasaweb.google.com/data/feed/api/user/leonardoborges.rj/albumid/5332810669099119713", >>>> @body=#<File:DSC03698.JPG>, @headers={"Slug"=>"DSC03698.JPG", >>>> "Authorization"=>"GoogleLogin >>>> auth=DQAAAHcAAABin-tFCqAN96yAfnDUqaBFBeU4g3r3C4Cogi9gajT9eV9LBenYIy3bpyj-SBy6xro4E8htvuMehmjfuQw8KpjVXS0fYDOjiW1k1bv1aAVJE_BOO5DvOGvtvBGEV1Anu610EL9ITwbyAxBIRrt2DGlV_XpBk8dRR8f0JPJctrWYNQ", >>>> "Content-Type"=>"image/jpeg", >>>> "User-Agent"=>"GoogleDataRubyUtil-AnonymousApp", "Content-Length"=>588, >>>> "GData-Version"=>"1"}, @method=:post> >>>> >>>> If you look at the body, it contains the default representation of the >>>> method inspect from the object File, instead of the actual data. >>>> Changing the line to: >>>> response = self.make_request(method, url, file.read) >>>> does the trick. I've just successfully upload the picture. >>>> >>>> If this is really a bug, I can fill in a patch request. Just let me >>>> know. >>>> >>>> Tks, >>>> Leonardo Borges >>>> www.leonardoborges.com >>>> >>>> >>>> >>>> On Wed, May 6, 2009 at 9:53 PM, Jeff Fisher <[email protected]>wrote: >>>> >>>>> Well, it seems you have found one bug - the exception code which was >>>>> recently revamped in a patch missed a case. This is fixed now: >>>>> >>>>> http://code.google.com/p/gdata-ruby-util/source/detail?r=29 >>>>> >>>>> But I'm still unable to reproduce your error. I uploaded the file you >>>>> gave successfully. I'm using the stock Ruby with Leopard which seems to be >>>>> ruby 1.8.6 (2008-03-03 patchlevel 114) [universal-darwin9.0] >>>>> >>>>> Can you dig into Wireshark and see what it is sending in the request? >>>>> >>>>> Cheers, >>>>> -Jeff >>>>> >>>>> >>>>> On Wed, May 6, 2009 at 11:32 AM, Leonardo Borges Barbosa < >>>>> [email protected]> wrote: >>>>> >>>>>> Hi Jeff, >>>>>> >>>>>> I was trying that for a project at work so I just got home and tried >>>>>> the same code with the attached image - which is bigger - and I'm getting >>>>>> this: >>>>>> >>>>>> NoMethodError: undefined method `status_code' for "Not a valid >>>>>> image.":String >>>>>> from >>>>>> /opt/local/lib/ruby/gems/1.8/gems/gdata-1.1.0/lib/gdata/client.rb:50:in >>>>>> `initialize' >>>>>> from >>>>>> /opt/local/lib/ruby/gems/1.8/gems/gdata-1.1.0/lib/gdata/client/base.rb:89:in >>>>>> `exception' >>>>>> from >>>>>> /opt/local/lib/ruby/gems/1.8/gems/gdata-1.1.0/lib/gdata/client/base.rb:89:in >>>>>> `raise' >>>>>> from >>>>>> /opt/local/lib/ruby/gems/1.8/gems/gdata-1.1.0/lib/gdata/client/base.rb:89:in >>>>>> `make_request' >>>>>> from >>>>>> /opt/local/lib/ruby/gems/1.8/gems/gdata-1.1.0/lib/gdata/client/base.rb:64:in >>>>>> `make_file_request' >>>>>> from >>>>>> /opt/local/lib/ruby/gems/1.8/gems/gdata-1.1.0/lib/gdata/client/base.rb:123:in >>>>>> `post_file' >>>>>> from ./picasa.rb:54:in `up_photo' >>>>>> from (irb):7 >>>>>> from /opt/local/lib/ruby/site_ruby/1.8/rubygems/exceptions.rb:75 >>>>>> >>>>>> As a side node, the attached image is in one of my albums as well, so >>>>>> it's a valid image. >>>>>> >>>>>> Thanks >>>>>> PS: This is my ruby version: >>>>>> ruby 1.8.7 (2008-08-11 patchlevel 72) [i686-darwin9] >>>>>> >>>>>> >>>>>> On Wed, May 6, 2009 at 7:08 PM, Jeff Fisher >>>>>> <[email protected]>wrote: >>>>>> >>>>>>> Very strange. I just verified I could upload a large image (since the >>>>>>> test image is minuscule) and it worked with a 5100×3338 pixel image. >>>>>>> Can you >>>>>>> e-mail me an image that is failing for you? Also it might help to know >>>>>>> what >>>>>>> version of Ruby you are running. >>>>>>> >>>>>>> Cheers, >>>>>>> -Jeff >>>>>>> >>>>>>> >>>>>>> On Wed, May 6, 2009 at 8:14 AM, Leonardo Borges < >>>>>>> [email protected]> wrote: >>>>>>> >>>>>>>> >>>>>>>> Hey guys, I've searched the knowledge base about this issue but >>>>>>>> didn't >>>>>>>> find a suitable answer yet. >>>>>>>> >>>>>>>> Using ruby with the gdata gem, I'm able to list all albums in my >>>>>>>> account, get information like title, number of photos and etc. >>>>>>>> >>>>>>>> I am also able to create new albums perfectly but when I try to >>>>>>>> upload >>>>>>>> any picture, this is how my album looks like: >>>>>>>> http://picasaweb.google.com/leonardoborges.rj/TestAlbum >>>>>>>> >>>>>>>> As you can see, seems like the data was not properly transmitted >>>>>>>> over >>>>>>>> the web. >>>>>>>> >>>>>>>> This is how my upload code looks like: - pretty much taken from the >>>>>>>> test case >>>>>>>> def up_photo(test_image) >>>>>>>> mime_type = 'image/jpeg' >>>>>>>> >>>>>>>> response = @@client.post_file(@@atom_url, >>>>>>>> test_image, mime_type).to_xml >>>>>>>> >>>>>>>> puts response >>>>>>>> end >>>>>>>> >>>>>>>> And in the following link you can check the contents of the response >>>>>>>> I >>>>>>>> get after uploading the picture: >>>>>>>> http://pastie.org/470038 >>>>>>>> >>>>>>>> Am I missing something? >>>>>>>> >>>>>>>> >>>>>>>> PS: The image is below the 20MB limit. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>>> >>>>>> >>>>> >>>>> >>>>> >>>> >>>> >>>> >>> >>> >>> >> >> >> > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Google Picasa Web Albums 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-Picasa-Data-API?hl=en -~----------~----~----~----~------~----~------~--~---
