/*
 * Copyright (c) Microsoft Corporation. All rights reserved.
 * Licensed under the MIT License. See License.txt in the project root for
 * license information.
 *
 * Code generated by Microsoft (R) AutoRest Code Generator.
 * Changes may cause incorrect behavior and will be lost if the code is
 * regenerated.
 */

'use strict';

/**
 * Https settings for a domain
 *
 */
class CustomHttpsConfiguration {
  /**
   * Create a CustomHttpsConfiguration.
   * @member {string} [certificateSource] Defines the source of the SSL
   * certificate. Possible values include: 'AzureKeyVault', 'FrontDoor'
   * @member {string} [protocolType] Defines the TLS extension protocol that is
   * used for secure delivery. Possible values include: 'ServerNameIndication'
   * @member {object} [vault] The Key Vault containing the SSL certificate
   * @member {string} [vault.id] Resource ID.
   * @member {string} [secretName] The name of the Key Vault secret
   * representing the full certificate PFX
   * @member {string} [secretVersion] The version of the Key Vault secret
   * representing the full certificate PFX
   * @member {string} [certificateType] Defines the type of the certificate
   * used for secure connections to a frontendEndpoint. Possible values
   * include: 'Dedicated'
   */
  constructor() {
  }

  /**
   * Defines the metadata of CustomHttpsConfiguration
   *
   * @returns {object} metadata of CustomHttpsConfiguration
   *
   */
  mapper() {
    return {
      required: false,
      serializedName: 'CustomHttpsConfiguration',
      type: {
        name: 'Composite',
        className: 'CustomHttpsConfiguration',
        modelProperties: {
          certificateSource: {
            required: false,
            serializedName: 'certificateSource',
            type: {
              name: 'String'
            }
          },
          protocolType: {
            required: false,
            serializedName: 'protocolType',
            type: {
              name: 'String'
            }
          },
          vault: {
            required: false,
            serializedName: 'keyVaultCertificateSourceParameters.vault',
            type: {
              name: 'Composite',
              className: 'KeyVaultCertificateSourceParametersVault'
            }
          },
          secretName: {
            required: false,
            serializedName: 'keyVaultCertificateSourceParameters.secretName',
            type: {
              name: 'String'
            }
          },
          secretVersion: {
            required: false,
            serializedName: 'keyVaultCertificateSourceParameters.secretVersion',
            type: {
              name: 'String'
            }
          },
          certificateType: {
            required: false,
            serializedName: 'frontDoorCertificateSourceParameters.certificateType',
            type: {
              name: 'String'
            }
          }
        }
      }
    };
  }
}

module.exports = CustomHttpsConfiguration;
