I can't seem to get Faraday.get
to accept the user:pass@host syntax from a url and respect it. рдореБрдЭреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Faraday.get
рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ : рдпреВрдЖрд░рдПрд▓ рд╕реЗ @ рд╣реЛрд╕реНрдЯ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдкрд╛рд╕ рдХрд░реЗрдВ рдФрд░ рдЗрд╕рдХрд╛ рд╕рдореНрдорд╛рди рдХрд░реЗрдВред
Reproducing with Faraday 0.9.0 рдлреИрд░рд╛рдбреЗ 0.9.0 . рдХреЗ рд╕рд╛рде рдкреБрдирд░реБрддреНрдкрд╛рджрди
Faraday.get("http://foo:bar<strong i="9">@localhost</strong>: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. рдореБрдЭреЗ рдлреИрд░рд╛рдбреЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП rubydoc.info рдкрд░ Faraday.get
рд╡рд┐рдзрд┐ рдкрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдирд╣реАрдВ рдорд┐рд▓реЗ: http://www.rubydoc.info/gems/faraday/Faraday - рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рдХреНрдпрд╛ рд╣реВрдВ рдЧрд▓рдд рдХрд░ рд░рд╣рд╛ рд╣реИред
If you point me in the write direction, I am happy to write documentation for this method. рдпрджрд┐ рдЖрдк рдореБрдЭреЗ рд▓рд┐рдЦрдиреЗ рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред
enThere 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: рдПрдХ рддрд░реАрдХрд╛ рд╣реИ Faraday::Connection
рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдирд╛ рдФрд░ basic_auth
рд╣реЗрд▓реНрдкрд░ рдореЗрдердб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛:
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, рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреБрдЫ рдорджрдж рдХрд░рддрд╛ рд╣реИ,
OI рдУрдЖрдИ
Thanks @OI for the helpful examples. рдЙрдкрдпреЛрдЧреА рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж @OIред
@jordansissel For now, please use this form: @jordansissel рдЕрднреА рдХреЗ рд▓рд┐рдП, рдХреГрдкрдпрд╛ рдЗрд╕ рдлреЙрд░реНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
conn = Faraday.new('http://example.com')
conn.basic_auth('user', 'pass')
conn.get('/foo')
Sorry for the trouble. рдкрд░реЗрд╢рд╛рдиреА рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИрдВред
enThanks for the pointers, all! рд╕рдВрдХреЗрдд рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╕рдм! It helped me get things working. рдЗрд╕рд╕реЗ рдореБрдЭреЗ рдЪреАрдЬреЛрдВ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реАред тЭдя╕ПтЭдя╕ПтЭдя╕П тЭдя╕ПтЭдя╕ПтЭдя╕П
On Tuesday, October 6, 2015, Mislav Marohni─З [email protected] рдордВрдЧрд▓рд╡рд╛рд░, 6 рдЕрдХреНрдЯреВрдмрд░, 2015 рдХреЛ, рдорд┐рд╕реНрд▓рд╛рд╡ рдорд░реЛрд╣рдиреА─З рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com
wrote: рд▓рд┐рдЦрд╛:
enThanks @OI https://github.com/OI for the helpful examples. рдЙрдкрдпреЛрдЧреА рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж @OI https://github.com/OI ред
@jordansissel https://github.com/jordansissel For now, please use this @jordansissel https://github.com/jordansissel рдЕрднреА рдХреЗ рд▓рд┐рдП, рдХреГрдкрдпрд╛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
form: рдкреНрд░рдкрддреНрд░:conn = Faraday.new('http://example.com') conn = Faraday.new ('http://example.com')
conn.basic_auth('user', 'pass') conn.basic_auth ('рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛', 'рдкрд╛рд╕')
conn.get('/foo') conn.get ('/ foo')Sorry for the trouble. рдкрд░реЗрд╢рд╛рдиреА рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИрдВред
тАФ -
Reply to this email directly or view it on GitHub рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/lostisland/faraday/issues/426#issuecomment -145914646. https://github.com/lostisland/faraday/issues/426#issuecomment -145914646ред
рдЗрд╕реЗ #343 рдХреЗ рд░реВрдк рдореЗрдВ рднреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
enрд╕рд░рд▓:
Faraday.get('http://localhost:3000', nil, authorization: "Bearer 1123")
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рд╕рд░рд▓:
enFaraday.get('http://localhost:3000', nil, authorization: "Bearer 1123")