Inhalt
Aktueller Ordner:
duesseldorfer-schuelerinventar-java-client/src/main/java/com/dueskApiClient.java
package com.duesk.api;
import okhttp3.*;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
import com.duesk.api.models.*;
import java.io.IOException;
import java.lang.reflect.Type;
import java.util.List;
import java.util.concurrent.TimeUnit;
public class ApiClient {
private static final String BASE_URL = "https://paul-koop.org/api/";
private static final OkHttpClient client = new OkHttpClient.Builder()
.connectTimeout(30, TimeUnit.SECONDS)
.readTimeout(30, TimeUnit.SECONDS)
.build();
private static final Gson gson = new GsonBuilder().create();
public static LoginResponse login(String username, String password) throws IOException {
String json = "{\"username\":\"" + username + "\",\"password\":\"" + password + "\"}";
RequestBody body = RequestBody.create(json, MediaType.parse("application/json"));
Request request = new Request.Builder()
.url(BASE_URL + "api_login.php")
.post(body)
.build();
try (Response response = client.newCall(request).execute()) {
String responseBody = response.body().string();
return gson.fromJson(responseBody, LoginResponse.class);
}
}
public static List<Profile> getProfiles() throws IOException {
if (!SessionManager.getInstance().isLoggedIn()) return null;
Request request = new Request.Builder()
.url(BASE_URL + "api_profiles.php")
.addHeader("X-User-ID", SessionManager.getInstance().getUserId())
.addHeader("X-Session", SessionManager.getInstance().getSession())
.build();
try (Response response = client.newCall(request).execute()) {
String responseBody = response.body().string();
Type listType = new TypeToken<List<Profile>>(){}.getType();
return gson.fromJson(responseBody, listType);
}
}
public static Profile getProfile(String profileId) throws IOException {
if (!SessionManager.getInstance().isLoggedIn()) return null;
Request request = new Request.Builder()
.url(BASE_URL + "api_profiles.php?id=" + profileId)
.addHeader("X-User-ID", SessionManager.getInstance().getUserId())
.addHeader("X-Session", SessionManager.getInstance().getSession())
.build();
try (Response response = client.newCall(request).execute()) {
String responseBody = response.body().string();
return gson.fromJson(responseBody, Profile.class);
}
}
public static boolean createProfile(Profile profile) throws IOException {
if (!SessionManager.getInstance().isLoggedIn()) return false;
String json = gson.toJson(profile);
RequestBody body = RequestBody.create(json, MediaType.parse("application/json"));
Request request = new Request.Builder()
.url(BASE_URL + "api_profiles.php")
.post(body)
.addHeader("X-User-ID", SessionManager.getInstance().getUserId())
.addHeader("X-Session", SessionManager.getInstance().getSession())
.build();
try (Response response = client.newCall(request).execute()) {
return response.isSuccessful();
}
}
public static boolean updateProfile(Profile profile) throws IOException {
if (!SessionManager.getInstance().isLoggedIn()) return false;
String json = gson.toJson(profile);
RequestBody body = RequestBody.create(json, MediaType.parse("application/json"));
Request request = new Request.Builder()
.url(BASE_URL + "api_profiles.php")
.put(body)
.addHeader("X-User-ID", SessionManager.getInstance().getUserId())
.addHeader("X-Session", SessionManager.getInstance().getSession())
.build();
try (Response response = client.newCall(request).execute()) {
return response.isSuccessful();
}
}
public static boolean deleteProfile(String profileId) throws IOException {
if (!SessionManager.getInstance().isLoggedIn()) return false;
Request request = new Request.Builder()
.url(BASE_URL + "api_profiles.php?id=" + profileId)
.delete()
.addHeader("X-User-ID", SessionManager.getInstance().getUserId())
.addHeader("X-Session", SessionManager.getInstance().getSession())
.build();
try (Response response = client.newCall(request).execute()) {
return response.isSuccessful();
}
}
public static List<Group> getGroups() throws IOException {
if (!SessionManager.getInstance().isLoggedIn()) return null;
Request request = new Request.Builder()
.url(BASE_URL + "api_groups.php")
.addHeader("X-User-ID", SessionManager.getInstance().getUserId())
.addHeader("X-Session", SessionManager.getInstance().getSession())
.build();
try (Response response = client.newCall(request).execute()) {
String responseBody = response.body().string();
Type listType = new TypeToken<List<Group>>(){}.getType();
return gson.fromJson(responseBody, listType);
}
}
public static boolean createGroup(String groupName) throws IOException {
if (!SessionManager.getInstance().isLoggedIn()) return false;
String json = "{\"name\":\"" + groupName + "\"}";
RequestBody body = RequestBody.create(json, MediaType.parse("application/json"));
Request request = new Request.Builder()
.url(BASE_URL + "api_groups.php")
.post(body)
.addHeader("X-User-ID", SessionManager.getInstance().getUserId())
.addHeader("X-Session", SessionManager.getInstance().getSession())
.build();
try (Response response = client.newCall(request).execute()) {
return response.isSuccessful();
}
}
public static boolean deleteGroup(int groupId) throws IOException {
if (!SessionManager.getInstance().isLoggedIn()) return false;
Request request = new Request.Builder()
.url(BASE_URL + "api_groups.php?id=" + groupId)
.delete()
.addHeader("X-User-ID", SessionManager.getInstance().getUserId())
.addHeader("X-Session", SessionManager.getInstance().getSession())
.build();
try (Response response = client.newCall(request).execute()) {
return response.isSuccessful();
}
}
}