class Cloudflare::Rails::Railtie::Importer

Constants

BASE_URL
IPS_V4_URL
IPS_V6_URL

Public Class Methods

fetch(url) click to toggle source
# File lib/cloudflare/rails/railtie.rb, line 52
def fetch(url)
  uri = URI("#{BASE_URL}#{url}")

  resp = Net::HTTP.start(uri.host,
                         uri.port,
                         use_ssl: true,
                         read_timeout: ::Rails.application.config.cloudflare.timeout) do |http|
    req = Net::HTTP::Get.new(uri)

    http.request(req)
  end

  if resp.is_a?(Net::HTTPSuccess)
    resp.body.split("\n").reject(&:blank?).map { |ip| IPAddr.new ip }
  else
    raise ResponseError, resp
  end
end
fetch_with_cache(type) click to toggle source
# File lib/cloudflare/rails/railtie.rb, line 71
def fetch_with_cache(type)
  ::Rails.cache.fetch("cloudflare-rails:#{type}", expires_in: ::Rails.application.config.cloudflare.expires_in) do
    send type
  end
end
ips_v4() click to toggle source
# File lib/cloudflare/rails/railtie.rb, line 48
def ips_v4
  fetch IPS_V4_URL
end
ips_v6() click to toggle source
# File lib/cloudflare/rails/railtie.rb, line 44
def ips_v6
  fetch IPS_V6_URL
end