package com.socks.jiandan.net;

import com.android.volley.AuthFailureError;
import com.android.volley.NetworkResponse;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.HttpHeaderParser;

import org.json.JSONObject;

import java.util.HashMap;
import java.util.Map;

/**
 * 发表评论
 */
public class Request4PushComment extends Request<Boolean> {

    private Response.Listener<Boolean> listener;
    private HashMap<String, String> params;

    public Request4PushComment(String url, HashMap<String, String> params, Response
            .Listener<Boolean> listener, Response.ErrorListener errorListener) {
        super(Method.POST, url, errorListener);
        this.listener = listener;
        this.params = params;
    }

    @Override
    protected Response<Boolean> parseNetworkResponse(NetworkResponse response) {

        try {
            String resultStr = new String(response.data, HttpHeaderParser.parseCharset(response.headers));

            JSONObject resultObj = new JSONObject(resultStr);
            int code = resultObj.optInt("code");
            if (code == 0) {
                return Response.success(true, HttpHeaderParser.parseCacheHeaders(response));
            } else {
                return Response.error(new VolleyError("错误码:" + code));
            }
        } catch (Exception e) {
            e.printStackTrace();
            return Response.error(new VolleyError(e));
        }

    }

    /**
     * 包装请求参数
     *
     * @param thread_id
     * @return
     */
    public static HashMap<String, String> getRequestParams(String thread_id, String parent_id,
                                                           String author_name, String author_email,
                                                           String message) {
        HashMap<String, String> params = new HashMap<>();
        params.put("thread_id", thread_id);
        params.put("parent_id", parent_id);
        params.put("author_name", author_name);
        params.put("author_email", author_email);
        params.put("message", message);

        return params;
    }

    /**
     * 包装无父评论的请求参数
     *
     * @param thread_id
     * @param author_name
     * @param author_email
     * @param message
     * @return
     */
    public static HashMap<String, String> getRequestParamsNoParent(String thread_id,
                                                                   String author_name, String author_email,
                                                                   String message) {
        HashMap<String, String> params = new HashMap<>();
        params.put("thread_id", thread_id);
        params.put("author_name", author_name);
        params.put("author_email", author_email);
        params.put("message", message);

        return params;
    }


    @Override
    protected void deliverResponse(Boolean response) {
        listener.onResponse(response);
    }

    @Override
    protected Map<String, String> getParams() throws AuthFailureError {
        return params;
    }

}