package com.qianfeng.assistant.modules.other.utils;

import android.os.AsyncTask;

/**
 * 用异步任务封装的网络请求工具类
 * Created by Administrator on 16-3-15.
 */
public class AssistantTask extends AsyncTask<Void,Void,Object> {

    private IRequest request;
    private IRequestCallback callback;

    public AssistantTask(IRequest request, IRequestCallback callback) {

        if(request==null||callback==null){
            throw  new NullPointerException("request or callback can not be null");
        }
        this.request = request;
        this.callback = callback;
    }

    @Override
    protected Object doInBackground(Void... params) {
        return request.doRequest();
    }

    @Override
    protected void onProgressUpdate(Void... values) {
        super.onProgressUpdate(values);
        //publishProgress(values);
    }

    @Override
    protected void onPostExecute(Object object) {
        super.onPostExecute(object);
        if(object==null){
            callback.onError("请求失败");
        }else {
            callback.OnSuccess(object);
        }
    }

    /**
     * 请求接口
     */
    public interface  IRequest{
        /**
         * 执行请求
         */
        Object doRequest();
    }

    /**
     * 请求回调接口
     */
    public interface  IRequestCallback{
        /**
         * 请求成功的回调方法
         * 请求结果
         * @param object
         */
        void OnSuccess(Object object);

        /**
         * 请求失败的回调方法
         * 错误信息
         * @param msg
         */
        void onError(String msg);
    }
    public interface  IDownLoadProgress{
        /**
         * 更新进度
         * @param progress 百分比
         */
        void updateProgress(int progress);
    }
}