diff --git a/lib/cloudflare/certificates.rb b/lib/cloudflare/certificates.rb new file mode 100644 index 0000000..228c24a --- /dev/null +++ b/lib/cloudflare/certificates.rb @@ -0,0 +1,25 @@ +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) + attrs = + {csr: csr_pem, request_type: request_type, hostnames: hostnames, requested_validity: requested_validity} + represent_message(self.post(attrs)) + end + end +end diff --git a/lib/cloudflare/connection.rb b/lib/cloudflare/connection.rb index 20eb721..b3e42f8 100644 --- a/lib/cloudflare/connection.rb +++ b/lib/cloudflare/connection.rb @@ -12,9 +12,11 @@ require "async/rest/resource" +require_relative "i_ps" require_relative "zones" require_relative "accounts" require_relative "user" +require_relative "certificates" module Cloudflare class Connection < Async::REST::Resource @@ -36,6 +38,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/")) @@ -48,5 +54,9 @@ def accounts def user User.new(self.with(path: "user")) end + + def certificates + with(Certificates, path: 'certificates') + end end end diff --git a/lib/cloudflare/i_ps.rb b/lib/cloudflare/i_ps.rb new file mode 100644 index 0000000..0de35e8 --- /dev/null +++ b/lib/cloudflare/i_ps.rb @@ -0,0 +1,13 @@ +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