docs: def attach_file(self, filename, page_id=None, title=None, space=None, comment=None):
          """
          Attach (upload) a file to a page, if it exists it will update the
          automatically version the new file and keep the old one.
          :param title: The page name
          :type  title: ``str``
          :param space: The space name
          :type  space: ``str``
          :param page_id: The page id to which we would like to upload the file
          :type  page_id: ``str``
          :param filename: The file to upload
          :type  filename: ``str``
          :param comment: A comment describing this upload/file
          :type  comment: ``str``
          """
          page_id = self.get_page_id(space=space, title=title) if page_id is None else page_id
          type = 'attachment'
          if page_id is not None:
              extension = os.path.splitext(filename)[-1]
              content_type = self.content_types.get(extension, "application/binary")
              comment = comment if comment else "Uploaded {filename}.".format(filename=filename)
              data = {
                  'type': type,
                  "fileName": filename,
                  "contentType": content_type,
                  "comment": comment,
                  "minorEdit": "true"}
              headers = {
                  'X-Atlassian-Token': 'nocheck',
                  'Accept': 'application/json'}
              path = 'rest/api/content/{page_id}/child/attachment'.format(page_id=page_id)
              # get base name of the file to get the attachment from confluence.
              file_base_name = os.path.basename(filename)
              # Check if there is already a file with the same name
              attachments = self.get(path=path, headers=headers, params={'filename': file_base_name})
              if attachments['size']:
                  path = path + '/' + attachments['results'][0]['id'] + '/data'
              with open(filename, 'rb') as infile:
                  return self.post(path=path, data=data, headers=headers,
                                   files={'file': (filename, infile, content_type)})
          else:
              log.warning("No 'page_id' found, not uploading attachments")
              return None