Class: Cloudflare::Rails::Railtie::Importer

Inherits:
Object
  • Object
show all
Includes:
HTTParty
Defined in:
lib/cloudflare/rails/railtie.rb

Defined Under Namespace

Classes: ResponseError

Constant Summary collapse

IPS_V4_URL =
'/ips-v4'.freeze
IPS_V6_URL =
'/ips-v6'.freeze

Class Method Summary collapse

Class Method Details

.fetch(url) ⇒ Object



53
54
55
56
57
58
59
60
# File 'lib/cloudflare/rails/railtie.rb', line 53

def fetch(url)
  resp = get url, timeout: ::Rails.application.config.cloudflare.timeout
  if resp.success?
    resp.body.split("\n").reject(&:blank?).map { |ip| IPAddr.new ip }
  else
    raise ResponseError, resp.response
  end
end

.fetch_with_cache(type) ⇒ Object



62
63
64
65
66
# File 'lib/cloudflare/rails/railtie.rb', line 62

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_v4Object



49
50
51
# File 'lib/cloudflare/rails/railtie.rb', line 49

def ips_v4
  fetch IPS_V4_URL
end

.ips_v6Object



45
46
47
# File 'lib/cloudflare/rails/railtie.rb', line 45

def ips_v6
  fetch IPS_V6_URL
end