diff --git a/src/main/java/org/tonality/service/BaseWebService.java b/src/main/java/org/tonality/service/BaseWebService.java index 0ac46692eb86a94fc352c78a56db906a3acecf08..b5ceb7be66bb6087c6117de131653564821ba2fc 100644 --- a/src/main/java/org/tonality/service/BaseWebService.java +++ b/src/main/java/org/tonality/service/BaseWebService.java @@ -6,6 +6,7 @@ import javax.xml.ws.handler.soap.SOAPMessageContext; import com.sun.net.httpserver.HttpExchange; import com.sun.net.httpserver.HttpExchange; +import org.tonality.repository.Logging; // https://stackoverflow.com/questions/12727989/jax-ws-getting-client-ip/13693024#13693024 public abstract class BaseWebService { @@ -30,10 +31,27 @@ public abstract class BaseWebService { return getClientApiKey() != null && getClientApiKey().equals(System.getenv("API_KEY")); } - protected void logRequest() throws Exception { + protected void logRequest(String endpoint, String description) throws Exception { if (!isRequestValid()) throw new Exception("Invalid request"); // TODO : implement logging to database - System.out.println("Client IP: " + getClientIp()); - System.out.println("Client API Key: " + getClientApiKey()); + + try { + String clientIp = getClientIp(); + String clientApiKey = getClientApiKey(); + + org.tonality.model.Logging log = org.tonality.repository.Logging.getInstance().create(endpoint, clientIp, description); + + if (log != null) { + System.out.println("Request logged successfully:"); + System.out.println("Client IP: " + clientIp); + System.out.println("Client API Key: " + clientApiKey); + } else { + throw new Exception("Failed to log request"); + } + + } catch (Exception e) { + e.printStackTrace(); + throw new Exception("Failed to log request"); + } } } diff --git a/src/main/java/org/tonality/service/Subscription.java b/src/main/java/org/tonality/service/Subscription.java index 7102fe3944a96391761cc62382df5fbf8abb7021..28728bf7c85967d5e33e75a691f3ad1340650049 100644 --- a/src/main/java/org/tonality/service/Subscription.java +++ b/src/main/java/org/tonality/service/Subscription.java @@ -12,7 +12,8 @@ public class Subscription extends BaseWebService implements ISubscription { @Override public org.tonality.model.Subscription createSubscription(long userId, String username, long premiumAlbumId, String albumName, String artist) { try { - logRequest(); + String description = "User ID: " + userId + ", Username: " + username + ", Premium Album ID: " + + premiumAlbumId + ", Album Name" + albumName + ", Artist: " + artist; + logRequest("subscription", description); return org.tonality.repository.Subscription.getInstance().createSubscription(userId, username, premiumAlbumId, albumName, artist); } catch (Exception e) { e.printStackTrace(); @@ -23,7 +24,8 @@ public class Subscription extends BaseWebService implements ISubscription { @Override public org.tonality.model.Subscription updateSubscription(long userId, long premiumAlbumId, SubscriptionStatus status) { try { - logRequest(); + String description = "User ID: " + userId + ", Premium Album ID: " + + premiumAlbumId + ", Subscription Status: " + status; + logRequest("subscription", description); return org.tonality.repository.Subscription.getInstance().updateSubscription(userId, premiumAlbumId, status); } catch (Exception e) { e.printStackTrace(); @@ -34,7 +36,8 @@ public class Subscription extends BaseWebService implements ISubscription { @Override public org.tonality.model.Subscription getSubscription(long userId, long premiumAlbumId) { try { - logRequest(); + String description = "User ID: " + userId + ", Premium Album ID: " + + premiumAlbumId; + logRequest("subscription", description); SubscriptionMiddleware subscriptionMiddleware = new SubscriptionMiddleware(); return subscriptionMiddleware.execute(org.tonality.repository.Subscription.getInstance().getById(new SubscriptionId(userId, premiumAlbumId))); } catch (Exception e) { @@ -46,7 +49,8 @@ public class Subscription extends BaseWebService implements ISubscription { @Override public List<org.tonality.model.Subscription> searchSubscription(SubscriptionStatus status, String searchInput, String orderBy, int page, int size) { try { - logRequest(); + String description = "Subscription Status: " + status + ", Search Input: " + searchInput + ", Order By: " + orderBy + ", Page: " + page + ", Size: " + size; + logRequest("subscription", description); SubscriptionMiddleware subscriptionMiddleware = new SubscriptionMiddleware(); return subscriptionMiddleware.execute(org.tonality.repository.Subscription.getInstance().searchSubscriptions(status, searchInput, orderBy, page, size)); } catch (Exception e) { @@ -58,7 +62,8 @@ public class Subscription extends BaseWebService implements ISubscription { @Override public List<org.tonality.model.Subscription> getSubscriptionsByStatus(SubscriptionStatus status, String orderBy, int page, int size) { try { - logRequest(); + String description = "Subscription Status: " + status + ", Order By: " + orderBy + ", Page: " + page + ", Size: " + size; + logRequest("subscription", description); SubscriptionMiddleware subscriptionMiddleware = new SubscriptionMiddleware(); return subscriptionMiddleware.execute(org.tonality.repository.Subscription.getInstance().getSubscriptionByStatus(status, orderBy, page, size)); } catch (Exception e) { @@ -70,7 +75,8 @@ public class Subscription extends BaseWebService implements ISubscription { @Override public List<org.tonality.model.Subscription> getSubscriptionsByUserId(long userId, int page, int size) { try { - logRequest(); + String description = "User ID: " + userId + ", Page: " + page + ", Size: " + size; + logRequest("subscription", description); SubscriptionMiddleware subscriptionMiddleware = new SubscriptionMiddleware(); return subscriptionMiddleware.execute(org.tonality.repository.Subscription.getInstance().getSubscriptionsByUserId(userId, page, size)); } catch (Exception e) { @@ -82,7 +88,8 @@ public class Subscription extends BaseWebService implements ISubscription { @Override public boolean deleteSubscription(long userId, long premiumAlbumId) { try { - logRequest(); + String description = "User ID: " + userId + ", Premium Album ID: " + premiumAlbumId; + logRequest("subscription", description); if (!org.tonality.repository.Subscription.getInstance().deleteById(new org.tonality.model.SubscriptionId(userId, premiumAlbumId))) { throw new Exception("Failed to delete subscription"); } @@ -96,7 +103,8 @@ public class Subscription extends BaseWebService implements ISubscription { @Override public boolean deleteSubscriptionsByUserId(long userId) { try { - logRequest(); + String description = "User ID: " + userId; + logRequest("subscription", description); return org.tonality.repository.Subscription.getInstance().deleteSubscriptionsByUserId(userId); } catch (Exception e) { e.printStackTrace(); @@ -107,7 +115,8 @@ public class Subscription extends BaseWebService implements ISubscription { @Override public boolean deleteSubscriptionsByAlbumId(long premiumAlbumId) { try { - logRequest(); + String description = "Premium Album ID: " + premiumAlbumId; + logRequest("subscription", description); return org.tonality.repository.Subscription.getInstance().deleteSubscriptionsByAlbumId(premiumAlbumId); } catch (Exception e) { e.printStackTrace();