package tk.djcrazy.libCC98.util;
import android.util.Base64;
import android.util.Log;
import android.app.Application;
import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.google.gson.Gson;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import java.util.HashMap;
import java.util.Map;
import tk.djcrazy.MyCC98.config.Config;
import tk.djcrazy.libCC98.data.Issue;
import tk.djcrazy.MyCC98.application.MyApplication;
/**
* Created by zsy on 8/13/13.
*/
@Singleton
public class IssueSender {
private static final String HEADER_AUTH = "Authorization";
private static final String AUTH_TOKEN = "token";
private static final String HOST = "api.github.com";
private static final String UA = "MyCC98";
private static final String HEADER_UA = "User-Agent";
private static final String CREATE_ISSUE = "/repos/djj0809/MyCC98/issues";
private static final String CREATE_ISSUE_URL = "https://" + HOST + CREATE_ISSUE;
private static final String TAG = "IssueSender";
@Inject
private Application mApplication;
private Gson gson = new Gson();
public void send(final Issue issue, Object tag, final RequestResultListener<String> listener) {
StringRequest request = new StringRequest(Request.Method.POST, CREATE_ISSUE_URL, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
listener.onRequestComplete(response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
listener.onRequestError(error.getLocalizedMessage());
error.printStackTrace();
}
})
{
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> params = new HashMap<String, String>();
params.put(HEADER_AUTH, getAuthString());
params.put(HEADER_UA, UA);
return params;
}
@Override
public byte[] getBody() throws AuthFailureError {
return (gson.toJson(issue) + "\r\n").getBytes();
}
};
request.setTag(tag);
getApplication().mRequestQueue.add(request);
}
private String getAuthString() {
return "Basic " + Base64.encodeToString((Config.GITHUB_USERNAME+ ":" + Config.GITHUB_TOKEN).getBytes(), Base64.NO_WRAP);
}
private MyApplication getApplication() {
return (MyApplication) mApplication;
}
}