class_docstr: Stores artifacts in a remote artifact storage using HTTP requests
code: def list_artifacts(self, path=None):
      endpoint = "/mlflow-artifacts/artifacts"
      url, tail = self.artifact_uri.split(endpoint, maxsplit=1)
      root = tail.lstrip("/")
      params = {"path": posixpath.join(root, path) if path else root}
      host_creds = _get_default_host_creds(url)
      resp = http_request(host_creds, endpoint, "GET", params=params)
      augmented_raise_for_status(resp)
      file_infos = []
      for f in resp.json().get("files", []):
          validated_path = validate_path_is_safe(f["path"])
          file_info = FileInfo(
              posixpath.join(path, validated_path)
              if path
              else validated_path,
              f["is_dir"],
              int(f["file_size"]) if ("file_size" in f) else None,
          )
          file_infos.append(file_info)
  
      return sorted(file_infos, key=lambda f: f.path)
  
imports: import logging
  import os
  import posixpath
  import requests
  from requests import HTTPError
  from mlflow.entities import FileInfo
  from mlflow.entities.multipart_upload import CreateMultipartUploadResponse, MultipartUploadCredential, MultipartUploadPart
  from mlflow.environment_variables import MLFLOW_ENABLE_PROXY_MULTIPART_UPLOAD, MLFLOW_MULTIPART_UPLOAD_CHUNK_SIZE, MLFLOW_MULTIPART_UPLOAD_MINIMUM_FILE_SIZE
  from mlflow.exceptions import MlflowException, _UnsupportedMultipartUploadException
  from mlflow.store.artifact.artifact_repo import ArtifactRepository, MultipartUploadMixin, verify_artifact_path
  from mlflow.store.artifact.cloud_artifact_repo import _complete_futures, _compute_num_chunks
  from mlflow.tracking._tracking_service.utils import _get_default_host_creds
  from mlflow.utils.file_utils import read_chunk, relative_path_to_artifact_path
  from mlflow.utils.mime_type_utils import _guess_mime_type
  from mlflow.utils.rest_utils import augmented_raise_for_status, http_request
  from mlflow.utils.uri import validate_path_is_safe
label_desc: Use image node_id 4 for calling the HttpArtifactRepository obj's underlying member method code with example usage: obj.list_artifacts(path) and returns: sorted