HTTParty принимает прямой прокси как параметры запроса. Оставьте URL сервиса первым аргументом:

response = HTTParty.get(
  'https://api.example/items',
  http_proxyaddr: 'proxy.example',
  http_proxyport: 8080,
  http_proxyuser: ENV.fetch('PROXY_USER'),
  http_proxypass: ENV.fetch('PROXY_PASSWORD'),
  headers: { 'Authorization' => "Bearer #{ENV.fetch('API_TOKEN')}" },
  open_timeout: 5,
  read_timeout: 15
)
puts response.code

Хост и порт прокси обозначают посредника. Имя пользователя и пароль прокси аутентифицируются там. Заголовок Authorization принадлежит API, чья учётная запись может быть совсем другой.

Для прокси без аутентификации пропустите http_proxyuser и http_proxypass. Для публичного запроса к API на разрешённом публичном маршруте возьмите HTTP-адрес из списка HTTP-прокси, не сохраняя учётные данные прокси ни в запросе, ни в значениях класса по умолчанию. Поле хоста передаётся как адрес прокси в Net::HTTP; укажите имя хоста отдельно от порта, а не URL назначения или URL PAC.

Класс-обёртка, включающий HTTParty, может вместо этого использовать свой метод класса http_proxy, чтобы задать значения по умолчанию. Параметры запроса переопределяют эти значения для вызова, который их передаёт.

Это описывает адаптер соединения HTTParty по умолчанию. Собственный connection_adapter отвечает за интерпретацию своих параметров, поэтому проверьте этот адаптер, если допустимая настройка кажется проигнорированной. Читайте HTTP-статус отдельно от разобранных данных API; успешный разбор JSON не является результатом аутентификации.

Похожие статьи