text: # coding: utf-8
  
  """
  DocApi.py
  Copyright 2016 SmartBear Software
  
     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at
  
         http://www.apache.org/licenses/LICENSE-2.0
  
     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
  """
  
  from __future__ import absolute_import
  
  import sys
  import os
  
  # python 2 and python 3 compatibility library
  from six import iteritems
  
  from ..configuration import Configuration
  from ..api_client import ApiClient
  
  
  class DocApi(object):
      """
      NOTE: This class is auto generated by the swagger code generator program.
      Do not edit the class manually.
      Ref: https://github.com/swagger-api/swagger-codegen
      """
  
      def __init__(self, api_client=None):
          config = Configuration()
          if api_client:
              self.api_client = api_client
          else:
              if not config.api_client:
                  config.api_client = ApiClient()
              self.api_client = config.api_client
  
      def create_async_doc(self, doc, **kwargs):
          """
  
          Creates a document asynchronously. You must use a callback url or the the returned status id and the status api to find out when it completes. Then use the download api to get the document.
  
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please define a `callback` function
          to be invoked when receiving the response.
          >>> def callback_function(response):
          >>>     pprint(response)
          >>>
          >>> thread = api.create_async_doc(doc, callback=callback_function)
  
          :param callback function: The callback function
              for asynchronous request. (optional)
          :param Doc doc: The document to be created. (required)
          :return: AsyncDoc
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          all_params = ['doc']
          all_params.append('callback')
  
          params = locals()
          for key, val in iteritems(params['kwargs']):
              if key not in all_params:
                  raise TypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method create_async_doc" % key
                  )
              params[key] = val
          del params['kwargs']
  
          # verify the required parameter 'doc' is set
          if ('doc' not in params) or (params['doc'] is None):
              raise ValueError("Missing the required parameter `doc` when calling `create_async_doc`")
  
          resource_path = '/async_docs'.replace('{format}', 'json')
          path_params = {}
  
          query_params = {}
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          if 'doc' in params:
              body_params = params['doc']
  
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.\
              select_header_accept(['application/json', 'application/xml', 'application/pdf', 'application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'])
          if not header_params['Accept']:
              del header_params['Accept']
  
          # HTTP header `Content-Type`
          header_params['Content-Type'] = self.api_client.\
              select_header_content_type([])
  
          # Authentication setting
          auth_settings = ['basicAuth']
  
          response = self.api_client.call_api(resource_path, 'POST',
                                              path_params,
                                              query_params,
                                              header_params,
                                              body=body_params,
                                              post_params=form_params,
                                              files=local_var_files,
                                              response_type='AsyncDoc',
                                              auth_settings=auth_settings,
                                              callback=params.get('callback'))
          return response
  
      def create_doc(self, doc, **kwargs):
          """
  
          Creates a document synchronously.
  
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please define a `callback` function
          to be invoked when receiving the response.
          >>> def callback_function(response):
          >>>     pprint(response)
          >>>
          >>> thread = api.create_doc(doc, callback=callback_function)
  
          :param callback function: The callback function
              for asynchronous request. (optional)
          :param Doc doc: The document to be created. (required)
          :return: str
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          all_params = ['doc']
          all_params.append('callback')
  
          params = locals()
          for key, val in iteritems(params['kwargs']):
              if key not in all_params:
                  raise TypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method create_doc" % key
                  )
              params[key] = val
          del params['kwargs']
  
          # verify the required parameter 'doc' is set
          if ('doc' not in params) or (params['doc'] is None):
              raise ValueError("Missing the required parameter `doc` when calling `create_doc`")
  
          resource_path = '/docs'.replace('{format}', 'json')
          path_params = {}
  
          query_params = {}
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          if 'doc' in params:
              body_params = params['doc']
  
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.\
              select_header_accept(['application/json', 'application/xml', 'application/pdf', 'application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'])
          if not header_params['Accept']:
              del header_params['Accept']
  
          # HTTP header `Content-Type`
          header_params['Content-Type'] = self.api_client.\
              select_header_content_type([])
  
          # Authentication setting
          auth_settings = ['basicAuth']
  
          response = self.api_client.call_api(resource_path, 'POST',
                                              path_params,
                                              query_params,
                                              header_params,
                                              body=body_params,
                                              post_params=form_params,
                                              files=local_var_files,
                                              response_type='str',
                                              auth_settings=auth_settings,
                                              callback=params.get('callback'))
          return response
  
      def get_async_doc(self, id, **kwargs):
          """
  
          Downloads a document.
  
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please define a `callback` function
          to be invoked when receiving the response.
          >>> def callback_function(response):
          >>>     pprint(response)
          >>>
          >>> thread = api.get_async_doc(id, callback=callback_function)
  
          :param callback function: The callback function
              for asynchronous request. (optional)
          :param str id: The download_id returned from status request or a callback. (required)
          :return: str
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          all_params = ['id']
          all_params.append('callback')
  
          params = locals()
          for key, val in iteritems(params['kwargs']):
              if key not in all_params:
                  raise TypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method get_async_doc" % key
                  )
              params[key] = val
          del params['kwargs']
  
          # verify the required parameter 'id' is set
          if ('id' not in params) or (params['id'] is None):
              raise ValueError("Missing the required parameter `id` when calling `get_async_doc`")
  
          resource_path = '/download/{id}'.replace('{format}', 'json')
          path_params = {}
          if 'id' in params:
              path_params['id'] = params['id']
  
          query_params = {}
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
  
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.\
              select_header_accept(['application/json', 'application/xml', 'application/pdf', 'application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'])
          if not header_params['Accept']:
              del header_params['Accept']
  
          # HTTP header `Content-Type`
          header_params['Content-Type'] = self.api_client.\
              select_header_content_type([])
  
          # Authentication setting
          auth_settings = ['basicAuth']
  
          response = self.api_client.call_api(resource_path, 'GET',
                                              path_params,
                                              query_params,
                                              header_params,
                                              body=body_params,
                                              post_params=form_params,
                                              files=local_var_files,
                                              response_type='str',
                                              auth_settings=auth_settings,
                                              callback=params.get('callback'))
          return response
  
      def get_async_doc_status(self, id, **kwargs):
          """
  
          Check on the status of an asynchronously created document.
  
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please define a `callback` function
          to be invoked when receiving the response.
          >>> def callback_function(response):
          >>>     pprint(response)
          >>>
          >>> thread = api.get_async_doc_status(id, callback=callback_function)
  
          :param callback function: The callback function
              for asynchronous request. (optional)
          :param str id: The status_id returned when creating an asynchronous document. (required)
          :return: AsyncDocStatus
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          all_params = ['id']
          all_params.append('callback')
  
          params = locals()
          for key, val in iteritems(params['kwargs']):
              if key not in all_params:
                  raise TypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method get_async_doc_status" % key
                  )
              params[key] = val
          del params['kwargs']
  
          # verify the required parameter 'id' is set
          if ('id' not in params) or (params['id'] is None):
              raise ValueError("Missing the required parameter `id` when calling `get_async_doc_status`")
  
          resource_path = '/status/{id}'.replace('{format}', 'json')
          path_params = {}
          if 'id' in params:
              path_params['id'] = params['id']
  
          query_params = {}
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
  
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.\
              select_header_accept(['application/json', 'application/xml', 'application/pdf', 'application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'])
          if not header_params['Accept']:
              del header_params['Accept']
  
          # HTTP header `Content-Type`
          header_params['Content-Type'] = self.api_client.\
              select_header_content_type([])
  
          # Authentication setting
          auth_settings = ['basicAuth']
  
          response = self.api_client.call_api(resource_path, 'GET',
                                              path_params,
                                              query_params,
                                              header_params,
                                              body=body_params,
                                              post_params=form_params,
                                              files=local_var_files,
                                              response_type='AsyncDocStatus',
                                              auth_settings=auth_settings,
                                              callback=params.get('callback'))
          return response
  