Class: Cloudfront::Rails::Railtie::Importer

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

Defined Under Namespace

Classes: ResponseError

Class Method Summary collapse

Class Method Details

.fetchObject



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/cloudfront/rails/railtie.rb', line 33

def fetch
  resp = get "/ip-ranges.json", timeout: ::Rails.application.config.cloudfront.timeout

  if resp.success?
    json = ActiveSupport::JSON.decode resp

    trusted_ipv4_proxies = json["prefixes"].map do |details|
                             IPAddr.new(details["ip_prefix"])
                           end

    trusted_ipv6_proxies = json["ipv6_prefixes"].map do |details|
                             IPAddr.new(details["ipv6_prefix"])
                           end

    trusted_ipv4_proxies + trusted_ipv6_proxies
  else
    raise ResponseError.new(resp.response)
  end
end

.fetch_with_cacheObject



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

def fetch_with_cache
  ::Rails.cache.fetch("cloudfront-rails-ips",
                      expires_in: ::Rails.application.config.cloudfront.expires_in) do
    self.fetch
  end
end