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 com.socks.jiandan.model.Comment4FreshNews;
import com.socks.jiandan.utils.logger.Logger;

import org.json.JSONObject;

import java.net.URLEncoder;
import java.text.MessageFormat;
import java.util.HashMap;
import java.util.Map;

/**
 * 发表评论
 * Created by zhaokaiqiang on 15/4/14.
 */
public class Request4PushFreshComment extends Request<Boolean> {

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

	public Request4PushFreshComment(String url, Response
			.Listener<Boolean> listener, Response.ErrorListener errorListener) {
		super(Method.GET, url, errorListener);
		Logger.d(url);
		this.listener = listener;
	}

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

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

			JSONObject resultObj = new JSONObject(resultStr);
			String result = resultObj.optString("status");
			String error=resultObj.optString("error");
			if ( result.equals("ok")) {
				return Response.success(true, HttpHeaderParser.parseCacheHeaders(response));
			} else {
				return Response.error(new VolleyError("错误原因:" + error));
			}
		} catch (Exception e) {
			e.printStackTrace();
			return Response.error(new VolleyError(e));
		}

	}

	/**
	 * 包装请求参数
	 *
	 * @return
	 */
	public static String getRequestURL(String post_id, String parent_id,String parent_name,
									   String name,String email, String content) {
		content= MessageFormat.format("@<a href=\"#comment-{0}\">{1}</a>: {2}",parent_id,parent_name, content);
		return  getRequestURLNoParent(post_id,name,email,content);
	}

	/**
	 * 包装无父评论的请求参数
	 *
	 * @return
	 */
	public static String getRequestURLNoParent(String post_id,String name, String email,String content) {
		//方法1 转义
		//content= MessageFormat.format("%40%3Ca+href%3D%27%23comment-{0}%27%3E{1}%3C%2Fa%3E%3A+{2}",parent_id,parent_name, content);
		//方法2 URLEncoder(更优)
		try {
			name = URLEncoder.encode(name, "utf-8");
			content=URLEncoder.encode(content, "utf-8");
		}catch (Exception ex){
			Logger.d("URLEncoder error");
		}
		return   MessageFormat.format("{0}&post_id={1}&content={2}&email={3}&name={4}",
				Comment4FreshNews.URL_PUSH_COMMENT, post_id, content, email, name);
	}


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

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

}