public
enum
LoginError {
HTTP_ERROR, INVALID_USER, JSON_PARSE_ERROR, MISC_ERROR
}
public
class
LoginResult {
@Nullable
private
final
LoginError error;
private
final
List<Memeber> members;
private
LoginResult(
@Nullable
LoginError error, List<Member> members) {
this
.error = error;
this
.members = members;
}
public
static
LoginResult error(LoginError error) {
return
new
LoginResult(error,
new
ArrayList<>());
}
public
static
LoginResult success(List<Member> members) {
return
new
LoginResult(
null
, members);
}
public
boolean
isError() {
return
error !=
null
;
}
}
public
class
Memeber {
private
final
String email;
private
final
String name;
}
public
class
loginTask
extends
AsyncTask<Void, Void, LoginResult> {
private
static
final
String LOGIN_ENDPOINT =
"http://서버ip/LoginDB.php"
;
interface
Listener {
void
loginFailureWithError(LoginError error);
void
loginSucceeded(List<Memeber> members);
}
private
String email, password;
private
Listener lisetner;
public
loginTask(
@NotNull
Listener lisetner) {
this
.listener = listener;
}
public
void
setLoginInput(String email, String password) {
this
.email = email;
this
.password = password;
}
@Override
protected
String doInBackground(String... params) {
try
{
String responseString = HttpRequestUtil.post(LOGIN_ENDPOINT, getPostParameters());
if
(
"error"
.equals(responseString) ||
"pwerr"
.equals(responseString)) {
return
LoginResult.error(LoginErrorType.INVALID_USER);
}
return
parseJSON(responseString);
}
catch
(IOException e) {
return
LoginResult.error(LoginErrorType.HTTP_ERROR);
}
catch
(JSONException e) {
return
LoginResult.error(LoginErrorType.JSON_PARSE_ERROR);
}
catch
(Exception e) {
return
LoginResult.error(LoginErrorType.MISC_ERROR);
}
}
private
String getPostParameters() {
return
"m_email"
+ email +
"$m_pw="
+ password;
}
private
LoginResult parseJSON(String json) {
List<Member> members =
new
ArrayList<>();
JSONObject jsonObject =
new
JSONObject(callBackValue);
JSONArray jsonArray = jsonObject.getJSONArray(
"member"
);
for
(
int
i =
0
; i < jsonArray.length(); i++) {
JSONObject item = jsonArray.getJSONObject(i);
checkid = item.getString(
"m_email"
);
checkpwd = item.getString(
"m_pw"
);
String name = item.getString(
"m_name"
);
members.add(
new
Member(checkid, name));
}
return
LoginResult.success(members);
}
@Override
protected
void
onPostExecute (LoginResult loginResult) {
if
(loginResult.isError()) {
listener.loginFailureWithError(loginResult.getError());
return
;
}
listener.loginSucceeded(loginResult.getMembers());
}
}
public
class
HttpRequestUtil {
public
static
String post(String urlString, String postParameters) {
URL url =
new
URL(urlString);
return
bufferedReader.close();
}
}