content: package io.github.admin4j.http.core;
  
  /**
   * @author andanyang
   * @since 2022/5/10 16:22
   */
  
  import java.util.List;
  import java.util.Map;
  
  /**
   * Callback for asynchronous API call.
   *
   * @param <T> The return type
   */
  public interface HttpCallback<T> {
      /**
       * This is called when the API call fails.
       *
       * @param e               The exception causing the failure
       * @param statusCode      Status code of the response if available, otherwise it would be 0
       * @param responseHeaders Headers of the response if available, otherwise it would be null
       */
      void onFailure(Exception e, int statusCode, Map<String, List<String>> responseHeaders);
  
      /**
       * This is called when the API call succeeded.
       *
       * @param result          The result deserialized from response
       * @param statusCode      Status code of the response
       * @param responseHeaders Headers of the response
       */
      void onSuccess(T result, int statusCode, Map<String, List<String>> responseHeaders);
  
      ///**
      // * This is called when the API upload processing.
      // *
      // * @param bytesWritten  bytes Written
      // * @param contentLength content length of request body
      // * @param done          write end
      // */
      //void onUploadProgress(long bytesWritten, long contentLength, boolean done);
      //
      ///**
      // * This is called when the API downlond processing.
      // *
      // * @param bytesRead     bytes Read
      // * @param contentLength content lenngth of the response
      // * @param done          Read end
      // */
      //void onDownloadProgress(long bytesRead, long contentLength, boolean done);
  }