diff --git a/app/src/main/java/com/example/applogin/model/Session.java b/app/src/main/java/com/example/applogin/model/Session.java new file mode 100644 index 0000000..2e5fb54 --- /dev/null +++ b/app/src/main/java/com/example/applogin/model/Session.java @@ -0,0 +1,33 @@ +package com.example.applogin.model; + +public class Session { + + private String location_id; + private String charger_id; + private int id; + + private User user; + + public User getUser() { + return user; + } + + public int getId() { + return id; + } + + public String getCharger_id() { + return charger_id; + } + + public String getLocation_id() { + return location_id; + } + + public Session(String location_id, String charger_id, int id, User user){ + this.location_id = location_id; + this.charger_id = charger_id; + this.id = id; + this.user = user; + } +} diff --git a/app/src/main/java/com/example/applogin/model/User.java b/app/src/main/java/com/example/applogin/model/User.java new file mode 100644 index 0000000..c1974db --- /dev/null +++ b/app/src/main/java/com/example/applogin/model/User.java @@ -0,0 +1,40 @@ +package com.example.applogin.model; + +public class User { + + public String getUsername() { + return username; + } + + public Type getType() { + return type; + } + + public State getState() { + return state; + } + + public enum Type{ + user, admin, service + } + + public enum State{ + inactive, in_queue, assigned, connected_charging, connected_full + } + + private String username; + + private Type type; + private State state; + + public User(String username, Type type, State state){ + this.username = username; + this.type = type; + this.state = state; + } + + @Override + public String toString() { + return username + " " + type + " " + state; + } +} diff --git a/app/src/main/java/com/example/applogin/network/AbstractNetworkTask.java b/app/src/main/java/com/example/applogin/network/AbstractNetworkTask.java index 905354b..f139435 100644 --- a/app/src/main/java/com/example/applogin/network/AbstractNetworkTask.java +++ b/app/src/main/java/com/example/applogin/network/AbstractNetworkTask.java @@ -2,6 +2,9 @@ package com.example.applogin.network; import android.os.AsyncTask; +import com.example.applogin.model.Session; +import com.example.applogin.model.User; + import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; @@ -14,7 +17,7 @@ import java.util.Map; import org.json.JSONException; import org.json.JSONObject; -public abstract class AbstractNetworkTask extends AsyncTask { +public abstract class AbstractNetworkTask extends AsyncTask { private static final int READ_TIMEOUT = 15000; private static final int CONNECTION_TIMEOUT = 15000; @@ -58,7 +61,7 @@ public abstract class AbstractNetworkTask extends AsyncTask { if (headers != null) { for (Map.Entry entry : headers.entrySet()) { - connection.setRequestProperty(entry.getKey(), entry.getKey()); + connection.setRequestProperty(entry.getKey(), entry.getValue()); } } @@ -70,12 +73,14 @@ public abstract class AbstractNetworkTask extends AsyncTask { connection.connect(); if(method == HTTPMethod.POST || method == HTTPMethod.PUT){ - JSONObject body = new JSONObject(params); - OutputStream os = connection.getOutputStream(); - byte[] input = body.toString().getBytes("utf-8"); - os.write(input, 0, input.length); - os.flush(); - os.close(); + if (params != null) { + JSONObject body = new JSONObject(params); + OutputStream os = connection.getOutputStream(); + byte[] input = body.toString().getBytes("utf-8"); + os.write(input, 0, input.length); + os.flush(); + os.close(); + } } InputStreamReader streamReader = new InputStreamReader(connection.getInputStream()); @@ -106,4 +111,26 @@ public abstract class AbstractNetworkTask extends AsyncTask { return result; } + + protected User parseUser(JSONObject obj){ + try { + return new User(obj.getString("username"), + User.Type.valueOf(obj.getString("type")), + User.State.valueOf(obj.getString("state"))); + } catch (JSONException e) { + return null; + } + } + + protected Session parseSession(JSONObject obj){ + try { + User user = parseUser(obj.getJSONObject("user")); + return new Session(obj.getString("location_id"), + obj.getString("charger_id"), + obj.getInt("session_id"), + user); + } catch (JSONException e) { + return null; + } + } } diff --git a/app/src/main/java/com/example/applogin/network/DeQueueTask.java b/app/src/main/java/com/example/applogin/network/DeQueueTask.java new file mode 100644 index 0000000..35d5915 --- /dev/null +++ b/app/src/main/java/com/example/applogin/network/DeQueueTask.java @@ -0,0 +1,21 @@ +package com.example.applogin.network; + +public class DeQueueTask extends AbstractNetworkTask { + + private String api_key; + private String location_id; + + public DeQueueTask(String location_id, String api_key){ + super(); + this.api_key = api_key; + this.location_id = location_id; + } + + @Override + protected Boolean doInBackground(Void... params) { + + Result result = makeAuthenticatedRequest(getAPIUrl(String.format("api/location/%s/queue", location_id)), HTTPMethod.DELETE, null, null, api_key); + return 200 <= result.statusCode && result.statusCode < 300; + + } +} diff --git a/app/src/main/java/com/example/applogin/network/GetUserTask.java b/app/src/main/java/com/example/applogin/network/GetUserTask.java new file mode 100644 index 0000000..f51fc46 --- /dev/null +++ b/app/src/main/java/com/example/applogin/network/GetUserTask.java @@ -0,0 +1,36 @@ +package com.example.applogin.network; + +import com.example.applogin.model.User; + +import org.json.JSONException; +import org.json.JSONObject; + +public class GetUserTask extends AbstractNetworkTask { + + private String api_key; + + public GetUserTask(String api_key){ + super(); + this.api_key = api_key; + } + + + @Override + protected User doInBackground(Void... params) { + + Result result = makeAuthenticatedRequest(getAPIUrl("api/user"), HTTPMethod.GET, null, null, api_key); + + try { + if (200 <= result.statusCode && result.statusCode < 300) { + JSONObject user = result.response.getJSONObject("user"); + return parseUser(user); + } + + } catch (JSONException e) { + e.printStackTrace(); + } + + return null; + + } +} diff --git a/app/src/main/java/com/example/applogin/network/LoginTask.java b/app/src/main/java/com/example/applogin/network/LoginTask.java index 59bb7da..037bdf7 100644 --- a/app/src/main/java/com/example/applogin/network/LoginTask.java +++ b/app/src/main/java/com/example/applogin/network/LoginTask.java @@ -4,7 +4,7 @@ import org.json.JSONException; import java.util.HashMap; -public class LoginTask extends AbstractNetworkTask { +public class LoginTask extends AbstractNetworkTask { private String username; private String password; diff --git a/app/src/main/java/com/example/applogin/network/QueueTask.java b/app/src/main/java/com/example/applogin/network/QueueTask.java new file mode 100644 index 0000000..b8ada7b --- /dev/null +++ b/app/src/main/java/com/example/applogin/network/QueueTask.java @@ -0,0 +1,21 @@ +package com.example.applogin.network; + +public class QueueTask extends AbstractNetworkTask { + + private String api_key; + private String location_id; + + public QueueTask(String location_id, String api_key){ + super(); + this.api_key = api_key; + this.location_id = location_id; + } + + @Override + protected Boolean doInBackground(Void... params) { + + Result result = makeAuthenticatedRequest(getAPIUrl(String.format("api/location/%s/queue", location_id)), HTTPMethod.POST, null, null, api_key); + return 200 <= result.statusCode && result.statusCode < 300; + + } +}