Class: KamalGitlabReviewApp::Dns::Cloudflare

Inherits:
Object
  • Object
show all
Includes:
Provider
Defined in:
lib/kamal_gitlab_review_app/dns/cloudflare.rb

Constant Summary collapse

API_BASE_URL =
'https://api.cloudflare.com/client/v4'
OPEN_TIMEOUT =
10
READ_TIMEOUT =
30

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.build_a_payload(name:, ip:, ttl:) ⇒ Object



16
17
18
# File 'lib/kamal_gitlab_review_app/dns/cloudflare.rb', line 16

def self.build_a_payload(name:, ip:, ttl:)
  { type: 'A', name:, content: ip, ttl:, proxied: false }
end

Instance Method Details

#delete_record!(name:) ⇒ Object



31
32
33
34
35
36
# File 'lib/kamal_gitlab_review_app/dns/cloudflare.rb', line 31

def delete_record!(name:)
  record = find_record_by_name(name:)
  return nil unless record

  request_json!(:delete, "/zones/#{zone_id}/dns_records/#{record.fetch('id')}")
end

#upsert_a_record!(name:, ip:, ttl: 120) ⇒ Object



20
21
22
23
24
25
26
27
28
29
# File 'lib/kamal_gitlab_review_app/dns/cloudflare.rb', line 20

def upsert_a_record!(name:, ip:, ttl: 120)
  payload = self.class.build_a_payload(name:, ip:, ttl:)
  record = find_record_by_name(name:)

  if record
    request_json!(:put, "/zones/#{zone_id}/dns_records/#{record.fetch('id')}", payload)
  else
    request_json!(:post, "/zones/#{zone_id}/dns_records", payload)
  end
end