Faraday: Faraday.get and basic auth

Created on 23 Oct 2014  ·  5Comments  ·  Source: lostisland/faraday

I can't seem to get Faraday.get to accept the user:pass@host syntax from a url and respect it.

Reproducing with Faraday 0.9.0

Faraday.get("http://foo:bar@localhost:3333/test")

The "server"

% nc -l localhost 3333
GET /test HTTP/1.1
User-Agent: Faraday v0.9.0
Accept-Encoding: gzip;q=1.0,deflate;q=0.6,identity;q=0.3
Accept: */*
Connection: close
Host: localhost:3333

I expected an Authentication header, or perhaps an error that auth wasn't supported.

I couldn't find docs on the Faraday.get method on rubydoc.info for the Faraday module: http://www.rubydoc.info/gems/faraday/Faraday - so I'm not sure what I'm doing wrong.

If you point me in the write direction, I am happy to write documentation for this method.

Most helpful comment

simpler:
Faraday.get('http://localhost:3000', nil, authorization: "Bearer 1123")

All 5 comments

There are several ways you can set authentication headers with Faraday. One way is to initialize a Faraday::Connection instance and use the basic_auth helper method:

conn = Faraday.new(url: 'http://example.com') # create a new Connection with base URL
conn.basic_auth('user', 'pass')               # set the Authentication header
conn.get('/foo')                              # GET http://example.com/foo

You could also use middleware:

conn = Faraday.new(url: 'http://example.com') do |builder|
  builder.use Faraday::Request::Retry
  builder.use Faraday::Request::BasicAuthentication, 'user', 'pass'
  builder.use Faraday::Response::Logger
  builder.use Faraday::Adapter::NetHttp
end

conn.get('/foo')

or:

Faraday.new(url: 'http://example.com') do |builder|
  builder.request  :retry
  builder.request  :basic_authentication, 'user', 'pass'
  builder.response :logger
  builder.adapter  :net_http
end

conn.get('/foo')

Intridea has a nice blog post on basic Faraday usage that's a few years old but still relevant.

Hope it helps some,
O-I

Thanks @O-I for the helpful examples.

@jordansissel For now, please use this form:

conn = Faraday.new('http://example.com')
conn.basic_auth('user', 'pass')
conn.get('/foo')

Sorry for the trouble.

Thanks for the pointers, all! It helped me get things working. ❤️❤️❤️

On Tuesday, October 6, 2015, Mislav Marohnić [email protected]
wrote:

Thanks @O-I https://github.com/O-I for the helpful examples.

@jordansissel https://github.com/jordansissel For now, please use this
form:

conn = Faraday.new('http://example.com')
conn.basic_auth('user', 'pass')
conn.get('/foo')

Sorry for the trouble.


Reply to this email directly or view it on GitHub
https://github.com/lostisland/faraday/issues/426#issuecomment-145914646.

This was also reported as #343.

simpler:
Faraday.get('http://localhost:3000', nil, authorization: "Bearer 1123")

Was this page helpful?
0 / 5 - 0 ratings

Related issues

yarafan picture yarafan  ·  9Comments

Carlbc18 picture Carlbc18  ·  23Comments

auxbuss picture auxbuss  ·  9Comments

PavelPenkov picture PavelPenkov  ·  9Comments

coberlin picture coberlin  ·  32Comments