class Cloudfront::Rails::Importer
Public Class Methods
fetch()
click to toggle source
# File lib/cloudfront/rails/importer.rb, line 5 def fetch uri = URI("https://ip-ranges.amazonaws.com/ip-ranges.json") response = Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == 'https', open_timeout: ::Rails.application.config.cloudfront.timeout, read_timeout: ::Rails.application.config.cloudfront.timeout, ssl_timeout: ::Rails.application.config.cloudfront.timeout ) do |http| http.request(Net::HTTP::Get.new(uri)) end case response when Net::HTTPSuccess json = ActiveSupport::JSON.decode response.body trusted_ipv4_proxies = json["prefixes"].select do |details| details["service"] == 'CLOUDFRONT' end.map do |details| IPAddr.new(details["ip_prefix"]) end trusted_ipv6_proxies = json["ipv6_prefixes"].select do |details| details["service"] == 'CLOUDFRONT' end.map do |details| IPAddr.new(details["ipv6_prefix"]) end trusted_ipv4_proxies + trusted_ipv6_proxies else raise ResponseError.new(response) end end
fetch_with_cache()
click to toggle source
# File lib/cloudfront/rails/importer.rb, line 38 def fetch_with_cache ::Rails.cache.fetch("cloudfront-rails-ips", expires_in: ::Rails.application.config.cloudfront.expires_in) do self.fetch end end