diff --git a/pom.xml b/pom.xml
index 120f5e0..ade93d7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -78,6 +78,11 @@
portal-manager
[2.0.0-SNAPSHOT, 3.0.0-SNAPSHOT)
+
+ org.gcube.accounting
+ accounting-lib
+ provided
+
org.gcube.common
common-authorization
diff --git a/src/main/java/org/gcube/data_catalogue/grsf_publish_ws/filters/RequestsAuthFilter.java b/src/main/java/org/gcube/data_catalogue/grsf_publish_ws/filters/RequestsAuthAccountingFilter.java
similarity index 73%
rename from src/main/java/org/gcube/data_catalogue/grsf_publish_ws/filters/RequestsAuthFilter.java
rename to src/main/java/org/gcube/data_catalogue/grsf_publish_ws/filters/RequestsAuthAccountingFilter.java
index 059ea87..c198877 100644
--- a/src/main/java/org/gcube/data_catalogue/grsf_publish_ws/filters/RequestsAuthFilter.java
+++ b/src/main/java/org/gcube/data_catalogue/grsf_publish_ws/filters/RequestsAuthAccountingFilter.java
@@ -10,6 +10,10 @@ import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.Response;
import javax.ws.rs.ext.Provider;
+import org.gcube.accounting.datamodel.UsageRecord.OperationResult;
+import org.gcube.accounting.datamodel.usagerecords.ServiceUsageRecord;
+import org.gcube.accounting.persistence.AccountingPersistence;
+import org.gcube.accounting.persistence.AccountingPersistenceFactory;
import org.gcube.common.authorization.library.AuthorizationEntry;
import org.gcube.common.authorization.library.provider.AuthorizationProvider;
import org.gcube.common.authorization.library.utils.Caller;
@@ -23,10 +27,12 @@ import org.slf4j.LoggerFactory;
* @author Costantino Perciante at ISTI-CNR
*/
@Provider
-public class RequestsAuthFilter implements ContainerRequestFilter{
+public class RequestsAuthAccountingFilter implements ContainerRequestFilter{
- private static final org.slf4j.Logger logger = LoggerFactory.getLogger(RequestsAuthFilter.class);
+ private static final org.slf4j.Logger logger = LoggerFactory.getLogger(RequestsAuthAccountingFilter.class);
private static final String AUTH_TOKEN = "gcube-token";
+ private final static AccountingPersistence accountingPersistence = AccountingPersistenceFactory.getPersistence();
+
@Override
public void filter(ContainerRequestContext requestContext)
throws IOException {
@@ -78,11 +84,11 @@ public class RequestsAuthFilter implements ContainerRequestFilter{
* @return null if validation fails
*/
private static AuthorizationEntry validateToken(String token){
-
+
AuthorizationEntry res = null;
-
+
try {
-
+
// set the root scope
ScopeProvider.instance.set("/" + PortalContext.getConfiguration().getInfrastructureName());
logger.debug("Validating token " + token);
@@ -98,5 +104,29 @@ public class RequestsAuthFilter implements ContainerRequestFilter{
return res;
}
+ /**
+ * Accounts service requests
+ */
+ private static void accountRequest(String username){
+
+ // Create a new Service Usage Record
+ ServiceUsageRecord usageRecord = new ServiceUsageRecord();
+
+ try{
+ // TODO
+ usageRecord.setResourceProperty(ServiceUsageRecord.CONSUMER_ID, username);
+ usageRecord.setOperationResult(OperationResult.SUCCESS);
+ usageRecord.setCallerHost("node13.d4science.org");
+ usageRecord.setHost("node22.d4science.org");
+ usageRecord.setServiceClass("VREManagement");
+ usageRecord.setServiceName("SmartExecutor");
+ usageRecord.setCalledMethod("launch");
+ usageRecord.setResourceProperty(ServiceUsageRecord.DURATION, "300");
+ accountingPersistence.account(usageRecord);
+ }catch(Exception e){
+ logger.error("Unable to account this service usage record", e);
+ }
+
+ }
}