HTTParty はフォワードプロキシをリクエストオプションとして受け取ります。サービスの URL は第 1 引数のままにします。

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 アドレスを選び、リクエストにもクラスの既定値にもプロキシ認証情報を残しません。host フィールドはプロキシのアドレスとして Net::HTTP に渡されます。ホスト名はポートとは別に指定し、宛先 URL や PAC URL を渡さないでください。

HTTParty を include したラッパークラスでは、代わりに http_proxy クラスメソッドで既定値を設定できます。リクエストオプションは、それを指定した呼び出しに限ってその既定値を上書きします。

これは HTTParty の既定の接続アダプターの説明です。独自の connection_adapter は自分のオプションの解釈に責任を持つため、有効な設定が無視されるように見えるときはそのアダプターを確認してください。HTTP ステータスは解析済みの API データとは別に読み取ります。JSON の解析成功は認証の結果ではありません。

関連記事