A mobile app for thmmy.gr
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

95 lines
3.2 KiB

package gr.thmmy.mthmmy.activities;
import android.os.AsyncTask;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import java.io.IOException;
import gr.thmmy.mthmmy.base.BaseApplication;
import okhttp3.MultipartBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
import timber.log.Timber;
import static gr.thmmy.mthmmy.activities.topic.Posting.replyStatus;
public class NewTopicTask extends AsyncTask<String, Void, Boolean> {
private NewTopicTaskCallbacks listener;
public NewTopicTask(NewTopicTaskCallbacks listener){
this.listener = listener;
}
@Override
protected void onPreExecute() {
listener.onNewTopicTaskStarted();
}
@Override
protected Boolean doInBackground(String... strings) {
Request request = new Request.Builder()
.url(strings[0] + ";wap2")
.build();
OkHttpClient client = BaseApplication.getInstance().getClient();
Document document;
String seqnum, sc, topic, createTopicUrl;
try {
Response response = client.newCall(request).execute();
document = Jsoup.parse(response.body().string());
seqnum = document.select("input[name=seqnum]").first().attr("value");
sc = document.select("input[name=sc]").first().attr("value");
topic = document.select("input[name=topic]").first().attr("value");
createTopicUrl = document.select("form").first().attr("action");
RequestBody postBody = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("message", strings[2])
.addFormDataPart("seqnum", seqnum)
.addFormDataPart("sc", sc)
.addFormDataPart("subject", strings[1])
.addFormDataPart("topic", topic)
.build();
Request post = new Request.Builder()
.url(createTopicUrl)
.header("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36")
.post(postBody)
.build();
try {
client.newCall(post).execute();
Response response2 = client.newCall(post).execute();
switch (replyStatus(response2)) {
case SUCCESSFUL:
BaseApplication.getInstance().logFirebaseAnalyticsEvent("new_topic_creation", null);
return true;
default:
Timber.e("Malformed post. Request string: %s", post.toString());
return false;
}
} catch (IOException e) {
return false;
}
} catch (IOException e) {
return false;
}
}
@Override
protected void onPostExecute(Boolean success) {
listener.onNewTopicTaskFinished(success);
}
public interface NewTopicTaskCallbacks {
void onNewTopicTaskStarted();
void onNewTopicTaskFinished(boolean success);
}
}