package org.qinshuihepan.bbs.ui;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import com.dd.CircularProgressButton;
import org.jsoup.Connection;
import org.jsoup.nodes.Document;
import org.qinshuihepan.bbs.R;
import org.qinshuihepan.bbs.api.Api;
import org.qinshuihepan.bbs.data.Request;
import org.qinshuihepan.bbs.util.TaskUtils;
import org.qinshuihepan.bbs.util.sharedpreference.Athority;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import butterknife.ButterKnife;
import butterknife.InjectView;
/**
* Created by liurongchan on 14-4-29.
* Modified on 14-9-15
*/
public class LoginActivity extends Activity {
@InjectView(R.id.username)
public EditText usernameText;
@InjectView(R.id.password)
public EditText passwordText;
@InjectView(R.id.confirm)
public CircularProgressButton confirm;
private Context mContext;
private String username;
private String password;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
ButterKnife.inject(this);
mContext = this;
confirm.setIndeterminateProgressMode(true);
confirm.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
username = usernameText.getText().toString();
password = passwordText.getText().toString();
if (username.equals("")) {
Toast.makeText(mContext, "用户名不能为空!", Toast.LENGTH_SHORT)
.show();
} else if (password.equals("")) {
Toast.makeText(mContext, "密码不能为空!", Toast.LENGTH_SHORT)
.show();
} else {
confirm.setProgress(50);
TaskUtils.executeAsyncTask(new AsyncTask<Void, Void, Boolean>() {
@Override
protected Boolean doInBackground(Void... voids) {
return isLoginSuccess();
}
@Override
protected void onPostExecute(Boolean success) {
super.onPostExecute(success);
if (!success) {
confirm.setIdleText("认证失败,请重试!");
confirm.setProgress(0);
passwordText.setText("");
usernameText.setText("");
usernameText.requestFocus();
} else {
Athority.addOther("username", username);
confirm.setProgress(100);
Intent intent = new Intent(mContext, MainActivity.class);
mContext.startActivity(intent);
finish();
}
}
});
}
}
});
}
private boolean isLoginSuccess() {
Map<String, String> datas = new HashMap<String, String>();
try {
Connection.Response before_login = Request.execute(Api.MOBILE_COOKIE_LOGIN, Api.USER_AGENT, Connection.Method.GET);
Document doc = before_login.parse();
String formhash = doc.getElementById("formhash").attr("value");
String loginaction = doc.getElementsByTag("form").attr("action");
Log.d("loginaction", loginaction);
datas.put("formhash", formhash);
datas.put("referer", Api.HOST);
datas.put("fastloginfield", "username");
datas.put("username", username);
datas.put("password", password);
datas.put("questionid", "0");
datas.put("submit", "登陆");
datas.put("answer", "");
Map<String, String> cookies = before_login.cookies();
Connection.Response logining = Request.execute(Api.HOST + loginaction, Api.USER_AGENT, datas, cookies, Connection.Method.POST);
if (logining.cookie("v3hW_2132_auth") == null) {
return false;
} else {
cookies = logining.cookies();
cookies.put("v3hW_2132_saltkey", before_login.cookie("v3hW_2132_saltkey"));
cookies.put(Athority.PREF_HAS_LOGINED, "yes");
Athority.addCookies(cookies);
return true;
}
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
}