Class: Conversant::V3::Services::CDN::Certificate

Inherits:
Object
  • Object
show all
Defined in:
lib/conversant/v3/services/cdn/certificate.rb

Overview

SSL/TLS certificate management service for CDN domains

Provides comprehensive certificate management functionality including:

  • Certificate listing and filtering
  • Auto-certificate information retrieval
  • Automatic certificate deployment
  • Let's Encrypt integration support

Examples:

Basic certificate operations

certificates = cdn.certificate.all
cert_info = cdn.certificate.auto_certificate_info(cert_id, domain_name)

# Deploy auto certificate
success = cdn.certificate.deploy_auto_certificate(cert_id, domain_name, {
  enable: true,
  domains: ["example.com", "www.example.com"]
})

Since:

  • 1.0.1

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(parent) ⇒ Certificate

Initialize certificate service

Since:

  • 1.0.1



33
34
35
# File 'lib/conversant/v3/services/cdn/certificate.rb', line 33

def initialize(parent)
  @parent = parent
end

Instance Attribute Details

#parentCDN (readonly)

Returns the parent CDN service instance.

Since:

  • 1.0.1



28
29
30
# File 'lib/conversant/v3/services/cdn/certificate.rb', line 28

def parent
  @parent
end

Instance Method Details

#all(params = {}) ⇒ Array<Hash>, Array

Get all SSL certificates for the customer

Retrieves a comprehensive list of SSL certificates associated with the customer account. Supports filtering and pagination through query parameters.

Examples:

Get all certificates

certificates = cdn.certificate.all
certificates.each do |cert|
  puts "Certificate: #{cert['name']} (ID: #{cert['id']})"
  puts "  Status: #{cert['status']}"
  puts "  Expires: #{cert['expiry_date']}"
  puts "  Domains: #{cert['domains']&.join(', ')}"
end

Get certificates with pagination

certificates = cdn.certificate.all({
  pageSize: 50,
  pageNumber: 0,
  status: "active"
})

Options Hash (params):

  • :pageSize (Integer)

    number of results per page

  • :pageNumber (Integer)

    page number for pagination (0-based)

  • :status (String)

    filter by certificate status (active, expired, pending)

  • :domain (String)

    filter by domain name

Since:

  • 1.0.1



68
69
70
71
72
73
74
75
76
# File 'lib/conversant/v3/services/cdn/certificate.rb', line 68

def all(params = {})
  response = @parent.send(:call, 'GET', "/list-certificate?#{params.to_query}")
  return [] if response.nil?

  JSON.parse(response)&.[]('list') || []
rescue StandardError => e
  logger.error "#{@parent.send(:identifier)}.METHOD:#{__method__}.EXCEPTION:#{e.message}"
  []
end

#auto_certificate_info(certificate_id, name) ⇒ Hash?

Get auto-certificate information for a specific domain

Retrieves detailed information about an auto-certificate (Let's Encrypt) for a specific certificate ID and domain name. This includes certificate status, validation details, and deployment configuration.

Examples:

Get auto-certificate info

cert_info = cdn.certificate.auto_certificate_info(12345, "example.com")
if cert_info
  puts "Certificate Status: #{cert_info['status']}"
  puts "Validation Method: #{cert_info['validation_method']}"
  puts "Domains: #{cert_info['domains']&.join(', ')}"
  puts "Auto-renewal: #{cert_info['auto_renewal'] ? 'Enabled' : 'Disabled'}"
else
  puts "Certificate not found or error occurred"
end

Check certificate validation status

cert_info = cdn.certificate.auto_certificate_info(cert_id, domain)
if cert_info && cert_info['validation_status'] == 'valid'
  puts "Certificate is valid and ready for deployment"
end

Since:

  • 1.0.1



108
109
110
111
112
113
114
115
116
# File 'lib/conversant/v3/services/cdn/certificate.rb', line 108

def auto_certificate_info(certificate_id, name)
  response = @parent.send(:call, 'GET', "/api/auto-certificate/#{certificate_id}/#{name}")
  return nil if response.nil?

  JSON.parse(response)
rescue StandardError => e
  logger.error "#{@parent.send(:identifier)}.METHOD:#{__method__}.EXCEPTION:#{e.message}"
  nil
end

#deploy_auto_certificate(certificate_id, name, payload) ⇒ Boolean

Deploy auto-certificate for a domain

Deploys or updates an auto-certificate (Let's Encrypt) configuration for the specified certificate ID and domain. This enables automatic SSL certificate provisioning and renewal.

Examples:

Deploy auto-certificate for single domain

success = cdn.certificate.deploy_auto_certificate(12345, "example.com", {
  enable: true,
  domains: ["example.com"],
  validation_method: "http",
  auto_renewal: true
})

if success
  puts "Auto-certificate deployed successfully"
else
  puts "Failed to deploy auto-certificate"
end

Deploy auto-certificate for multiple domains

success = cdn.certificate.deploy_auto_certificate(cert_id, "example.com", {
  enable: true,
  domains: ["example.com", "www.example.com", "api.example.com"],
  validation_method: "dns",
  auto_renewal: true,
  dns_settings: {
    provider: "cloudflare",
    api_token: "your_api_token"
  }
})

Options Hash (payload):

  • :enable (Boolean)

    enable auto-certificate for this domain

  • :domains (Array<String>)

    list of domains to include in the certificate

  • :validation_method (String)

    validation method (dns, http, etc.)

  • :auto_renewal (Boolean)

    enable automatic certificate renewal

  • :dns_settings (Hash)

    DNS validation settings (if using DNS validation)

Since:

  • 1.0.1



161
162
163
164
165
166
167
168
169
# File 'lib/conversant/v3/services/cdn/certificate.rb', line 161

def deploy_auto_certificate(certificate_id, name, payload)
  response = @parent.send(:call, 'POST', "/api/auto-certificate/#{certificate_id}/#{name}", payload)
  return false if response.nil?

  JSON.parse(response)&.[]('status') == 'ok'
rescue StandardError => e
  logger.error "#{@parent.send(:identifier)}.METHOD:#{__method__}.EXCEPTION:#{e.message}"
  false
end