From c274de4fba387a75db3be8a3c1a16b57e0f0f978 Mon Sep 17 00:00:00 2001 From: Samuel Williams Date: Fri, 13 Feb 2026 00:44:57 +1300 Subject: [PATCH] Origin certificates setup and back-end CIDRs list. --- lib/cloudflare/certificates.rb | 29 +++++++++++++++++++++++++++++ lib/cloudflare/connection.rb | 10 ++++++++++ lib/cloudflare/ips.rb | 15 +++++++++++++++ 3 files changed, 54 insertions(+) create mode 100644 lib/cloudflare/certificates.rb create mode 100644 lib/cloudflare/ips.rb diff --git a/lib/cloudflare/certificates.rb b/lib/cloudflare/certificates.rb new file mode 100644 index 0000000..100cee3 --- /dev/null +++ b/lib/cloudflare/certificates.rb @@ -0,0 +1,29 @@ +# frozen_string_literal: true + +require_relative "representation" +require_relative "paginate" + +module Cloudflare + class Certificate < Representation + def certificate + result[:certificate] + end + end + + class Certificates < Representation + include Paginate + + def representation + Certificate + end + + def create(csr_pem, hostnames, request_type = "origin-rsa", requested_validity = 5475) + represent_message(self.post({ + csr: csr_pem, + request_type: request_type, + hostnames: hostnames, + requested_validity: requested_validity + })) + end + end +end diff --git a/lib/cloudflare/connection.rb b/lib/cloudflare/connection.rb index 20eb721..11715b1 100644 --- a/lib/cloudflare/connection.rb +++ b/lib/cloudflare/connection.rb @@ -12,9 +12,11 @@ require "async/rest/resource" +require_relative "ips" require_relative "zones" require_relative "accounts" require_relative "user" +require_relative "certificates" module Cloudflare class Connection < Async::REST::Resource @@ -37,6 +39,10 @@ def authenticated(token: nil, key: nil, email: nil) self.with(headers: headers) end + def cidrs(ipv: nil) + IPs.new(self.with(path: "ips")).cidrs(ipv: ipv) + end + def zones Zones.new(self.with(path: "zones/")) end @@ -48,5 +54,9 @@ def accounts def user User.new(self.with(path: "user")) end + + def certificates + Certificates.new(self.with(path: "certificates")) + end end end diff --git a/lib/cloudflare/ips.rb b/lib/cloudflare/ips.rb new file mode 100644 index 0000000..da929d7 --- /dev/null +++ b/lib/cloudflare/ips.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +require_relative "representation" + +module Cloudflare + class IPs < Representation + def cidrs(ipv: nil) + if ipv + result[:"ipv#{ipv}_cidrs"] + else + result[:ipv4_cidrs].to_a + result[:ipv6_cidrs].to_a + end + end + end +end