class GlobeSSL::SSLCertificate

Public Instance Methods

fetch() click to toggle source
# File lib/globessl/ssl_certificate.rb, line 22
def fetch
  @errors.clear
  
  unless @id
    @errors << "cerificate id is required"
    return false
  end
  
  response = Client.get('/certificates/get', { "id" => @id })
  
  case response.code
  when '200'  
    json = response.body
    hash = JSON.parse(json)
    
    @order_id           = hash["order_id"]
    @partner_order_id   = hash["partner_order_id"]
    @status             = hash["status"]
    @status_description = hash["status_description"]
    @dcv_method         = hash["dcv_method"]
    @dcv_email          = hash["dcv_email"]
    @domain             = hash["domain"]
    @domains            = hash["domains"]
    @total_domains      = hash["total_domains"]
    @period             = hash["period"]
    @valid_from         = hash["valid_from"]
    @valid_till         = hash["valid_till"]
    @csr_code           = hash["csr_code"]
    @crt_code           = hash["crt_code"]
    @ca_code            = hash["ca_code"]

    @product = Product.new(:id => hash["product_id"])
    @product.fetch
    
    return true
  when '400', '401', '403'
    set_errors(response)
    return false
  else
    return false
  end      
end
reissue() click to toggle source
# File lib/globessl/ssl_certificate.rb, line 65
def reissue
  @errors.clear
  return false unless valid?
  
  params = { 
    "id"             => @id,
    "csr"            => @csr_code,
    "dcv_method"     => @dcv_method,
    "webserver_type" => @webserver_type
  }
  
  if @dcv_method == "email" && @product.validation == "dv"
    email_params = {
      "approver_email" => @approver_email
    }
    params.merge!(email_params)
  
    if @product.multi_domain
      multi_domain_params = {
        "dns_names"       => @domains,
        "approver_emails" => @approver_emails
      }
      params.merge!(multi_domain_params)
    end
  end
  
  request = Client.post('/certificates/reissue', params)
  
  case response.code
  when '200'  
    return true
  when '400', '401', '403'
    set_errors(response)
    return false
  else
    return false
  end      
end
set_errors(response) click to toggle source
# File lib/globessl/ssl_certificate.rb, line 104
def set_errors(response)
  json = response.body
  hash = JSON.parse(json)
  @errors << hash["message"]
end
valid?() click to toggle source
# File lib/globessl/ssl_certificate.rb, line 110
def valid?
  validate
end
validate() click to toggle source
# File lib/globessl/ssl_certificate.rb, line 114
def validate
  unless @dcv_method
    @errors << "dcv_method is required"
  else
    unless DomainControlValidation::METHODS.include?(@dcv_method)
      @errors << "dcv_method must be one of 'email', 'http' or 'https'"
    end
  end
  
  if @product.multi_domain
    unless @dns_names.size > (@product.min_domains - 1)
      @errors << "dns_names are required"
    end
  end
  
  if @dcv_method == "email"
    unless @approver_email
      @errors << "approver_email is required"
    end
    
    if @product.multi_domain
      unless @approver_emails.size == @dns_names.size
        @errors << "approver_emails are required"
      end
    end
  end
  
  unless @product.validation == "dv"  # if not domain validation
    unless @admin_org
      @errors << "admin_org is required"
    end
    
    unless @admin_address
      @errors << "admin_address is required"
    end
    
    unless @admin_city
      @errors << "admin_city is required"
    end

    unless @admin_country
      @errors << "admin_country is required"
    else
      unless COUNTRY_CODES.has_key?(@admin_country)
        @errors << "admin_country must be one in COUNTRY_CODES"
      end
    end

    unless @org_name
      @errors << "org_name is required"
    end
    
    unless @org_division
      @errors << "org_division is required"
    end

    unless @org_address
      @errors << "org_address is required"
    end

    unless @org_city
      @errors << "org_city is required"
    end

    unless @org_state
      @errors << "org_state is required"
    end
    
    unless @org_country
      @errors << "org_country is required"
    else
      unless COUNTRY_CODES.has_key?(@org_country)
        @errors << "org_country must be one in COUNTRY_CODES"
      end
    end
    
    unless @org_postalcode
      @errors << "org_postalcode is required"
    end
    
    unless @org_phone
      @errors << "org_phone is required"
    end
  end
  
  unless @admin_firstname
    @errors << "admin_firstname is required"
  end

  unless @admin_lastname
    @errors << "admin_lastname is required"
  end

  unless @admin_email
    @errors << "admin_email is required"
  end
  
  unless @admin_jobtitle
    @errors << "admin_jobtitle is required"
  end

  unless @admin_phone
    @errors << "admin_phone is required"
  end

  unless @admin_phone
    @errors << "admin_phone is required"
  end
  
  unless @csr
    @errors << "certificate signing request (csr) is required"
  end
  
  unless @period
    @errors << "period is required"
  else
    unless EXPIRY_PERIODS.include?(@period)
      @errors << "period must be 1, 2 or 3 years or 0 if product is free"
    end
  end
  
  unless @webserver_type
    @errors << "webserver_type is required"
  end
  
  unless @product
    @errors << "product is required"
  end

  if @errors.any?
    return false
  else
    return true
  end
end