I'm trying to use a site called zendesk.com and you authenticate to the site using an email address and a password, so that the self.site definition in the model looks like this: self.site = "http://the@email.com:thepassword@myplace.zendesk.com" The problem with this is, because we have the @ sign in our username, Ruby thinks this to be an invalid URL so throws a big hissy fit: URI::InvalidURIError: bad URI(is not URI?): from /usr/lib/ruby/1.8/uri/common.rb:436:in `split' from /usr/lib/ruby/1.8/uri/common.rb:485:in `parse' from /usr/lib/ruby/gems/1.8/gems/activeresource-2.0.2/lib/active_resource/base.rb:477:in `create_site_uri_from' from /usr/lib/ruby/gems/1.8/gems/activeresource-2.0.2/lib/active_resource/base.rb:167:in `site=' from /home/ryan/projects/site/app/models/user.rb:2 from /usr/lib/ruby/gems/1.8/gems/activesupport-2.0.2/lib/active_support/dependencies.rb:203:in `load_without_new_constant_marking' from /usr/lib/ruby/gems/1.8/gems/activesupport-2.0.2/lib/active_support/dependencies.rb:203:in `load_file' from /usr/lib/ruby/gems/1.8/gems/activesupport-2.0.2/lib/active_support/dependencies.rb:342:in `new_constants_in' from /usr/lib/ruby/gems/1.8/gems/activesupport-2.0.2/lib/active_support/dependencies.rb:202:in `load_file' from /usr/lib/ruby/gems/1.8/gems/activesupport-2.0.2/lib/active_support/dependencies.rb:94:in `require_or_load' from /usr/lib/ruby/gems/1.8/gems/activesupport-2.0.2/lib/active_support/dependencies.rb:248:in `load_missing_constant' from /usr/lib/ruby/gems/1.8/gems/activesupport-2.0.2/lib/active_support/dependencies.rb:453:in `const_missing' from /usr/lib/ruby/gems/1.8/gems/activesupport-2.0.2/lib/active_support/dependencies.rb:465:in `const_missing' from (irb):1 The command line curl has no such complaint however. Suggestions?
on 12.05.2008 09:35
on 12.05.2008 09:48
On 12 May 2008, at 08:34, Ryan Bigg (Radar) wrote: > I'm trying to use a site called zendesk.com and you authenticate to > the site using an email address and a password, so that the > self.site definition in the model looks like this: > > self.site = "http://the@email.com:thepassword@myplace.zendesk.com" > > The problem with this is, because we have the @ sign in our > username, Ruby thinks this to be an invalid URL so throws a big > hissy fit: URL Encode the @ (%40) ? Fred
on 12.05.2008 10:02
Just as self.site = "http://user%40site.com:password@myplace.zendesk.com" ? That returns a 401. I think it may be passing in the %40 as part of the username. On Mon, May 12, 2008 at 5:17 PM, Frederick Cheung < frederick.cheung@gmail.com> wrote: > > The problem with this is, because we have the @ sign in our > > active_resource/base.rb:477:in `create_site_uri_from' > > from /usr/lib/ruby/gems/1.8/gems/activesupport-2.0.2/lib/ > > > > The command line curl has no such complaint however. > > > > Suggestions? > > > > > > > > > > -- Ryan Bigg http://www.frozenplague.net Feel free to add me to MSN and/or GTalk as this email.
on 12.05.2008 10:53
Even I am facing the same issue :( Any help? Thanks in advance.
on 12.05.2008 11:15
On 12 May 2008, at 09:01, Ryan Bigg (Radar) wrote: > Just as > > self.site = "http://user%40site.com:password@myplace.zendesk.com" > Worth a go :-) Definitely works with some clients/libraries (and I believe it what the rfcs say you should do)
on 12.05.2008 12:20
That didn't work. I already tried it before making my post. On Mon, May 12, 2008 at 6:44 PM, Frederick Cheung < frederick.cheung@gmail.com> wrote: > > ? > > > > > > > from /usr/lib/ruby/gems/1.8/gems/activesupport-2.0.2/lib/ > > > from /usr/lib/ruby/gems/1.8/gems/activesupport-2.0.2/lib/ > > > > > Feel free to add me to MSN and/or GTalk as this email. > > > > > > > > -- Ryan Bigg http://www.frozenplague.net Feel free to add me to MSN and/or GTalk as this email.
on 12.05.2008 12:43
On 12 May 2008, at 11:20, Ryan Bigg (Radar) wrote: > That didn't work. I already tried it before making my post. > It appears that you can set site to either a string or an instance of URI. If rails'/ruby's parsing of a url string is tripping up in this case maybe the latter option is worth exploring? Fred
on 12.05.2008 14:31
As in URI.parse? That fails too, with an identical error. On Mon, May 12, 2008 at 8:12 PM, Frederick Cheung < frederick.cheung@gmail.com> wrote: > Fred > > > > > > > > > > The problem with this is, because we have the @ sign in our > > > > active_resource/base.rb:477:in `create_site_uri_from' > > > > from /usr/lib/ruby/gems/1.8/gems/activesupport-2.0.2/lib/ > > > > > > > > > > > -- > > Ryan Bigg > > http://www.frozenplague.net > > Feel free to add me to MSN and/or GTalk as this email. > > > > > > > > -- Ryan Bigg http://www.frozenplague.net Feel free to add me to MSN and/or GTalk as this email.
on 12.05.2008 15:02
On 12 May 2008, at 13:21, Ryan Bigg (Radar) wrote: > As in URI.parse? That fails too, with an identical error. > No, I was thinking along the lings of some_uri = URI.parse('http://myplace.zendesk.com') some_uri.user = 'xxx' some_uri.password = 'zzz' self.site = some_uri Fred
on 12.05.2008 23:53
irb(main):005:0> uri.user = 'my@email.com'
URI::InvalidComponentError: bad component(expected userinfo component or
user component): daniel@email.com
from c:/ruby/lib/ruby/1.8/uri/generic.rb:269:in `check_user'
from c:/ruby/lib/ruby/1.8/uri/generic.rb:311:in `user='
from (irb):5
On Mon, May 12, 2008 at 10:31 PM, Frederick Cheung <
frederick.cheung@gmail.com> wrote:
> self.site = some_uri
> > > That didn't work. I already tried it before making my post.
> > >
> > > > That returns a 401. I think it may be passing in the %40 as part
> > > > > I'm trying to use a site called zendesk.com and you authenticate
> > > > URL Encode the @ (%40) ?
> > lib/
> > lib/
> > > > > from /usr/lib/ruby/gems/1.8/gems/activesupport-2.0.2/
> > > > >
> > > > Feel free to add me to MSN and/or GTalk as this email.
> > > Feel free to add me to MSN and/or GTalk as this email.
> > Feel free to add me to MSN and/or GTalk as this email.
> > >
>
>
> >
>
--
Ryan Bigg
http://www.frozenplague.net
Feel free to add me to MSN and/or GTalk as this email.
on 13.05.2008 00:11
On 12 May 2008, at 22:52, Ryan Bigg (Radar) wrote: > irb(main):005:0> uri.user = 'my@email.com' > URI::InvalidComponentError: bad component(expected userinfo > component or user component): daniel@email.com > from c:/ruby/lib/ruby/1.8/uri/generic.rb:269:in `check_user' > from c:/ruby/lib/ruby/1.8/uri/generic.rb:311:in `user=' > from (irb):5 > > Beginning to look like you're walking down an unfrequently used path :-). If URI is expecting @ to be encoded as %40, then I suppose its rails' responsability to convert the %40 into a @ when constructing the authorization header. Override authorization_header so that the correct header is produced ? This might even work: class X < ActiveResource::Base self.site = "http://myplace.zendesk.com" def (self.site).user 'foo@bar.com' end def (self.site).password 'xxx' end end X.site.user => "foo@bar.com" Pretty skanky though. I think the right thing is probably for authorization_header (in connection.rb) to unescape the username & password. Fred
on 13.05.2008 01:44
Definitely skanky, but it works! Shame you have to do such a hack to get it working. You are bloody brilliant Fred. I would've never thought of doing that.
on 13.05.2008 01:52
On 13 May 2008, at 00:43, Ryan Bigg (Radar) wrote: > Definitely skanky, but it works! Shame you have to do such a hack to > get it working. When I get a moment I might ask over at rails core for less dirty solutions :-) Fred
on 13.05.2008 01:55
Yeah definitely. I've got a model inheriting from ActiveResource::Base called ZenDesk, and all the models I need the ugly code in just inherit from that one model. On Tue, May 13, 2008 at 9:22 AM, Frederick Cheung < frederick.cheung@gmail.com> wrote: > Fred > > > > You are bloody brilliant Fred. I would've never thought of doing that. > > > > > > > > > > -- Ryan Bigg http://www.frozenplague.net Feel free to add me to MSN and/or GTalk as this email.