JCL-474: Link access grants and denials to originating requests by acoburn · Pull Request #1716 · inrupt/solid-client-java

Expand Up @@ -106,6 +106,7 @@ public class AccessGrantClient { private static final String IS_CONSENT_FOR_DATA_SUBJECT = "isConsentForDataSubject"; private static final String FOR_PERSONAL_DATA = "forPersonalData"; private static final String HAS_STATUS = "hasStatus"; private static final String REQUEST = "request"; private static final String MODE = "mode"; private static final String PROVIDED_CONSENT = "providedConsent"; private static final String FOR_PURPOSE = "forPurpose"; Expand Down Expand Up @@ -260,7 +261,8 @@ public CompletionStage<AccessGrant> grantAccess(final AccessRequest request) { Objects.requireNonNull(request, "Request may not be null!"); return v1Metadata().thenCompose(metadata -> { final Map<String, Object> data = buildAccessGrantv1(request.getCreator(), request.getResources(), request.getModes(), request.getPurposes(), request.getExpiration(), request.getIssuedAt()); request.getModes(), request.getPurposes(), request.getExpiration(), request.getIssuedAt(), request.getIdentifier()); final Request req = Request.newBuilder(metadata.issueEndpoint) .header(CONTENT_TYPE, APPLICATION_JSON) .POST(Request.BodyPublishers.ofByteArray(serialize(data))).build(); Expand Down Expand Up @@ -292,7 +294,8 @@ public CompletionStage<AccessDenial> denyAccess(final AccessRequest request) { Objects.requireNonNull(request, "Request may not be null!"); return v1Metadata().thenCompose(metadata -> { final Map<String, Object> data = buildAccessDenialv1(request.getCreator(), request.getResources(), request.getModes(), request.getPurposes(), request.getExpiration(), request.getIssuedAt()); request.getModes(), request.getPurposes(), request.getExpiration(), request.getIssuedAt(), request.getIdentifier()); final Request req = Request.newBuilder(metadata.issueEndpoint) .header(CONTENT_TYPE, APPLICATION_JSON) .POST(Request.BodyPublishers.ofByteArray(serialize(data))).build(); Expand Down Expand Up @@ -799,13 +802,14 @@ static URI asUri(final Object value) { }
static Map<String, Object> buildAccessDenialv1(final URI agent, final Set<URI> resources, final Set<String> modes, final Set<URI> purposes, final Instant expiration, final Instant issuance) { final Set<URI> purposes, final Instant expiration, final Instant issuance, final URI accessRequest) { Objects.requireNonNull(agent, "Access denial agent may not be null!"); final Map<String, Object> consent = new HashMap<>(); consent.put(MODE, modes); consent.put(HAS_STATUS, "https://w3id.org/GConsent#ConsentStatusRefused"); consent.put(FOR_PERSONAL_DATA, resources); consent.put(IS_PROVIDED_TO, agent); consent.put(REQUEST, accessRequest); if (!purposes.isEmpty()) { consent.put(FOR_PURPOSE, purposes); } Expand All @@ -829,13 +833,14 @@ static Map<String, Object> buildAccessDenialv1(final URI agent, final Set<URI> r }
static Map<String, Object> buildAccessGrantv1(final URI agent, final Set<URI> resources, final Set<String> modes, final Set<URI> purposes, final Instant expiration, final Instant issuance) { final Set<URI> purposes, final Instant expiration, final Instant issuance, final URI accessRequest) { Objects.requireNonNull(agent, "Access grant agent may not be null!"); final Map<String, Object> consent = new HashMap<>(); consent.put(MODE, modes); consent.put(HAS_STATUS, "https://w3id.org/GConsent#ConsentStatusExplicitlyGiven"); consent.put(FOR_PERSONAL_DATA, resources); consent.put(IS_PROVIDED_TO, agent); consent.put(REQUEST, accessRequest); if (!purposes.isEmpty()) { consent.put(FOR_PURPOSE, purposes); } Expand Down