Forum: Rails-ES 403 Forbidden con la gema Roo

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
5c15703984caa012845b3cea129da936?d=identicon&s=25 Manuel González Noriega (Guest)
on 2008-11-09 22:07
(Received via mailing list)
Hola,

a ver si a alguien se le ocurre la (seguramente obvia) explicación a la
diferencia de resultado entre estos dos escenarios, intentando utilizar
la
gema Roo para recuperar una hoja de cálculo de Google Docs. En el
escenario
a (irb) funciona perfectamente. En el b (script/tests) net/http se
estrella
contra un 403

a)

sundaydriver:~/Code/golden_retriever mort$ irb
irb(main):001:0> require 'roo'
default formats are encoded in ISO-8859-1
=> true
irb(main):002:0>     SPREADSHEET_KEY = 'p38-cEwIpu6U_IBItnhfZEg'
=> "p38-cEwIpu6U_IBItnhfZEg"
irb(main):003:0>         Google.new(SPREADSHEET_KEY)
=> #<Google:0x272d588 @password=nil, @first_column={}, @cell={},
@filename="p38-cEwIpu6U_IBItnhfZEg", @header_line=1,
@default_sheet="Sheet1", @user=nil, @last_row={}, @cells_read={},
@formula={}, @spreadsheetkey="p38-cEwIpu6U_IBItnhfZEg", @first_row={},
@gs=#<GData::Spreadsheet:0x272d470 @source="gdata-ruby",
@service="wise",
@headers={"Authorization"=>"GoogleLogin
auth=DQAAAIsAAADxmVew0ZsLOgu8EaFK8yrWXXJhvpQuktS_kpjAR8aLKIJJz-yGjy4fBbdLWq7Uoc1p5yHdT0ZEgL3Fg3XDwTTsXoSBtI7cDg2bxGSeSzLw_CtItfHD0HRUrjZK3eb7n--dIamdIJTowBFd17ISSxcsiCowjM9Sc9qEUPzloZemTW31IOOCiZQ7g8TKIsKtgcY\n",
"Content-Type"=>"application/atom+xml"},
@spreadsheet_id="p38-cEwIpu6U_IBItnhfZEg",
@url="spreadsheets.google.com">,
@last_column={}, @cell_type={}>

b)

 SPREADSHEET_KEY = 'p38-cEwIpu6U_IBItnhfZEg'

def test_should_get_spreadsheet
      assert_nothing_raised do
        Google.new(SPREADSHEET_KEY)
      end
 end

--
  1) Failure:
test_should_get_spreadsheet(GoldenRetrieverTest) [retriever.rb:91]:
Exception raised:
Class: <Net::HTTPServerException>
Message: <"403 \"Forbidden\"">
---Backtrace---
/usr/local/lib/ruby/1.8/net/http.rb:2106:in `error!'
/usr/local/lib/ruby/gems/1.8/gems/GData-0.0.4/lib/gdata/base.rb:40:in
`authenticate'
/usr/local/lib/ruby/gems/1.8/gems/roo-1.2.0/lib/roo/google.rb:102:in
`initialize'
retriever.rb:92:in `new'
retriever.rb:92:in `test_should_get_spreadsheet'
retriever.rb:91:in `test_should_get_spreadsheet'
Ffd012d72e7f61639724878825ed25a3?d=identicon&s=25 Damian Janowski (djanowski)
on 2008-11-09 22:43
(Received via mailing list)
On Sun, Nov 9, 2008 at 7:07 PM, Manuel González Noriega
<manuel.gonzalez.noriega@gmail.com> wrote:
>  SPREADSHEET_KEY = 'p38-cEwIpu6U_IBItnhfZEg'
>
> def test_should_get_spreadsheet
>       assert_nothing_raised do
>         Google.new(SPREADSHEET_KEY)
>       end
>  end

¿Y qué pasa si definís la constante dentro del test, o si le pasás el
String directamente a Google.new?

(PD: por otro lado, no creo que el test que estás escribiendo sea una
buena idea. Por un lado, estás testeando la librería misma; por el
otro... le estás pegando a Internet en un test!)
9b3b1fd6baa8379638d8399ecd60045d?d=identicon&s=25 Emili Parreño (emili)
on 2008-11-09 22:48
(Received via mailing list)
Si ejecuto que lo tú en irb me da un 403, con lo cual lo mas probable es
que
la Key no sea correcta.

El 9 de noviembre de 2008 22:42, Damian Janowski
<damian.janowski@gmail.com>escribió:
5c15703984caa012845b3cea129da936?d=identicon&s=25 Manuel González Noriega (Guest)
on 2008-11-09 22:48
(Received via mailing list)
2008/11/9 Manuel González Noriega <manuel.gonzalez.noriega@gmail.com>

> Hola,
>
> a ver si a alguien se le ocurre la (seguramente obvia) explicación a la
> diferencia de resultado entre estos dos escenarios, intentando utilizar la
> gema Roo para recuperar una hoja de cálculo de Google Docs. En el escenario
> a (irb) funciona perfectamente. En el b (script/tests) net/http se estrella
> contra un 403
>


Solucionado y, como era previsible, un error mío que descubrí al mismo
tiempo que me lo señalaba Xavi Noria.  En algún momento de la tarde
había
definido dos variables de entorno (GOOGLE_MAIL y GOOGLE_PASSWORD) que
hacían
funcionar la sesión irb. Después conseguí olvidar haberlas definido.

Ahora me queda ver porqué estas dos variables tienen que estar
definidas, ya
que la hoja en teoría no necesita autenticación para lectura, pero eso
ya es
problema de mirar la documentación

Muchas gracias
5c15703984caa012845b3cea129da936?d=identicon&s=25 Manuel González Noriega (Guest)
on 2008-11-09 22:51
(Received via mailing list)
2008/11/9 Damian Janowski <damian.janowski@gmail.com>

> ¿Y qué pasa si definís la constante dentro del test, o si le pasás el
> String directamente a Google.new?
>

Solved. Gracias, Damian.


>
> (PD: por otro lado, no creo que el test que estás escribiendo sea una
> buena idea. Por un lado, estás testeando la librería misma; por el
> otro... le estás pegando a Internet en un test!)
>


Totalmente de acuerdo. El test es simplemente a modo de debug, y también
me
ha servido para compartir con vosotros el problema. En realidad, la gema
está mockeada con Flex Mock (http://flexmock.rubyforge.org/)
This topic is locked and can not be replied to.