Module: RubyProxyHeaders::RestClient

Defined in:
lib/ruby_proxy_headers/rest_client.rb

Overview

RestClient integration for proxy headers support.

Examples:

response = RubyProxyHeaders::RestClient.get(
  'https://example.com',
  proxy: 'http://user:pass@proxy:8080',
  proxy_headers: { 'X-ProxyMesh-Country' => 'US' }
)
puts response.proxy_response_headers

Defined Under Namespace

Classes: ProxyResponse

Class Method Summary collapse

Class Method Details

.delete(url, proxy:, proxy_headers: {}, **options) ⇒ Object

Make a DELETE request with proxy headers.



31
32
33
# File 'lib/ruby_proxy_headers/rest_client.rb', line 31

def self.delete(url, proxy:, proxy_headers: {}, **options)
  request(:delete, url, proxy: proxy, proxy_headers: proxy_headers, **options)
end

.get(url, proxy:, proxy_headers: {}, **options) ⇒ Object

Make a GET request with proxy headers.



16
17
18
# File 'lib/ruby_proxy_headers/rest_client.rb', line 16

def self.get(url, proxy:, proxy_headers: {}, **options)
  request(:get, url, proxy: proxy, proxy_headers: proxy_headers, **options)
end

.post(url, proxy:, proxy_headers: {}, payload: nil, **options) ⇒ Object

Make a POST request with proxy headers.



21
22
23
# File 'lib/ruby_proxy_headers/rest_client.rb', line 21

def self.post(url, proxy:, proxy_headers: {}, payload: nil, **options)
  request(:post, url, proxy: proxy, proxy_headers: proxy_headers, body: payload, **options)
end

.put(url, proxy:, proxy_headers: {}, payload: nil, **options) ⇒ Object

Make a PUT request with proxy headers.



26
27
28
# File 'lib/ruby_proxy_headers/rest_client.rb', line 26

def self.put(url, proxy:, proxy_headers: {}, payload: nil, **options)
  request(:put, url, proxy: proxy, proxy_headers: proxy_headers, body: payload, **options)
end

.request(method, url, proxy:, proxy_headers: {}, **options) ⇒ Object

Make a request with proxy headers.



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/ruby_proxy_headers/rest_client.rb', line 36

def self.request(method, url, proxy:, proxy_headers: {}, **options)
  require 'rest-client'

  uri = URI.parse(url)

  # For HTTPS with proxy headers, use our core connection
  if uri.scheme == 'https' && !proxy_headers.empty?
    response = RubyProxyHeaders::NetHTTP.request(
      method,
      url,
      proxy: proxy,
      proxy_headers: proxy_headers,
      headers: options[:headers],
      body: options[:body]
    )
    return response
  end

  # For HTTP or no proxy headers, use standard RestClient
  ::RestClient.proxy = proxy
  response = ::RestClient.send(method, url, options)
  ProxyResponse.new(response, {})
end