text: # coding=utf-8
  # --------------------------------------------------------------------------
  # 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.
  # --------------------------------------------------------------------------
  
  from msrest.pipeline import ClientRawResponse
  from msrestazure.azure_exceptions import CloudError
  from msrest.polling import LROPoller, NoPolling
  from msrestazure.polling.arm_polling import ARMPolling
  from .. import models
  import uuid
  
  
  class CdnManagementClientOperationsMixin(object):
  
      def check_name_availability(
              self, name, custom_headers=None, raw=False, **operation_config):
          """Check the availability of a resource name. This is needed for resources
          where name is globally unique, such as a CDN endpoint.
  
          :param name: The resource name to validate.
          :type name: str
          :param dict custom_headers: headers that will be added to the request
          :param bool raw: returns the direct response alongside the
           deserialized response
          :param operation_config: :ref:`Operation configuration
           overrides<msrest:optionsforoperations>`.
          :return: CheckNameAvailabilityOutput or ClientRawResponse if raw=true
          :rtype: ~azure.mgmt.cdn.models.CheckNameAvailabilityOutput or
           ~msrest.pipeline.ClientRawResponse
          :raises:
           :class:`ErrorResponseException<azure.mgmt.cdn.models.ErrorResponseException>`
          """
          check_name_availability_input = models.CheckNameAvailabilityInput(name=name)
  
          # Construct URL
          url = self.check_name_availability.metadata['url']
  
          # Construct parameters
          query_parameters = {}
          query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str')
  
          # Construct headers
          header_parameters = {}
          header_parameters['Accept'] = 'application/json'
          header_parameters['Content-Type'] = 'application/json; charset=utf-8'
          if self.config.generate_client_request_id:
              header_parameters['x-ms-client-request-id'] = str(uuid.uuid1())
          if custom_headers:
              header_parameters.update(custom_headers)
          if self.config.accept_language is not None:
              header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str')
  
          # Construct body
          body_content = self._serialize.body(check_name_availability_input, 'CheckNameAvailabilityInput')
  
          # Construct and send request
          request = self._client.post(url, query_parameters, header_parameters, body_content)
          response = self._client.send(request, stream=False, **operation_config)
  
          if response.status_code not in [200]:
              raise models.ErrorResponseException(self._deserialize, response)
  
          deserialized = None
          if response.status_code == 200:
              deserialized = self._deserialize('CheckNameAvailabilityOutput', response)
  
          if raw:
              client_raw_response = ClientRawResponse(deserialized, response)
              return client_raw_response
  
          return deserialized
      check_name_availability.metadata = {'url': '/providers/Microsoft.Cdn/checkNameAvailability'}
  
      def check_name_availability_with_subscription(
              self, name, custom_headers=None, raw=False, **operation_config):
          """Check the availability of a resource name. This is needed for resources
          where name is globally unique, such as a CDN endpoint.
  
          :param name: The resource name to validate.
          :type name: str
          :param dict custom_headers: headers that will be added to the request
          :param bool raw: returns the direct response alongside the
           deserialized response
          :param operation_config: :ref:`Operation configuration
           overrides<msrest:optionsforoperations>`.
          :return: CheckNameAvailabilityOutput or ClientRawResponse if raw=true
          :rtype: ~azure.mgmt.cdn.models.CheckNameAvailabilityOutput or
           ~msrest.pipeline.ClientRawResponse
          :raises:
           :class:`ErrorResponseException<azure.mgmt.cdn.models.ErrorResponseException>`
          """
          check_name_availability_input = models.CheckNameAvailabilityInput(name=name)
  
          # Construct URL
          url = self.check_name_availability_with_subscription.metadata['url']
          path_format_arguments = {
              'subscriptionId': self._serialize.url("self.config.subscription_id", self.config.subscription_id, 'str')
          }
          url = self._client.format_url(url, **path_format_arguments)
  
          # Construct parameters
          query_parameters = {}
          query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str')
  
          # Construct headers
          header_parameters = {}
          header_parameters['Accept'] = 'application/json'
          header_parameters['Content-Type'] = 'application/json; charset=utf-8'
          if self.config.generate_client_request_id:
              header_parameters['x-ms-client-request-id'] = str(uuid.uuid1())
          if custom_headers:
              header_parameters.update(custom_headers)
          if self.config.accept_language is not None:
              header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str')
  
          # Construct body
          body_content = self._serialize.body(check_name_availability_input, 'CheckNameAvailabilityInput')
  
          # Construct and send request
          request = self._client.post(url, query_parameters, header_parameters, body_content)
          response = self._client.send(request, stream=False, **operation_config)
  
          if response.status_code not in [200]:
              raise models.ErrorResponseException(self._deserialize, response)
  
          deserialized = None
          if response.status_code == 200:
              deserialized = self._deserialize('CheckNameAvailabilityOutput', response)
  
          if raw:
              client_raw_response = ClientRawResponse(deserialized, response)
              return client_raw_response
  
          return deserialized
      check_name_availability_with_subscription.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.Cdn/checkNameAvailability'}
  
      def validate_probe(
              self, probe_url, custom_headers=None, raw=False, **operation_config):
          """Check if the probe path is a valid path and the file can be accessed.
          Probe path is the path to a file hosted on the origin server to help
          accelerate the delivery of dynamic content via the CDN endpoint. This
          path is relative to the origin path specified in the endpoint
          configuration.
  
          :param probe_url: The probe URL to validate.
          :type probe_url: str
          :param dict custom_headers: headers that will be added to the request
          :param bool raw: returns the direct response alongside the
           deserialized response
          :param operation_config: :ref:`Operation configuration
           overrides<msrest:optionsforoperations>`.
          :return: ValidateProbeOutput or ClientRawResponse if raw=true
          :rtype: ~azure.mgmt.cdn.models.ValidateProbeOutput or
           ~msrest.pipeline.ClientRawResponse
          :raises:
           :class:`ErrorResponseException<azure.mgmt.cdn.models.ErrorResponseException>`
          """
          validate_probe_input = models.ValidateProbeInput(probe_url=probe_url)
  
          # Construct URL
          url = self.validate_probe.metadata['url']
          path_format_arguments = {
              'subscriptionId': self._serialize.url("self.config.subscription_id", self.config.subscription_id, 'str')
          }
          url = self._client.format_url(url, **path_format_arguments)
  
          # Construct parameters
          query_parameters = {}
          query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str')
  
          # Construct headers
          header_parameters = {}
          header_parameters['Accept'] = 'application/json'
          header_parameters['Content-Type'] = 'application/json; charset=utf-8'
          if self.config.generate_client_request_id:
              header_parameters['x-ms-client-request-id'] = str(uuid.uuid1())
          if custom_headers:
              header_parameters.update(custom_headers)
          if self.config.accept_language is not None:
              header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str')
  
          # Construct body
          body_content = self._serialize.body(validate_probe_input, 'ValidateProbeInput')
  
          # Construct and send request
          request = self._client.post(url, query_parameters, header_parameters, body_content)
          response = self._client.send(request, stream=False, **operation_config)
  
          if response.status_code not in [200]:
              raise models.ErrorResponseException(self._deserialize, response)
  
          deserialized = None
          if response.status_code == 200:
              deserialized = self._deserialize('ValidateProbeOutput', response)
  
          if raw:
              client_raw_response = ClientRawResponse(deserialized, response)
              return client_raw_response
  
          return deserialized
      validate_probe.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.Cdn/validateProbe'}
  