Faraday: рдПрдореНрдмреЗрдб рдХрд┐рдП рдЧрдП рдореВрд▓ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╡рд╛рд▓реЗ URL рдХреЛ рдкрд╛рд╕ рдХрд░рдирд╛ рдЯреВрдЯрд╛ рд╣реБрдЖ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 1 рд╕рд┐рддре░ 2021  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: lostisland/faraday

рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдорд┐рдбрд▓рд╡реЗрдпрд░ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдиреЗ рдпреВрдЖрд░рдЖрдИ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬрд╛рдирдХрд╛рд░реА рднрд╛рдЧ рдореЗрдВ рдПрдореНрдмреЗрдбреЗрдб рдореВрд▓ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рд╕рд╛рде рдПрдХ рдпреВрдЖрд░рдПрд▓ рдкрд╛рд╕ рдХрд░рдирд╛ рддреЛрдбрд╝ рджрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдмреЗрд╕рд┐рдХ_рдСрде рдЕрднреА рднреА url_prefix= рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ https://github.com/lostisland/faraday/blob/0f9626c48d0daa24888cb4e5e7962c106a48d97f/ lib/faraday/connection.rb#L364 -L367

~/src/github.com/lostisland/faraday (1.x) $ ruby -Ilib -rfaraday -rfaraday/net_http -rjson -e "puts JSON.load(Faraday.new(url: 'https://user:[email protected]/headers').get.body)['headers']['Authorization']"
WARNING: `Faraday::Connection#basic_auth` is deprecated; it will be removed in version 2.0.
While initializing your connection, use `#request(:basic_auth, ...)` instead.
See https://lostisland.github.io/faraday/middleware/authentication for more usage info.
Basic dXNlcjpwYXNzd29yZA==
~/src/github.com/lostisland/faraday (main) $ ruby -Ilib -rfaraday -rfaraday/net_http -rjson -e "puts JSON.load(Faraday.new(url: 'https://user:[email protected]/headers').get.body)['headers']['Authorization']"
lib/faraday/connection.rb:365:in `block in url_prefix=': undefined method `basic_auth' for #<Faraday::Connection:0x00007fed250abaa8 @parallel_manager=nil, @headers={}, @params={}, @options=#<Faraday::RequestOptions (empty)>, @ssl=#<Faraday::SSLOptions (empty)>, @default_parallel_manager=nil, @manual_proxy=nil, @builder=#<Faraday::RackBuilder:0x00007fed25092210 @adapter=Faraday::Adapter::NetHttp, @handlers=[Faraday::Request::UrlEncoded]>, @url_prefix=#<URI::HTTPS https://user:[email protected]/headers>> (NoMethodError)
    from lib/faraday/connection.rb:506:in `with_uri_credentials'
    from lib/faraday/connection.rb:364:in `url_prefix='
    from lib/faraday/connection.rb:84:in `initialize'
    from lib/faraday.rb:96:in `new'
    from lib/faraday.rb:96:in `new'
    from -e:1:in `<main>'

рдЗрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдпрд╣рд╛рдВ рдЙрдкрд▓рдмреНрдз рд╣реИ: https://github.com/lostisland/faraday/compare/1.x...etiennebarrie :test-basic-auth-in-url:

it 'uses User Information from the URI for Basic authentication' do
  conn.url_prefix = 'http://user:[email protected]'
  expect(conn.url_prefix.to_s).to eq('http://sushi.com/')
  request = conn.build_request(:get)
  expect(request.headers['Authorization']).to eq("Basic #{Base64.strict_encode64('user:password')}")
end

рд╣рдореЗрдВ рддрдп рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╣рдо рдЗрд╕реЗ рдареАрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрд╛ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╣рдЯрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдореЗрдВ @etiennebarrie рджреНрд╡рд╛рд░рд╛ рдЯрд┐рдкреНрдкрдгреА рджреЗрдЦреЗрдВ https://github.com/lostisland/faraday/issues/1308#issuecomment -909109525_

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдирдорд╕реНрддреЗ, рдпрд╣рд╛рдБ рдпрд╣ рдПрдХ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИ: рд▓реЛрдЪрджрд╛рд░/рд▓реЛрдЪрджрд╛рд░ рдЦреЛрдЬ-рд░реВрдмреА#1479

рд╕рднреА 5 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

@etiennebarrie рдореИрдВ рдЯрд┐рдкреНрдкрдгреА рд╕реЗ рдЖрдкрдХреЗ рд╡рд┐рдЪрд╛рд░ рдЙрджреНрдзреГрдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:

рдЬрдмрдХрд┐ рдореИрдВ рдХрдиреЗрдХреНрд╢рди рдкрд░ basic_auth рдФрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЛ рдмрд╣рд┐рд╖реНрдХреГрдд рдХрд░рдиреЗ рдХреЗ рдЦрд┐рд▓рд╛рдл рдирд╣реАрдВ рд╣реВрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ URL рдореЗрдВ рдореВрд▓ рд▓реЗрдЦ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рд░рд╣рд╕реНрдпреЛрдВ рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред

рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ 2005 рдореЗрдВ рдЗрд╕ рдкреНрд░рдерд╛ рдХреЛ

рдореИрдВ рдЙрдкрд░реЛрдХреНрдд рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдЙрддреНрд╕реБрдХ рд╣реВрдВ:

рдЗрд╕реЗ рд░рд╣рд╕реНрдпреЛрдВ рдореЗрдВ рд╡рд┐рдиреНрдпрд╕реНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП
рдореИрдВ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдХреИрд╕реЗ basic_auth рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд░рд╣рд╕реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реЛрдЧреА?
рдХреНрдпрд╛ рдРрд╕рд╛ рдХреБрдЫ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛?

# Faraday 1.x
conn = Faraday.new(url_with_no_userinfo) do |f|
  conn.request :basic_auth, Secrets.basic_auth_user, Secrets.basic_auth_pass
  ...
end

рд╣рдо рдореВрд▓ рд░реВрдк рд╕реЗ рдХрд░рддреЗ рд╣реИрдВ:

def connection
  Faraday.new(url: server) do
    # other config
  end
end

def server
  if global?
    secrets.global
  elsif something?
    secrets.other
  elsif something_else?
    secrets.another
  end
end

рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдкреНрд░рддрд┐ URL/рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛/рдкрд╛рд╕рд╡рд░реНрдб рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд░рд╣рд╕реНрдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред


рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рд░рд╣рд╕реНрдп рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рддреАрди рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдПрдХрд▓ URL рдХреЛ рдЧреБрдкреНрдд рднреА рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд╛рд╕рд╡рд░реНрдб рдХреЛ рдлреИрд░рд╛рдбреЗ рддрдХ рднреЗрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЙрд╕реЗ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред

рд╣рд╛рдБ, рдореИрдВрдиреЗ рдпрд╣реА рд╕реЛрдЪрд╛, @etiennebarrie рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж

рдирдорд╕реНрддреЗ, рдпрд╣рд╛рдБ рдпрд╣ рдПрдХ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИ: рд▓реЛрдЪрджрд╛рд░/рд▓реЛрдЪрджрд╛рд░ рдЦреЛрдЬ-рд░реВрдмреА#1479

рдЗрдирдкреБрдЯ @tagliala рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЕрдВрддрддрдГ рд╣рдо рд╕рдореБрджрд╛рдп рдХреЛ рдЦреБрд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕рдордЭрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдХрд┐рддрдирд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рд╡реНрдпрд╛рдкрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИ, рдЗрд╕реЗ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

amrrbakry picture amrrbakry  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Lewiscowles1986 picture Lewiscowles1986  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

subvertallchris picture subvertallchris  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ryanbyon picture ryanbyon  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

yusefu picture yusefu  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ