frankfurter/lib/cache.rb
BadMark d0a43e357a
Some checks failed
CI/CD Pipeline / test (push) Has been cancelled
CI/CD Pipeline / publish (push) Has been cancelled
CI/CD Pipeline / release (push) Has been cancelled
up
2026-05-21 01:38:14 -06:00

38 lines
888 B
Ruby

# frozen_string_literal: true
require "net/http"
# Purges the CDN cache after data imports. Currently supports Cloudflare.
# No-ops when credentials are not configured.
class Cache
class << self
def purge
new.purge
end
end
attr_reader :zone_id, :api_token
def initialize(zone_id: ENV["CLOUDFLARE_ZONE_ID"], api_token: ENV["CLOUDFLARE_API_TOKEN"])
@zone_id = zone_id
@api_token = api_token
end
def purge
return unless configured?
uri = URI("https://api.cloudflare.com/client/v4/zones/#{zone_id}/purge_cache")
req = Net::HTTP::Post.new(uri)
req["Authorization"] = "Bearer #{api_token}"
req["Content-Type"] = "application/json"
req.body = '{"purge_everything":true}'
Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }
end
private
def configured?
zone_id && api_token
end
end