Как изменить заголовок Auth при каждой повторной попытке в клиенте Фарадея в ruby? - PullRequest
0 голосов
/ 17 октября 2019

У меня есть метод HTTP get, определенный в моем приложении на Rails, что-то вроде этого. Мне интересно, как я могу обновлять новый токен OAuth в заголовках при каждой повторной попытке?

  def configure(service_base_uri, auth_header)
    Faraday.new(service_base_uri) do |faraday|
      faraday.headers['Authorization'] = auth_header
      faraday.request :retry, max: 5, interval: 0.05
      faraday.adapter Faraday.default_adapter
    end
  end

  def get(service_base_uri, path, error_message, params = {})
    auth_header = auth_token_generator(service_base_uri, path)

    connection = configure(service_base_uri, auth_header, headers)
    response = connection.get(parsed_uri.path, params)
    return JSON.parse(response.body)
  end

  def auth_token_generator(service_base_uri, path)
    # Some code
  end

1 Ответ

1 голос
/ 17 октября 2019

Класс Faraday::Request::Retry допускает параметр с именем retry_block.

retry_block - блок, который выполняется после каждой повторной попытки. Среда запроса, параметры промежуточного программного обеспечения, текущее количество повторов и исключение передаются в блок в качестве параметров.

Поскольку среда передается в блок, вы можете использовать ее для изменения заголовков для следующегозапрос:

 Faraday.new(...) do |faraday|
   faraday.headers['Authorization'] = auth_header
   faraday.request :retry, ...,
     retry_block: proc { |env, opts, retries, exception|
       env.request_headers['Authorization'] = "Hello #{retries}"
     }
 end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...