// Path: retrofitclient/src/main/java/com/jady/retrofitclient/listener/DownloadFileListener.java
// public abstract class DownloadFileListener<T> {
//     /**
//      * 单个下载成功后回调
//      *
//      * @param t
//      */
//     public abstract void onNext(T t);
// 
//     public void onStart(){};
// 
//     /**
//      * 批量下载完成
//      */
//     public abstract void onComplete();
// 
//     public abstract void updateProgress(float contentRead, long contentLength, boolean completed);
// 
//     public abstract void onError(Throwable e);
// 
//     public void onPause() {
// 
//     }
// 
//     public void onStop() {
// 
//     }
// }
// 
// Path: retrofitclient/src/main/java/com/jady/retrofitclient/request/CommonRequest.java
// public interface CommonRequest {
// 
//     @GET("{path}")
//     Observable<ResponseBody> doGet(@Path(value = "path", encoded = true) String url, @QueryMap Map<String, Object> map);
// 
//     @GET("{path}")
//     Observable<ResponseBody> doGet(@Path(value = "path", encoded = true) String url, @Body RequestBody map);
// 
//     @GET("{path}")
//     Observable<ResponseBody> doGet(@Path(value = "path", encoded = true) String url);
// 
//     /**
//      * 参数含有@Field和@FieldMap的请求必须加@FormUrlEncoded
//      * Post请求最好用@Field,@Query也行，只是参数会暴露在Url中
//      *
//      * @param url
//      * @param map
//      * @return
//      */
//     @FormUrlEncoded
//     @POST("{path}")
//     Observable<ResponseBody> doPost(@Path(value = "path", encoded = true) String url, @FieldMap Map<String, Object> map);
// 
//     @POST("{path}")
//     Observable<ResponseBody> doPost(@Path(value = "path", encoded = true) String url, @Body RequestBody body);
// 
//     @FormUrlEncoded
//     @PUT("{path}")
//     Observable<ResponseBody> doPut(@Path(value = "path", encoded = true) String url, @FieldMap Map<String, Object> map);
// 
//     @PUT("{path}")
//     Observable<ResponseBody> doPut(@Path(value = "path", encoded = true) String url, @Body RequestBody body);
// 
//     @DELETE("{path}")
//     Observable<ResponseBody> doDelete(@Path(value = "path", encoded = true) String url);
// 
//     @DELETE("{path}")
//     Observable<ResponseBody> doDelete(@Path(value = "path", encoded = true) String url, @QueryMap Map<String, Object> maps);
// 
//     @HTTP(method = "DELETE", path = "{path}", hasBody = true)
//     Observable<ResponseBody> doDelete(@Path(value = "path", encoded = true) String url, @Body RequestBody body);
// 
//     /**
//      * 完整路径
//      *
//      * @param url
//      * @return
//      */
//     @GET
//     Observable<ResponseBody> doGetFullPath(@Url String url);
// 
//     /**
//      * 完整路径
//      *
//      * @param url
//      * @param map
//      * @return
//      */
//     @GET
//     Observable<ResponseBody> doGetFullPath(@Url String url, @QueryMap Map<String, Object> map);
// 
//     /**
//      * 参数含有@Field和@FieldMap的请求必须加@FormUrlEncoded
//      * Post请求最好用@Field,@Query也行，只是参数会暴露在Url中
//      *
//      * @param url 完整路径
//      * @param map
//      * @return
//      */
//     @FormUrlEncoded
//     @POST
//     Observable<ResponseBody> doPostFullPath(@Url String url, @FieldMap Map<String, Object> map);
// 
//     @Multipart
//     @POST("{path}")
//     Observable<ResponseBody> uploadFile(@Path(value = "path", encoded = true) String url,
//                                         @Part("description") RequestBody description, @Part MultipartBody.Part file);
// 
//     @Multipart
//     @POST
//     Observable<ResponseBody> uploadFileFullPath(@Url String url,
//                                                 @Part("description") RequestBody description, @Part MultipartBody.Part file);
// 
//     @Multipart
//     @POST("{path}")
//     Observable<ResponseBody> uploadFiles(
//             @Path(value = "path", encoded = true) String url,
//             @PartMap Map<String, RequestBody> maps);
// 
//     @Multipart
//     @POST
//     Observable<ResponseBody> uploadFilesFullPath(
//             @Url String url,
//             @PartMap() Map<String, RequestBody> maps);
// 
//     //支持大文件
//     @Streaming
//     @GET
//     Observable<ResponseBody> download(@Url String fileUrl);
// }


import com.jady.retrofitclient.listener.DownloadFileListener;
import com.jady.retrofitclient.request.CommonRequest;
    }

    public void setContentLength(long contentLength) {
        this.contentLength = contentLength;
    }

    public long getReadLength() {
        return readLength;
    }

    public void setReadLength(long readLength) {
        this.readLength = readLength;
    }

    public int getState() {
        return state;
    }

    public void setState(int state) {
        this.state = state;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

// Path: retrofitclient/src/main/java/com/jady/retrofitclient/listener/DownloadFileListener.java
// public abstract class DownloadFileListener<T> {
//     /**
//      * 单个下载成功后回调
//      *
//      * @param t
//      */
//     public abstract void onNext(T t);
// 
//     public void onStart(){};
// 
//     /**
//      * 批量下载完成
//      */
//     public abstract void onComplete();
// 
//     public abstract void updateProgress(float contentRead, long contentLength, boolean completed);
// 
//     public abstract void onError(Throwable e);
// 
//     public void onPause() {
// 
//     }
// 
//     public void onStop() {
// 
//     }
// }
// 
// Path: retrofitclient/src/main/java/com/jady/retrofitclient/request/CommonRequest.java
// public interface CommonRequest {
// 
//     @GET("{path}")
//     Observable<ResponseBody> doGet(@Path(value = "path", encoded = true) String url, @QueryMap Map<String, Object> map);
// 
//     @GET("{path}")
//     Observable<ResponseBody> doGet(@Path(value = "path", encoded = true) String url, @Body RequestBody map);
// 
//     @GET("{path}")
//     Observable<ResponseBody> doGet(@Path(value = "path", encoded = true) String url);
// 
//     /**
//      * 参数含有@Field和@FieldMap的请求必须加@FormUrlEncoded
//      * Post请求最好用@Field,@Query也行，只是参数会暴露在Url中
//      *
//      * @param url
//      * @param map
//      * @return
//      */
//     @FormUrlEncoded
//     @POST("{path}")
//     Observable<ResponseBody> doPost(@Path(value = "path", encoded = true) String url, @FieldMap Map<String, Object> map);
// 
//     @POST("{path}")
//     Observable<ResponseBody> doPost(@Path(value = "path", encoded = true) String url, @Body RequestBody body);
// 
//     @FormUrlEncoded
//     @PUT("{path}")
//     Observable<ResponseBody> doPut(@Path(value = "path", encoded = true) String url, @FieldMap Map<String, Object> map);
// 
//     @PUT("{path}")
//     Observable<ResponseBody> doPut(@Path(value = "path", encoded = true) String url, @Body RequestBody body);
// 
//     @DELETE("{path}")
//     Observable<ResponseBody> doDelete(@Path(value = "path", encoded = true) String url);
// 
//     @DELETE("{path}")
//     Observable<ResponseBody> doDelete(@Path(value = "path", encoded = true) String url, @QueryMap Map<String, Object> maps);
// 
//     @HTTP(method = "DELETE", path = "{path}", hasBody = true)
//     Observable<ResponseBody> doDelete(@Path(value = "path", encoded = true) String url, @Body RequestBody body);
// 
//     /**
//      * 完整路径
//      *
//      * @param url
//      * @return
//      */
//     @GET
//     Observable<ResponseBody> doGetFullPath(@Url String url);
// 
//     /**
//      * 完整路径
//      *
//      * @param url
//      * @param map
//      * @return
//      */
//     @GET
//     Observable<ResponseBody> doGetFullPath(@Url String url, @QueryMap Map<String, Object> map);
// 
//     /**
//      * 参数含有@Field和@FieldMap的请求必须加@FormUrlEncoded
//      * Post请求最好用@Field,@Query也行，只是参数会暴露在Url中
//      *
//      * @param url 完整路径
//      * @param map
//      * @return
//      */
//     @FormUrlEncoded
//     @POST
//     Observable<ResponseBody> doPostFullPath(@Url String url, @FieldMap Map<String, Object> map);
// 
//     @Multipart
//     @POST("{path}")
//     Observable<ResponseBody> uploadFile(@Path(value = "path", encoded = true) String url,
//                                         @Part("description") RequestBody description, @Part MultipartBody.Part file);
// 
//     @Multipart
//     @POST
//     Observable<ResponseBody> uploadFileFullPath(@Url String url,
//                                                 @Part("description") RequestBody description, @Part MultipartBody.Part file);
// 
//     @Multipart
//     @POST("{path}")
//     Observable<ResponseBody> uploadFiles(
//             @Path(value = "path", encoded = true) String url,
//             @PartMap Map<String, RequestBody> maps);
// 
//     @Multipart
//     @POST
//     Observable<ResponseBody> uploadFilesFullPath(
//             @Url String url,
//             @PartMap() Map<String, RequestBody> maps);
// 
//     //支持大文件
//     @Streaming
//     @GET
//     Observable<ResponseBody> download(@Url String fileUrl);
// }


// Path: retrofitclient/src/main/java/com/jady/retrofitclient/download/DownloadInfo.java
import com.jady.retrofitclient.listener.DownloadFileListener;
import com.jady.retrofitclient.request.CommonRequest;

    }

    public void setContentLength(long contentLength) {
        this.contentLength = contentLength;
    }

    public long getReadLength() {
        return readLength;
    }

    public void setReadLength(long readLength) {
        this.readLength = readLength;
    }

    public int getState() {
        return state;
    }

    public void setState(int state) {
        this.state = state;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public DownloadFileListener getListener() {