package com.ladjzero.uzlee;
import com.ladjzero.hipda.User;
import com.ladjzero.uzlee.ApiStore;
import com.ladjzero.uzlee.HttpClient;
import com.ladjzero.uzlee.HttpClientCallback;
import java.io.File;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
/**
* Created by chenzhuo on 16-2-12.
*/
public class HttpApi {
private HttpClient mHttpClient;
private ApiStore mStore;
public HttpApi(HttpClient httpClient) {
mHttpClient = httpClient;
mStore = ApiStore.getStore();
}
public void getMentions(HttpClientCallback callback) {
mHttpClient.get("http://www.hi-pda.com/forum/notice.php", callback);
}
public void getMessages(HttpClientCallback callback) {
mHttpClient.get("http://www.hi-pda.com/forum/pm.php?filter=privatepm", callback);
}
public void getOwnPosts(int page, HttpClientCallback callback) {
mHttpClient.get("http://www.hi-pda.com/forum/my.php?item=posts&page=" + page, callback);
}
public void getOwnThreads(int page, HttpClientCallback callback) {
mHttpClient.get("http://www.hi-pda.com/forum/my.php?item=threads&page" + page, callback);
}
public void getMarkedThreads(int page, HttpClientCallback callback) {
mHttpClient.get("http://www.hi-pda.com/forum/my.php?item=favorites&type=thread&page=" + page, callback);
}
public void getThreads(int page, int fid, int typeid, String order, HttpClientCallback callback) {
String url = "http://www.hi-pda.com/forum/forumdisplay.php?fid=" + fid
+ "&page=" + page
+ "&filter=type&typeid=" + typeid
+ "&orderby=" + order;
mHttpClient.get(url, callback);
}
public void getExistedAttach(HttpClientCallback callback) {
mHttpClient.get("http://www.hi-pda.com/forum/post.php?action=newthread&fid=57", callback);
}
public void searchThreads(String query, int page, int[] fids, HttpClientCallback callback) {
String url = null;
try {
String queryFid = "";
if (fids != null && fids.length > 0) {
for (int i = 0; i < fids.length; ++i) {
queryFid = queryFid + "srchfid[" + i + "]=" + fids[i] + "&";
}
}
url = "http://www.hi-pda.com/forum/search.php?srchtxt=" + URLEncoder.encode(query, mStore.getCode())
+ "&srchtype=title&"
+ "searchsubmit=true&"
+ "st=on&"
+ "srchuname=&"
+ "srchfilter=all&"
+ "srchfrom=0&"
+ "before=&"
+ "orderby=lastpost&"
+ "ascdesc=desc&"
+ "srchfid%5B0%5D=all&"
+ queryFid
+ "page=" + page;
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
callback.onFailure(e.toString());
}
if (url != null) mHttpClient.get(url, callback);
}
public void searchUserThreads(String username, int page, HttpClientCallback callback) {
String url = null;
try {
url = "http://www.hi-pda.com/forum/search.php?srchtype=title&srchtxt=&searchsubmit=true&st=on&srchuname="
+ URLEncoder.encode(username, mStore.getCode())
+ "&srchfilter=all&srchfrom=0&before=&orderby=lastpost&ascdesc=desc&page="
+ page;
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
callback.onFailure(e.toString());
}
if (url != null) mHttpClient.get(url, callback);
}
public void addToFavorite(int tid, HttpClientCallback callback) {
mHttpClient.get("http://www.hi-pda.com/forum/my.php?item=favorites&tid=" + tid + "&inajax=1&ajaxtarget=favorite_msg", callback);
}
public void removeFromFavoriate(int tid, HttpClientCallback callback) {
mHttpClient.get("http://www.hi-pda.com/forum/my.php?item=favorites&action=remove&tid=" + tid + "&inajax=1&ajaxtarget=favorite_msg", callback);
}
public void login(String username, String password, int questionId, String answer, final HttpClientCallback callback) {
Map<String, String> params = new HashMap();
params.put("sid", "fa6m4o");
params.put("formhash", "ad793a3f");
params.put("loginfield", "username");
params.put("username", username);
params.put("password", password);
params.put("questionid", String.valueOf(questionId));
params.put("answer", answer);
params.put("loginsubmit", "true");
mHttpClient.post("http://www.hi-pda.com/forum/logging.php?action=login&loginsubmit=yes", params, null, new HttpClientCallback() {
@Override
public void onSuccess(String response) {
if (response.contains("欢迎您回来")) {
callback.onSuccess(response);
} else if (response.contains("密码错误次数过多,请 15 分钟后重新登录")) {
callback.onFailure("密码错误次数过多,请 15 分钟后重新登录");
} else {
callback.onFailure("登录错误");
}
}
@Override
public void onFailure(String reason) {
callback.onFailure(reason);
}
});
}
public void logout(final HttpClientCallback callback) {
mHttpClient.get("http://www.hi-pda.com/forum/logging.php?action=logout&formhash=" + mStore.getFormhash(), new HttpClientCallback() {
@Override
public void onSuccess(String response) {
mStore.setUser(new User());
mStore.setUnread(0);
callback.onSuccess(response);
}
@Override
public void onFailure(String reason) {
callback.onFailure(reason);
}
});
}
public void sendMessage(String name, String message, HttpClientCallback callback) {
String url = "http://www.hi-pda.com/forum/pm.php?action=send&pmsubmit=yes&infloat=yes&sendnew=yes";
Map<String, String> params = new HashMap();
params.put("formhash", mStore.getFormhash());
params.put("msgto", name);
params.put("message", message);
params.put("pmsubmit", "true");
mHttpClient.post(url, params, null, callback);
}
public void newThread(int fid, String subject, String message, ArrayList<Integer> attachIds, HttpClientCallback callback) {
String url = "http://www.hi-pda.com/forum/post.php?action=newthread&fid=" + fid + "&extra=&topicsubmit=yes";
Map<String, String> params = new HashMap();
params.put("formhash", mStore.getFormhash());
params.put("posttime", Long.valueOf(System.currentTimeMillis() / 1000).toString());
params.put("wysiwyg", "1");
params.put("iconid", "");
params.put("tags", "");
params.put("attention_add", "1");
params.put("subject", subject);
params.put("message", message);
if (attachIds != null) {
for (Integer attachId : attachIds) {
params.put("attachnew[" + attachId + "][description]", "");
}
}
mHttpClient.post(url, params, null, callback);
}
public void sendReply(int tid, String content, ArrayList<Integer> attachIds, ArrayList<Integer> existedAttchIds, HttpClientCallback callback) {
String url = "http://www.hi-pda.com/forum/post.php?action=reply&fid=57&tid=" + tid + "&extra=&replysubmit=yes";
Map<String, String> params = new HashMap<>();
params.put("formhash", mStore.getFormhash());
params.put("posttime", Long.valueOf(System.currentTimeMillis() / 1000).toString());
params.put("subject", "");
params.put("wysiwyg", "1");
params.put("noticeauthor", "");
params.put("noticetrimstr", "");
params.put("noticeauthormsg", "");
params.put("subject", "");
params.put("message", content);
if (attachIds != null) {
for (Integer attachId : attachIds) {
params.put("attachnew[" + attachId + "][description]", "");
}
}
if (existedAttchIds != null) {
for (Integer id : existedAttchIds) {
params.put("attachdel[]", String.valueOf(id));
}
}
mHttpClient.post(url, params, null, callback);
}
public void deletePost(int fid, int tid, int pid, final HttpClientCallback callback) {
String url = "http://www.hi-pda.com/forum/post.php?action=edit&extra=&editsubmit=yes&mod=";
Map<String, String> params = new HashMap<>();
params.put("formhash", mStore.getFormhash());
params.put("posttime", Long.valueOf(System.currentTimeMillis() / 1000).toString());
params.put("wysiwyg", "1");
params.put("page", "1");
params.put("delete", "1");
params.put("editsubmit", "true");
params.put("subject", "");
params.put("message", "");
params.put("fid", String.valueOf(fid));
params.put("tid", String.valueOf(tid));
params.put("pid", String.valueOf(pid));
mHttpClient.post(url, params, null, new HttpClientCallback() {
@Override
public void onSuccess(String response) {
if (response.contains("未定义操作,请返回。")) {
onFailure("未定义操作");
} else {
callback.onSuccess(response);
}
}
@Override
public void onFailure(String reason) {
callback.onFailure(reason);
}
});
}
public void editPost(int fid, int tid, int pid, String subject, String message, ArrayList<Integer> attachIds, HttpClientCallback callback) {
String url = "http://www.hi-pda.com/forum/post.php?action=edit&extra=&editsubmit=yes&mod=";
Map<String, String> params = new HashMap<>();
params.put("formhash", mStore.getFormhash());
params.put("posttime", Long.valueOf(System.currentTimeMillis() / 1000).toString());
params.put("wysiwyg", "1");
params.put("iconid", "0");
params.put("fid", String.valueOf(fid));
params.put("tid", String.valueOf(tid));
params.put("pid", String.valueOf(pid));
params.put("page", "1");
params.put("tags", "");
params.put("editsubmit", "true");
params.put("subject", subject);
params.put("message", message);
if (attachIds != null) {
for (Integer attachId : attachIds) {
params.put("attachnew[" + attachId + "][description]", "");
}
}
mHttpClient.post(url, params, null, callback);
}
public void uploadImage(final File imageFile, final HttpClientCallback callback) {
mHttpClient.get("http://www.hi-pda.com/forum/post.php?action=newthread&fid=57", new HttpClientCallback() {
@Override
public void onSuccess(String response) {
User user = mStore.getUser();
String hash = mStore.getHash();
if (hash == null || hash.length() == 0) {
callback.onFailure("error: fail to get hash string.");
return;
}
if (user == null) {
callback.onFailure("error: fail to get user.");
return;
}
if (!(imageFile.isFile() && imageFile.exists())) {
callback.onFailure("error: fail to open image file.");
return;
}
Map<String, String> params = new HashMap<String, String>();
params.put("uid", String.valueOf(user.getId()));
params.put("hash", mStore.getHash());
params.put("filename", imageFile.getName());
Map<String, File> files = new HashMap<String, File>();
files.put("Filedata", imageFile);
String url = "http://www.hi-pda.com/forum/misc.php?action=swfupload&operation=upload&simple=1&type=image";
mHttpClient.post(url, params, files, callback);
}
@Override
public void onFailure(String reason) {
callback.onFailure(reason);
}
});
}
public void getEditBody(int fid, int tid, int pid, HttpClientCallback callback) {
String url = "http://www.hi-pda.com/forum/post.php?action=edit&fid=" + fid + "&tid=" + tid + "&pid=" + pid + "&page=1";
mHttpClient.get(url, callback);
}
public void getUser(int uid, HttpClientCallback callback) {
mHttpClient.get("http://www.hi-pda.com/forum/space.php?uid=" + uid, callback);
}
}