Faraday: рдЪреЗрддрд╛рд╡рдиреА: `рдлреИрд░рд╛рдбреЗ::рдХрдиреЗрдХреНрд╢рди#basic_auth` рдмрд╣рд┐рд╖реНрдХреГрдд рд╣реИ

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

рдмреБрдирд┐рдпрд╛рджреА рдЬрд╛рдирдХрд╛рд░реА

  • рдлреИрд░рд╛рдбреЗ рд╕рдВрд╕реНрдХрд░рдг: 1.7.1
  • рд░реВрдмреА рд╕рдВрд╕реНрдХрд░рдг: 3.0.2

рдореБрджреЗ рдХрд╛ рд╡рд┐рд╡рд░рдг

рджрд╕реНрддрд╛рд╡реЗрдЬ рдореВрд▓ рд▓реЗрдЦ рдирд┐рд░реНрджреЗрд╢реЛрдВ рд╕реЗ рдореЗрд▓ рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдиреА, рдЕрджреНрдпрддрди рдХреЛрдб рджреЗрдЦрд╛ред рдкреНрд░рд▓реЗрдЦрд┐рдд рдХреЛрдб рдХрдИ рддрд░реНрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрддрд╛ рд╣реИред

рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЧрд▓рдд рд╣реИрдВ рдпрд╛ рдпрд╣ рдордгрд┐ рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реИред

рдкреНрд░рдЬрдирди рдХреЗ рдЪрд░рдг

http = Faraday.new do |conn|
  conn.request(:authorization, :basic, 'username', 'password')
end

http.post("https://example.com")
ArgumentError: wrong number of arguments (given 4, expected 3)
from /Users/mscoutermarsh/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/faraday-1.7.1/lib/faraday/request/authorization.rb:43:in `initialize'

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

рдбреЙрдХреНрд╕ рдЧрд▓рдд рд╣реИрдВ :) рдореИрдВрдиреЗ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрднреА рдПрдХ рдкреАрдЖрд░ рдЦреЛрд▓рд╛ рд╣реИред

рдЗрд╕ рдмреАрдЪ рдЖрдкрдХреЛ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

http = Faraday.new do |conn|
  conn.request(:basic_auth, 'username', 'password')
end

рдирдорд╕реНрдХрд╛рд░! рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП 1.x рдмрд╣рд┐рд╖реНрдХрд░рдг рд╕рдВрджреЗрд╢ рдХреЗ рд╕рд╛рде рддреБрдХрдмрдВрджреА рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рд╕рдВрджрд░реНрдн рд╣реИ: "рд╕рднреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЖрдЧрд╛рдореА 2.0 рд╣реИрдВ"ред рд╡рд╣ рд╕рдВрд╕реНрдХрд░рдг рдЬрд╣рд╛рдВ рдкреБрд░рд╛рдирд╛ рддрд░реАрдХрд╛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд╕рдВрджрд░реНрдн рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХреЗрд╡рд▓ рд░реАрдбрдореЗ рдореЗрдВ рд╣реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдпрд╣ рдПрдХ рдХрдордЬреЛрд░реА рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреЗ рдореЛрд░реНрдЪреЗ рдкрд░ рдареЛрд╕ рд╕рд╣рд╛рдпрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗред

рдЙрд╕ рд╣рд┐рд╕реНрд╕реЗ рд╕реЗ рд▓рд┐рдВрдХ рдХрд░реЗрдВ:

https://github.com/lostisland/faraday#attention

@peterberkenbosch рд╕рд╣реА рд╣реИ, рдпрд╣ рдлреИрд░рд╛рдбреЗ 1.x рдореЗрдВ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕рд╣реА рддрд░реАрдХрд╛ рд╣реИ, рдЬрдмрдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЖрдЧрд╛рдореА v2.0 рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдЙрдкрдпреЛрдЧ рджрд┐рдЦрд╛ рд░рд╣рд╛ рд╣реИред

рднреНрд░рдо рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдпрд╣ рдкрд╣рд▓реА рдмрд╛рд░ рдирд╣реАрдВ рд╣реИ рдЬрдм рдЗрд╕ рддрд░рд╣ рдХрд╛ рдореБрджреНрджрд╛ рдЙрдард╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореИрдВ рдЪреАрдЬреЛрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддреНрд╡рд░рд┐рдд рд╕рдорд╛рдзрд╛рди рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдБ

рд╢реБрдХреНрд░рд┐рдпрд╛! рдЕрдм рд╕рдм рдЕрдЪреНрдЫрд╛ рд╣реИред тЭдя╕П

рд╣реИрд▓реЛ @iMacTia ,

рдореБрдЭреЗ рдЕрднреА рднреА рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рд╕рдорд╕реНрдпрд╛ рд╣реИред
рдореИрдВ рдлреИрд░рд╛рдбреЗ 1.7.1 рдФрд░ рд░реВрдмреА 2.7.2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдореИрдВрдиреЗ рдореВрд▓ рд░реВрдк рд╕реЗ рдЗрд╕ рддрд░рд╣ рдПрдХ рдХрдиреЗрдХреНрд╢рди рдмрдирд╛рдпрд╛ рд╣реИ

client = Faraday.new(url: url) do |faraday|
    faraday.headers["Accept"] = "application/json"
    faraday.headers["X-Version"] = "2"
    faraday.headers["Authorization"] = "token #{token}"
    faraday.request(:json)
    faraday.response(:json, content_type: /\bjson$/)
    faraday.adapter(Faraday.default_adapter)
  end

рдЙрдкрд░реЛрдХреНрдд рдмрд╛рдд рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдореИрдВ faraday.request(:token_auth, рдЯреЛрдХрди) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд┐рдЪ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдЗрд╕реЗ рдЕрдиреБрд░реЛрдз рдореЗрдВ рд╣реЗрдбрд░ рдЬреЛрдбрд╝рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛

client = Faraday.new(url: url) do |faraday|
    faraday.headers["Accept"] = "application/json"
    faraday.headers["X-Version"] = "2"
    faraday.request(:token_auth, token)
    faraday.request(:json)
    faraday.response(:json, content_type: /\bjson$/)
    faraday.adapter(Faraday.default_adapter)
end

рдЙрдкрд░реЛрдХреНрдд рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА "errors"=>["Authentication Required"]

client.get(path, {"sort"=>"created_at", "direction"=>"desc", "per_page"=>100})

рдореИрдВрдиреЗ рдХреЛрдб рднреА рдбреАрдмрдЧ рдХрд┐рдпрд╛ рдФрд░ рдХрд┐рд╕реА рддрд░рд╣, рдорд┐рдбрд▓рд╡реЗрдпрд░ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдкреНрд░рднрд╛рд╡реА рдирд╣реАрдВ рд╣реБрдЖ рдФрд░ рд╣реЗрдбрд░ рдореЗрдВ Authorization , рдпрд╣рд╛рдВ рдПрдХ рдЕрдиреБрд░реЛрдз рдСрдмреНрдЬреЗрдХреНрдЯ рдбрдВрдк рд╣реИ

#<struct Faraday::Request http_method=:get, path="hide/the/path", params={"sort"=>"created_at", "direction"=>"desc", "per_page"=>100}, headers={"Accept"=>"application/json;", "X-Version"=>"2", "User-Agent"=>"Faraday v1.7.1"}, body=nil, options=#<Faraday::RequestOptions (empty)>>

рдХреНрдпрд╛ рдореИрдВрдиреЗ рдЗрд╕реЗ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдпрд╛ рдореБрдЭреЗ рдПрдХ рдирдпрд╛ рдмрдЧ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?

BTW, faraday.headers["Authorization"] = "token #{token}" рдФрд░ faraday.request(:token_auth, token) рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИред рдореЗрд░реЗ рдиреМрд╕рд┐рдЦрд┐рдпрд╛ рд░реВрдмреА рдЬреНрдЮрд╛рди рдФрд░ рд╕реНрд░реЛрдд рдХреЛрдб рдкрдврд╝рдиреЗ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, token_auth рд╣реЗрдбрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЬреЛ faraday.headers[]= рдмрд░рд╛рдмрд░ рд╣реИред рдлрд┐рд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ, рд╣рдо рд╕реАрдзреЗ рд╢реАрд░реНрд╖рд▓реЗрдЦ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдХреНрдпреЛрдВ рдХрд░рддреЗ рд╣реИрдВ?

рд╣рд╛рдп @xiaoxipang ,

рдХреНрдпрд╛ рдореИрдВрдиреЗ рдЗрд╕реЗ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдпрд╛ рдореБрдЭреЗ рдПрдХ рдирдпрд╛ рдмрдЧ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?

рдЖрдкрдиреЗ рдЗрд╕реЗ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдареАрдХ рд╡реИрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдЬреИрд╕рд╛ рд╕рд░реНрд╡рд░ рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рд╣реИред
рдпрд╣ "рдЯреЛрдХрди рдСрде" рдПрдХ рдмрд╣реБрдд рдкреБрд░рд╛рдиреЗ рдорд╛рдирдХ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЕрдм рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдмрд┐рдпрд░рд░ рдЯреЛрдХрди рдФрд░ рдЕрдиреНрдп рддрдВрддреНрд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╣реЗрдбрд░ рдЖрдЙрдЯрдкреБрдЯ Authorization: Token token=token , token= рдЙрдкрд╕рд░реНрдЧ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ, рдЬреЛ рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рд╕реЗрд╡рд░ рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдирд┐рдореНрди рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

client = Faraday.new(url: url) do |faraday|
    #┬аThis header is not necessary, it will be set by the json middleware
    # faraday.headers["Accept"] = "application/json"
    faraday.headers["X-Version"] = "2"
    faraday.request(:authorization, 'Token', token)
    faraday.request(:json)
    faraday.response(:json, content_type: /\bjson$/)
    faraday.adapter(Faraday.default_adapter)
end

рдпрд╣ рд╣реЗрдбрд░ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ Authorization: Token token (рдХреЛрдИ рдЙрдкрд╕рд░реНрдЧ рдирд╣реАрдВ) рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдЧрд╛ред
рдХреГрдкрдпрд╛ рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛рдПрдВ рдФрд░ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ!

рдореИрдВрдиреЗ рдХреЛрдб рднреА рдбреАрдмрдЧ рдХрд┐рдпрд╛ рдФрд░ рдХрд┐рд╕реА рднреА рддрд░рд╣, рдорд┐рдбрд▓рд╡реЗрдпрд░ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдкреНрд░рднрд╛рд╡реА рдирд╣реАрдВ рд╣реБрдЖ рдФрд░ рд╣реЗрдбрд░ рдореЗрдВ рдХреЛрдИ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдирд╣реАрдВ, рдпрд╣рд╛рдВ рдПрдХ рдЕрдиреБрд░реЛрдз рдСрдмреНрдЬреЗрдХреНрдЯ рдбрдВрдк рд╣реИ

рдпрд╣ рдЕрдЬреАрдм рдмрд╛рдд рд╣реИ, рдореИрдВрдиреЗ рдЕрднреА рдКрдкрд░ рджрд┐рдП рдЧрдП рдХреЛрдб рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдЕрдкреЗрдХреНрд╖рд┐рдд рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдбрд┐рдмрдЧрд┐рдВрдЧ рдореЗрдВ struct Faraday::Request рджреЗрдЦрдХрд░ рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдорд┐рдбрд▓рд╡реЗрдпрд░ рджреНрд╡рд╛рд░рд╛ рд╣реЗрдбрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЖрдк рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдмрд╣реБрдд рдЬрд▓реНрджреА рджреЗрдЦ рд░рд╣реЗ рд╣реЛрдВрдЧреЗред
рдпрджрд┐ рдЖрдк рдПрдХ рдЕрдиреБрд░реЛрдз рдЪрд▓рд╛рддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕реЗ рд╡рд╣рд╛рдВ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:

client.get('https://google.co.uk')
 => #<Faraday::Response:0x00007fdd01ad1340
  @on_complete_callbacks=[],
  @env=#<Faraday::Env
    @method=:get
    @url=#<URI::HTTPS https://google.co.uk/>
    @request=#<Faraday::RequestOptions (empty)>
    @request_headers={"X-Version"=>"2", "User-Agent"=>"Faraday v1.7.1", "Authorization"=>"Token token"}
    ...

рдпрд╛ рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛ рд╣реИ faraday.response :logger рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЛ рдЕрдкрдиреЗ рдПрдбреЙрдкреНрдЯрд░ рд╕реЗ рдареАрдХ рдкрд╣рд▓реЗ рдЬреЛрдбрд╝рдирд╛, рдЗрд╕ рддрд░рд╣ рдпрд╣ рд╕рднреА рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЗ рдкреНрд░рднрд╛рд╡реА рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдЕрдиреБрд░реЛрдз рдХреЛ рд▓реЙрдЧ рдХрд░реЗрдЧрд╛ рдФрд░ рдЖрдкрдХреЛ рдЗрд╕реЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред

BTW, faraday.headers["Authorization"] = "token #{token}" рдФрд░ faraday.request(:token_auth, token) рдореЗрдВ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИред рдореЗрд░реЗ рдиреМрд╕рд┐рдЦрд┐рдпрд╛ рд░реВрдмреА рдЬреНрдЮрд╛рди рдФрд░ рд╕реНрд░реЛрдд рдХреЛрдб рдкрдврд╝рдиреЗ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЯреЛрдХрди_рдСрде рд╣реЗрдбрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЬреЛ рдлреИрд░рд╛рдбреЗ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред рд╣реЗрдбрд░ [] =ред рдлрд┐рд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ, рд╣рдо рд╕реАрдзреЗ рд╢реАрд░реНрд╖рд▓реЗрдЦ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдХреНрдпреЛрдВ рдХрд░рддреЗ рд╣реИрдВ?

рдЙрд╕ рд╕реБрдЭрд╛рд╡ рдХрд╛ рдореБрдЦреНрдп рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдЖрдорддреМрд░ рдкрд░ рдЕрдзрд┐рдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, token_auth рдорд┐рдбрд▓рд╡реЗрдпрд░ рдЖрдкрдХреЛ рдЯреЛрдХрди рдЧреБрдг рднреА рд╕реЗрдЯ рдХрд░рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:

faraday.request(:token_auth, 'token', {prop1: value1, prop2: value2})
# This produces `Authorization: Token token=token prop1=value1 prop2=value2

рдЗрд╕реА рддрд░рд╣, basic_auth рдорд┐рдбрд▓рд╡реЗрдпрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛/рдкрд╛рд╕ рдЬреЛрдбрд╝реА рдХрд╛ рдмреЗрд╕ 64 рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХрд░рддрд╛ рд╣реИред

рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдКрдкрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ faraday.request(:authorization, 'Token', token) рдорд┐рдбрд▓рд╡реЗрдпрд░ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╣реЗрдбрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдХреБрдЫ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдлреИрд░рд╛рдбреЗ v2 рдореЗрдВ рдХрд┐ рдорд┐рдбрд▓рд╡реЗрдпрд░ token рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рд▓реИрдореНрдмреНрдбрд╛/рдЦрд░реАрдж рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдкрд░ рдЗрд╕реЗ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ рдкреНрд░рд╛рд░реНрдердирд╛ред рдпрд╣ рдЖрдкрдХреЛ TokenStorage рд╡рд░реНрдЧ рд░рдЦрдиреЗ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдмреАрдЪ рдЯреЛрдХрди рдХреЛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рджреВрд╕рд░реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде, рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдкрд░ рд╣реЗрдбрд░ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдпрд╛ рд╣рд░ рдмрд╛рд░ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ред

рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдкрдХреЗ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдЖрдк рджреЛрдиреЛрдВ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЬреЛ рд╕рдмрд╕реЗ рдЬреНрдпрд╛рджрд╛ рдкрд╕рдВрдж рд╣реИ рдЙрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

@iMacTia рдорджрдж рдФрд░ рд╡рд┐рд╕реНрддреГрдд рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж!

рдХреГрдкрдпрд╛ рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛рдПрдВ рдФрд░ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ!

faraday.request(:authorization, "token", token) рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдпрд╛ рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЕрдкрдиреЗ рдПрдбреЙрдкреНрдЯрд░ рд╕реЗ рдкрд╣рд▓реЗ faraday.response :logger рдорд┐рдбрд▓рд╡реЗрдпрд░ рдЬреЛрдбрд╝реЗрдВ, рдЗрд╕ рддрд░рд╣ рдпрд╣ рд▓реЙрдЧ рдХрд░реЗрдЧрд╛
рд╕рднреА рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЗ рдкреНрд░рднрд╛рд╡реА рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВ рдФрд░ рдЖрдкрдХреЛ рдЗрд╕реЗ рдЕрд╡рд╢реНрдп рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдпрд╣ рдЬрд╛рдирдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рдЕрднреА рд╕реЗ рдХреИрд╕реЗ рдбрд┐рдмрдЧ рдХрд░рдирд╛ рд╣реИред рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╣реА рд╣реИрдВ:
faraday.request(:authorization, "token", token) , рд╣реЗрдбрд░ Authorization: "token token_value"
faraday.request(:token_auth, token) , рд╣реЗрдбрд░ Authorization: "Token token=\"token_value\""

рдпрд╣ рдЕрдЬреАрдм рдмрд╛рдд рд╣реИ, рдореИрдВрдиреЗ рдЕрднреА рдКрдкрд░ рджрд┐рдП рдЧрдП рдХреЛрдб рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдЕрдкреЗрдХреНрд╖рд┐рдд рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдбрд┐рдмрдЧрд┐рдВрдЧ рдореЗрдВ рд╕рдВрд░рдЪрдирд╛ рдлреИрд░рд╛рдбреЗ :: рдЕрдиреБрд░реЛрдз рджреЗрдЦрдХрд░ рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдорд┐рдбрд▓рд╡реЗрдпрд░ рджреНрд╡рд╛рд░рд╛ рд╣реЗрдбрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЖрдк рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдмрд╣реБрдд рдЬрд▓реНрджреА рджреЗрдЦ рд░рд╣реЗ рд╣реЛрдВрдЧреЗред

рдареАрдХ рд╣реИ, рдореИрдВрдиреЗ рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рдХреЛ connection#run_request рдФрд░ рдЙрд╕ рд╕рдордп, рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЛ рдирд╣реАрдВ рдмреБрд▓рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореИрдВ рдлреИрд░рд╛рдбреЗ :: рдЕрдиреБрд░реЛрдз :: рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдореЗрдВ рдПрдХ рдирдпрд╛ рдмреНрд░реЗрдХ рдкреНрд╡рд╛рдЗрдВрдЯ рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ рдФрд░ рдЕрдм рдореИрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдкрдХреЗ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджреЗрдЧрд╛, рд▓реЗрдХрд┐рди рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдЖрдк рджреЛрдиреЛрдВ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЬреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдкрд╕рдВрдж рд╣реИ рдЙрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

рд╣рд╛рдБ рдФрд░ рдлрд┐рд░ рд╕реЗ рдзрдиреНрдпрд╡рд╛рдж!

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрднреА рдХреЗ рд▓рд┐рдП рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдиреА рд╕реЗ рдХреИрд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдПрдВ?

      builder.request :basic_auth, <strong i="6">@client_id</strong>, <strong i="7">@client_secret</strong>

рдЕрднреА рднреА 1.7.1 рдкрд░ рдореЗрд░реЗ рд▓рд┐рдП рдЪреЗрддрд╛рд╡рдиреА рдЙрдард╛рддрд╛ рд╣реИ рдФрд░, рдЬреИрд╕рд╛ рдХрд┐ @mscoutermarsh рдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдирдпрд╛ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдЕрднреА рддрдХ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИред

@paukul

http = Faraday.new do |conn|
  conn.request(:basic_auth, 'username', 'password')
end

рдЗрд╕реЗ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рддрдп рдХрд┐рдпрд╛ред рдпрд╣ рдЖрдкрдХреЗ рдЬреИрд╕рд╛ рд╣реА рджрд┐рдЦрддрд╛ рд╣реИ, рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдкрдХреЛ рдЕрднреА рднреА рдЪреЗрддрд╛рд╡рдиреА рдХреНрдпреЛрдВ рджреЗ рд░рд╣рд╛ рд╣реИред

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

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

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

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

jeffb-stell picture jeffb-stell  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

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

asf-stripe picture asf-stripe  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ