Skip to content

Commit e2eae6e

Browse files
committed
Fix GenericFilter parsing with server names
1 parent 348b4da commit e2eae6e

5 files changed

Lines changed: 18 additions & 14 deletions

File tree

Plan/common/src/main/java/com/djrapitops/plan/delivery/domain/datatransfer/GenericFilter.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import com.djrapitops.plan.utilities.dev.Untrusted;
2222
import com.djrapitops.plan.utilities.java.CatchingParsers;
2323
import org.apache.commons.lang3.StringUtils;
24+
import org.jspecify.annotations.NonNull;
2425
import org.jspecify.annotations.Nullable;
2526

2627
import java.util.*;
@@ -58,10 +59,6 @@ public GenericFilter(@Untrusted URIQuery query) {
5859
playerUUID = query.get("player", CatchingParsers::parsePlayerUUID).orElse(null);
5960
}
6061

61-
public static GenericFilter of(@Untrusted URIQuery query) {
62-
return new GenericFilter(query);
63-
}
64-
6562
public Long getAfter() {
6663
return after != null ? after : 0L;
6764
}
@@ -82,7 +79,7 @@ public boolean contains(ServerUUID serverUUID) {
8279
return serverUUIDs.isEmpty() || serverUUIDs.contains(serverUUID);
8380
}
8481

85-
public @Untrusted List<String> getServerIdentifiers() {
82+
public @NonNull @Untrusted List<String> getServerIdentifiers() {
8683
return serverIdentifiers;
8784
}
8885

Plan/common/src/main/java/com/djrapitops/plan/delivery/webserver/resolver/json/SessionsJSONResolver.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -108,10 +108,7 @@ public Optional<Response> resolve(Request request) {
108108
}
109109

110110
private Response getResponse(Request request) {
111-
GenericFilter filter = GenericFilter.of(request.getQuery());
112-
if (!filter.didAllServerIdentifiersParse()) {
113-
filter.setServerUUIDs(identifiers.getServerUUIDs(filter.getServerIdentifiers()));
114-
}
111+
GenericFilter filter = identifiers.genericFilter(request.getQuery());
115112

116113
@Untrusted Optional<ETag> tag = Identifiers.getEtag(request);
117114
Long etag = tag.map(eTag -> eTag.parseAsLong()

Plan/common/src/main/java/com/djrapitops/plan/delivery/webserver/resolver/json/query/DataPointJSONResolver.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,12 +55,13 @@
5555
@Path("/v1/datapoint")
5656
public class DataPointJSONResolver implements Resolver {
5757

58+
private final Identifiers identifiers;
5859
private final DatapointStore datapointStore;
5960
private final Formatter<Long> httpLastModifiedFormatter;
6061

61-
6262
@Inject
63-
public DataPointJSONResolver(DatapointStore datapointStore, Formatters formatters) {
63+
public DataPointJSONResolver(Identifiers identifiers, DatapointStore datapointStore, Formatters formatters) {
64+
this.identifiers = identifiers;
6465
this.datapointStore = datapointStore;
6566
this.httpLastModifiedFormatter = formatters.httpLastModifiedLong();
6667
}
@@ -71,7 +72,7 @@ public boolean canAccess(Request request) {
7172
if (user.isEmpty()) return false;
7273
DatapointType type = request.getQuery().get("type", DatapointType::find)
7374
.orElseThrow(() -> new BadRequestException("type is required"));
74-
GenericFilter filter = GenericFilter.of(request.getQuery());
75+
GenericFilter filter = identifiers.genericFilter(request.getQuery());
7576

7677
Optional<WebPermission> permission = datapointStore.getPermission(type, filter);
7778
if (permission.isEmpty()) return false;
@@ -108,7 +109,7 @@ public boolean canAccess(Request request) {
108109
public Optional<Response> resolve(Request request) {
109110
DatapointType type = request.getQuery().get("type", DatapointType::find)
110111
.orElseThrow(() -> new BadRequestException("type is required"));
111-
GenericFilter filter = GenericFilter.of(request.getQuery());
112+
GenericFilter filter = identifiers.genericFilter(request.getQuery());
112113
@Untrusted Optional<ETag> tag = Identifiers.getEtag(request);
113114
Long etag = tag.map(eTag -> eTag.parseAsLong()
114115
.orElseThrow(() -> new BadRequestException("If-Modified-Since should be a 64bit number")))

Plan/common/src/main/java/com/djrapitops/plan/identification/Identifiers.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,10 @@
1616
*/
1717
package com.djrapitops.plan.identification;
1818

19+
import com.djrapitops.plan.delivery.domain.datatransfer.GenericFilter;
1920
import com.djrapitops.plan.delivery.web.resolver.exception.BadRequestException;
2021
import com.djrapitops.plan.delivery.web.resolver.request.Request;
22+
import com.djrapitops.plan.delivery.web.resolver.request.URIQuery;
2123
import com.djrapitops.plan.delivery.webserver.resolver.ETag;
2224
import com.djrapitops.plan.storage.database.DBSystem;
2325
import com.djrapitops.plan.storage.database.queries.objects.ServerQueries;
@@ -153,4 +155,12 @@ public List<ServerUUID> getServerUUIDs(@Untrusted List<String> serverIdentifiers
153155
}
154156
return serverUUIDs;
155157
}
158+
159+
public GenericFilter genericFilter(@Untrusted URIQuery query) {
160+
GenericFilter filter = new GenericFilter(query);
161+
if (!filter.didAllServerIdentifiersParse()) {
162+
filter.setServerUUIDs(getServerUUIDs(filter.getServerIdentifiers()));
163+
}
164+
return filter;
165+
}
156166
}

Plan/react/dashboard/src/views/server/ServerOverview.jsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ const Last7DaysCard = ({data}) => {
3434
const {t} = useTranslation();
3535
const {identifier} = useParams();
3636

37-
3837
const {error} = useDatapointQuery(true, DatapointType.TPS_AVERAGE, {server: identifier, afterMillisAgo: MS_WEEK})
3938
const noData = error?.status === 404
4039

0 commit comments

Comments
 (0)