docs: def get_path(self, path=''):
          """
          Validate incoming path, if path is empty, build it from resource attributes,
          If path is invalid - raise exception
  
          :param path: path to remote file storage
          :return: valid path or :raise Exception:
          """
  
          if not path:
              host = self.resource_config.backup_location
              if ':' not in host:
                  scheme = self.resource_config.backup_type
                  if not scheme or scheme.lower() == self.DEFAULT_FILE_SYSTEM.lower():
                      scheme = self.file_system
                  scheme = re.sub('(:|/+).*$', '', scheme, re.DOTALL)
                  host = re.sub('^/+', '', host)
                  host = '{}://{}'.format(scheme, host)
              path = host
  
          url = UrlParser.parse_url(path)
  
          if url[UrlParser.SCHEME].lower() in AUTHORIZATION_REQUIRED_STORAGE:
              if UrlParser.USERNAME not in url or not url[UrlParser.USERNAME]:
                  url[UrlParser.USERNAME] = self.resource_config.backup_user
              if UrlParser.PASSWORD not in url or not url[UrlParser.PASSWORD]:
                  url[UrlParser.PASSWORD] = self._api.DecryptPassword(self.resource_config.backup_password).Value
          try:
              result = UrlParser.build_url(url)
          except Exception as e:
              self._logger.error('Failed to build url: {}'.format(e))
              raise Exception('ConfigurationOperations', 'Failed to build path url to remote host')
          return result