/*
 * 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';

/**
 * Secure LDAP Settings
 *
 */
class LdapsSettings {
  /**
   * Create a LdapsSettings.
   * @member {string} [ldaps] A flag to determine whether or not Secure LDAP is
   * enabled or disabled. Possible values include: 'Enabled', 'Disabled'
   * @member {string} [pfxCertificate] The certificate required to configure
   * Secure LDAP. The parameter passed here should be a base64encoded
   * representation of the certificate pfx file.
   * @member {string} [pfxCertificatePassword] The password to decrypt the
   * provided Secure LDAP certificate pfx file.
   * @member {string} [publicCertificate] Public certificate used to configure
   * secure ldap.
   * @member {string} [certificateThumbprint] Thumbprint of configure ldaps
   * certificate.
   * @member {date} [certificateNotAfter] NotAfter DateTime of configure ldaps
   * certificate.
   * @member {string} [externalAccess] A flag to determine whether or not
   * Secure LDAP access over the internet is enabled or disabled. Possible
   * values include: 'Enabled', 'Disabled'
   * @member {string} [externalAccessIpAddress] External access ip address.
   */
  constructor() {
  }

  /**
   * Defines the metadata of LdapsSettings
   *
   * @returns {object} metadata of LdapsSettings
   *
   */
  mapper() {
    return {
      required: false,
      serializedName: 'LdapsSettings',
      type: {
        name: 'Composite',
        className: 'LdapsSettings',
        modelProperties: {
          ldaps: {
            required: false,
            serializedName: 'ldaps',
            type: {
              name: 'String'
            }
          },
          pfxCertificate: {
            required: false,
            serializedName: 'pfxCertificate',
            type: {
              name: 'String'
            }
          },
          pfxCertificatePassword: {
            required: false,
            serializedName: 'pfxCertificatePassword',
            type: {
              name: 'String'
            }
          },
          publicCertificate: {
            required: false,
            readOnly: true,
            serializedName: 'publicCertificate',
            type: {
              name: 'String'
            }
          },
          certificateThumbprint: {
            required: false,
            readOnly: true,
            serializedName: 'certificateThumbprint',
            type: {
              name: 'String'
            }
          },
          certificateNotAfter: {
            required: false,
            readOnly: true,
            serializedName: 'certificateNotAfter',
            type: {
              name: 'DateTime'
            }
          },
          externalAccess: {
            required: false,
            serializedName: 'externalAccess',
            type: {
              name: 'String'
            }
          },
          externalAccessIpAddress: {
            required: false,
            readOnly: true,
            serializedName: 'externalAccessIpAddress',
            type: {
              name: 'String'
            }
          }
        }
      }
    };
  }
}

module.exports = LdapsSettings;
