Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,12 @@

package dev.learning.xapi.client;

import static dev.learning.xapi.client.XapiClientConstants.ACTIVITIES_PROFILE_PATH;
import static dev.learning.xapi.client.XapiClientConstants.ACTIVITY_ID_PARAM;
import static dev.learning.xapi.client.XapiClientConstants.ACTIVITY_ID_TEMPLATE;
import static dev.learning.xapi.client.XapiClientConstants.PROFILE_ID_PARAM;
import static dev.learning.xapi.client.XapiClientConstants.PROFILE_ID_TEMPLATE;

import java.net.URI;
import java.util.Map;
import lombok.NonNull;
Expand All @@ -22,13 +28,13 @@ abstract class ActivityProfileRequest implements Request {
@Override
public UriBuilder url(UriBuilder uriBuilder, Map<String, Object> queryParams) {

queryParams.put("activityId", activityId);
queryParams.put("profileId", profileId);
queryParams.put(ACTIVITY_ID_PARAM, activityId);
queryParams.put(PROFILE_ID_PARAM, profileId);

return uriBuilder
.path("/activities/profile")
.queryParam("activityId", "{activityId}")
.queryParam("profileId", "{profileId}");
.path(ACTIVITIES_PROFILE_PATH)
.queryParam(ACTIVITY_ID_PARAM, ACTIVITY_ID_TEMPLATE)
.queryParam(PROFILE_ID_PARAM, PROFILE_ID_TEMPLATE);
}

/** Builder for ActivityProfileRequest. */
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@

package dev.learning.xapi.client;

import static dev.learning.xapi.client.XapiClientConstants.ACTIVITIES_PROFILE_PATH;
import static dev.learning.xapi.client.XapiClientConstants.ACTIVITY_ID_PARAM;
import static dev.learning.xapi.client.XapiClientConstants.ACTIVITY_ID_TEMPLATE;

import java.net.URI;
import java.time.Instant;
import java.util.Map;
Expand Down Expand Up @@ -36,8 +40,8 @@ public class GetActivityProfilesRequest implements Request {
@Override
public UriBuilder url(UriBuilder uriBuilder, Map<String, Object> queryParams) {

queryParams.put("activityId", activityId);
uriBuilder.path("/activities/profile").queryParam("activityId", "{activityId}");
queryParams.put(ACTIVITY_ID_PARAM, activityId);
uriBuilder.path(ACTIVITIES_PROFILE_PATH).queryParam(ACTIVITY_ID_PARAM, ACTIVITY_ID_TEMPLATE);

if (since != null) {
queryParams.put("since", since);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@

package dev.learning.xapi.client;

import static dev.learning.xapi.client.XapiClientConstants.ACTIVITIES_PATH;
import static dev.learning.xapi.client.XapiClientConstants.ACTIVITY_ID_PARAM;
import static dev.learning.xapi.client.XapiClientConstants.ACTIVITY_ID_TEMPLATE;

import java.net.URI;
import java.util.Map;
import lombok.Builder;
Expand All @@ -30,9 +34,9 @@ public class GetActivityRequest implements Request {
@Override
public UriBuilder url(UriBuilder uriBuilder, Map<String, Object> queryParams) {

queryParams.put("activityId", activityId);
queryParams.put(ACTIVITY_ID_PARAM, activityId);

return uriBuilder.path("/activities").queryParam("activityId", "{activityId}");
return uriBuilder.path(ACTIVITIES_PATH).queryParam(ACTIVITY_ID_PARAM, ACTIVITY_ID_TEMPLATE);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@

package dev.learning.xapi.client;

import static dev.learning.xapi.client.XapiClientConstants.ATTACHMENTS_PARAM;
import static dev.learning.xapi.client.XapiClientConstants.STATEMENTS_PATH;

import dev.learning.xapi.model.StatementFormat;
import java.util.Map;
import java.util.Optional;
Expand Down Expand Up @@ -41,10 +44,10 @@ public HttpMethod getMethod() {
public UriBuilder url(UriBuilder uriBuilder, Map<String, Object> queryParams) {

return uriBuilder
.path("/statements")
.path(STATEMENTS_PATH)
.queryParam("statementId", id)
.queryParamIfPresent("format", Optional.ofNullable(format))
.queryParamIfPresent("attachments", Optional.ofNullable(attachments));
.queryParamIfPresent(ATTACHMENTS_PARAM, Optional.ofNullable(attachments));
}

/** Builder for GetStatementRequest. */
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,11 @@

package dev.learning.xapi.client;

import static dev.learning.xapi.client.XapiClientConstants.AGENT_PARAM;
import static dev.learning.xapi.client.XapiClientConstants.AGENT_TEMPLATE;
import static dev.learning.xapi.client.XapiClientConstants.ATTACHMENTS_PARAM;
import static dev.learning.xapi.client.XapiClientConstants.STATEMENTS_PATH;

import com.fasterxml.jackson.databind.ObjectMapper;
import dev.learning.xapi.model.Agent;
import dev.learning.xapi.model.StatementFormat;
Expand Down Expand Up @@ -68,11 +73,11 @@ public UriBuilder url(UriBuilder uriBuilder, Map<String, Object> queryParams) {

// All queryParams are optional

uriBuilder.path("/statements");
uriBuilder.path(STATEMENTS_PATH);

if (agent != null) {
queryParams.put("agent", agentToJsonString());
uriBuilder.queryParam("agent", "{agent}");
queryParams.put(AGENT_PARAM, agentToJsonString());
uriBuilder.queryParam(AGENT_PARAM, AGENT_TEMPLATE);
}

if (verb != null) {
Expand Down Expand Up @@ -101,7 +106,7 @@ public UriBuilder url(UriBuilder uriBuilder, Map<String, Object> queryParams) {
.queryParamIfPresent("related_agents", Optional.ofNullable(relatedAgents))
.queryParamIfPresent("limit", Optional.ofNullable(limit))
.queryParamIfPresent("format", Optional.ofNullable(format))
.queryParamIfPresent("attachments", Optional.ofNullable(attachments))
.queryParamIfPresent(ATTACHMENTS_PARAM, Optional.ofNullable(attachments))
.queryParamIfPresent("ascending", Optional.ofNullable(ascending));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@

package dev.learning.xapi.client;

import static dev.learning.xapi.client.XapiClientConstants.ATTACHMENTS_PARAM;
import static dev.learning.xapi.client.XapiClientConstants.STATEMENTS_PATH;

import java.util.Map;
import java.util.Optional;
import java.util.UUID;
Expand All @@ -28,10 +31,10 @@ public class GetVoidedStatementRequest extends GetStatementRequest {
public UriBuilder url(UriBuilder uriBuilder, Map<String, Object> queryParams) {

return uriBuilder
.path("/statements")
.path(STATEMENTS_PATH)
.queryParam("voidedStatementId", id)
.queryParamIfPresent("format", Optional.ofNullable(format))
.queryParamIfPresent("attachments", Optional.ofNullable(attachments));
.queryParamIfPresent(ATTACHMENTS_PARAM, Optional.ofNullable(attachments));
}

/** Builder for GetVoidedStatementRequest. */
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@

package dev.learning.xapi.client;

import static dev.learning.xapi.client.XapiClientConstants.STATEMENTS_PATH;

import dev.learning.xapi.model.Statement;
import java.security.PrivateKey;
import java.util.Map;
Expand Down Expand Up @@ -35,7 +37,7 @@ public HttpMethod getMethod() {
@Override
public UriBuilder url(UriBuilder uriBuilder, Map<String, Object> queryParams) {

return uriBuilder.path("/statements");
return uriBuilder.path(STATEMENTS_PATH);
}

/** Builder for PostStatementRequest. */
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@

package dev.learning.xapi.client;

import static dev.learning.xapi.client.XapiClientConstants.STATEMENTS_PATH;

import dev.learning.xapi.model.Statement;
import java.util.Arrays;
import java.util.List;
Expand Down Expand Up @@ -35,7 +37,7 @@ public HttpMethod getMethod() {
@Override
public UriBuilder url(UriBuilder uriBuilder, Map<String, Object> queryParams) {

return uriBuilder.path("/statements");
return uriBuilder.path(STATEMENTS_PATH);
}

/** Builder for PostStatementsRequest. */
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,13 @@

package dev.learning.xapi.client;

import static dev.learning.xapi.client.XapiClientConstants.ACTIVITIES_STATE_PATH;
import static dev.learning.xapi.client.XapiClientConstants.ACTIVITY_ID_PARAM;
import static dev.learning.xapi.client.XapiClientConstants.ACTIVITY_ID_TEMPLATE;
import static dev.learning.xapi.client.XapiClientConstants.AGENT_PARAM;
import static dev.learning.xapi.client.XapiClientConstants.AGENT_TEMPLATE;
import static dev.learning.xapi.client.XapiClientConstants.REGISTRATION_PARAM;

import com.fasterxml.jackson.databind.ObjectMapper;
import dev.learning.xapi.model.Agent;
import java.net.URI;
Expand Down Expand Up @@ -43,14 +50,14 @@ abstract class StatesRequest implements Request {
@Override
public UriBuilder url(UriBuilder uriBuilder, Map<String, Object> queryParams) {

queryParams.put("activityId", activityId);
queryParams.put("agent", agentToJsonString());
queryParams.put(ACTIVITY_ID_PARAM, activityId);
queryParams.put(AGENT_PARAM, agentToJsonString());

return uriBuilder
.path("/activities/state")
.queryParam("activityId", "{activityId}")
.queryParam("agent", "{agent}")
.queryParamIfPresent("registration", Optional.ofNullable(registration));
.path(ACTIVITIES_STATE_PATH)
.queryParam(ACTIVITY_ID_PARAM, ACTIVITY_ID_TEMPLATE)
.queryParam(AGENT_PARAM, AGENT_TEMPLATE)
.queryParamIfPresent(REGISTRATION_PARAM, Optional.ofNullable(registration));
}

// Exception in write value as string should be impossible.
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
/*
* Copyright 2016-2025 Berry Cloud Ltd. All rights reserved.
*/

package dev.learning.xapi.client;

/**
* Constants used across xAPI client request classes.
*
* @author István Rátkai (Selindek)
*/
final class XapiClientConstants {

/** Query parameter name for activityId. */
static final String ACTIVITY_ID_PARAM = "activityId";

/** URI template variable for activityId. */
static final String ACTIVITY_ID_TEMPLATE = "{activityId}";

/** Query parameter name for profileId. */
static final String PROFILE_ID_PARAM = "profileId";

/** URI template variable for profileId. */
static final String PROFILE_ID_TEMPLATE = "{profileId}";

/** Path segment for statements resource. */
static final String STATEMENTS_PATH = "/statements";

/** Path segment for activities resource. */
static final String ACTIVITIES_PATH = "/activities";

/** Path segment for activities profile resource. */
static final String ACTIVITIES_PROFILE_PATH = "/activities/profile";

/** Path segment for activities state resource. */
static final String ACTIVITIES_STATE_PATH = "/activities/state";

/** Path segment for agents profile resource. */
static final String AGENTS_PROFILE_PATH = "/agents/profile";

/** Query parameter name for agent. */
static final String AGENT_PARAM = "agent";

/** URI template variable for agent. */
static final String AGENT_TEMPLATE = "{agent}";

/** Query parameter name for registration. */
static final String REGISTRATION_PARAM = "registration";

/** Query parameter name for stateId. */
static final String STATE_ID_PARAM = "stateId";

/** URI template variable for stateId. */
static final String STATE_ID_TEMPLATE = "{stateId}";

/** Query parameter name for attachments. */
static final String ATTACHMENTS_PARAM = "attachments";

private XapiClientConstants() {
// Private constructor to prevent instantiation
}
}
Loading