Skip to content

Commit 9240dc0

Browse files
committed
Update depends and add error handling
1 parent 8e50b22 commit 9240dc0

15 files changed

+70
-15
lines changed

build.gradle

+4-4
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,13 @@ sourceCompatibility = '17'
1111
repositories {
1212
mavenCentral()
1313
maven {
14-
url "https://repo.opencollab.dev/maven-releases/"
14+
url "https://repo.opencollab.dev/main/"
1515
}
1616
maven {
17-
url "https://repo.opencollab.dev/maven-snapshots/"
17+
url 'https://jitpack.io'
1818
}
1919
maven {
20-
url 'https://jitpack.io'
20+
url 'https://oss.sonatype.org/content/repositories/snapshots'
2121
}
2222
}
2323

@@ -29,7 +29,7 @@ dependencies {
2929
implementation 'com.github.ben-manes.caffeine:caffeine:3.1.2'
3030

3131
implementation 'com.nukkitx.protocol:bedrock-common:2.9.4'
32-
implementation 'com.github.lucaazalim:minecraft-server-ping:bc970c5'
32+
implementation 'com.github.lucaazalim:minecraft-server-ping:46ea98b7c6'
3333
}
3434

3535
tasks.named('test') {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package org.geysermc.serverpingapi;
2+
3+
import org.geysermc.serverpingapi.models.ErrorResponse;
4+
import org.springframework.http.HttpStatus;
5+
import org.springframework.http.ResponseEntity;
6+
import org.springframework.web.bind.annotation.ControllerAdvice;
7+
import org.springframework.web.bind.annotation.ExceptionHandler;
8+
import org.springframework.web.servlet.NoHandlerFoundException;
9+
10+
@ControllerAdvice
11+
public class ResponseExceptionHandler {
12+
@ExceptionHandler(NoHandlerFoundException.class)
13+
public ResponseEntity<ErrorResponse> endpointNotFound(final NoHandlerFoundException exception) {
14+
return this.error(HttpStatus.NOT_FOUND, "Endpoint not found.");
15+
}
16+
17+
@ExceptionHandler(Exception.class)
18+
public ResponseEntity<ErrorResponse> exception(final Exception exception) {
19+
return this.error(HttpStatus.INTERNAL_SERVER_ERROR, exception.getMessage());
20+
}
21+
22+
private ResponseEntity<ErrorResponse> error(final HttpStatus status, final String error) {
23+
return new ResponseEntity<>(
24+
new ErrorResponse(error),
25+
status
26+
);
27+
}
28+
}

src/main/java/org/geysermc/serverpingapi/HealthController.java src/main/java/org/geysermc/serverpingapi/controllers/HealthController.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.geysermc.serverpingapi;
1+
package org.geysermc.serverpingapi.controllers;
22

33
import jakarta.servlet.http.HttpServletResponse;
44
import org.springframework.web.bind.annotation.GetMapping;

src/main/java/org/geysermc/serverpingapi/PingController.java src/main/java/org/geysermc/serverpingapi/controllers/PingController.java

+6-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
1-
package org.geysermc.serverpingapi;
1+
package org.geysermc.serverpingapi.controllers;
22

33
import jakarta.servlet.http.HttpServletRequest;
4+
import org.geysermc.serverpingapi.services.PingService;
5+
import org.geysermc.serverpingapi.models.CacheData;
6+
import org.geysermc.serverpingapi.models.PingCached;
7+
import org.geysermc.serverpingapi.models.PingResponse;
8+
import org.geysermc.serverpingapi.models.QueryData;
49
import org.springframework.beans.factory.annotation.Autowired;
510
import org.springframework.http.HttpStatus;
611
import org.springframework.http.ResponseEntity;

src/main/java/org/geysermc/serverpingapi/CacheData.java src/main/java/org/geysermc/serverpingapi/models/CacheData.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.geysermc.serverpingapi;
1+
package org.geysermc.serverpingapi.models;
22

33
import java.time.Instant;
44

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package org.geysermc.serverpingapi.models;
2+
3+
public record ErrorResponse(String error) {
4+
}

src/main/java/org/geysermc/serverpingapi/PingCached.java src/main/java/org/geysermc/serverpingapi/models/PingCached.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.geysermc.serverpingapi;
1+
package org.geysermc.serverpingapi.models;
22

33
import java.time.Instant;
44

src/main/java/org/geysermc/serverpingapi/PingData.java src/main/java/org/geysermc/serverpingapi/models/PingData.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.geysermc.serverpingapi;
1+
package org.geysermc.serverpingapi.models;
22

33
import com.nukkitx.protocol.bedrock.BedrockPong;
44

src/main/java/org/geysermc/serverpingapi/PingDataCached.java src/main/java/org/geysermc/serverpingapi/models/PingDataCached.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.geysermc.serverpingapi;
1+
package org.geysermc.serverpingapi.models;
22

33
import java.time.Instant;
44

src/main/java/org/geysermc/serverpingapi/PingResponse.java src/main/java/org/geysermc/serverpingapi/models/PingResponse.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.geysermc.serverpingapi;
1+
package org.geysermc.serverpingapi.models;
22

33
public record PingResponse(boolean success, String message, QueryData query, PingData ping, CacheData cache) {
44
public PingResponse(boolean success, String message) {
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.geysermc.serverpingapi;
1+
package org.geysermc.serverpingapi.models;
22

33
public record QueryData(String hostname, String ip, int port) {
44
}

src/main/java/org/geysermc/serverpingapi/UnsuccessfulPingCached.java src/main/java/org/geysermc/serverpingapi/models/UnsuccessfulPingCached.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.geysermc.serverpingapi;
1+
package org.geysermc.serverpingapi.models;
22

33
import java.time.Instant;
44

src/main/java/org/geysermc/serverpingapi/PingService.java src/main/java/org/geysermc/serverpingapi/services/PingService.java

+7-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,15 @@
1-
package org.geysermc.serverpingapi;
1+
package org.geysermc.serverpingapi.services;
22

33
import br.com.azalim.mcserverping.MCPing;
44
import br.com.azalim.mcserverping.MCPingOptions;
55
import com.nukkitx.protocol.bedrock.BedrockClient;
66
import com.nukkitx.protocol.bedrock.BedrockPong;
7+
import org.geysermc.serverpingapi.controllers.PingController;
8+
import org.geysermc.serverpingapi.models.PingCached;
9+
import org.geysermc.serverpingapi.models.PingData;
10+
import org.geysermc.serverpingapi.models.PingDataCached;
11+
import org.geysermc.serverpingapi.models.QueryData;
12+
import org.geysermc.serverpingapi.models.UnsuccessfulPingCached;
713
import org.slf4j.Logger;
814
import org.slf4j.LoggerFactory;
915
import org.springframework.cache.annotation.Cacheable;
@@ -58,7 +64,6 @@ private PingData getPingInner(QueryData queryData, boolean firstPing) throws Exc
5864
}
5965
}
6066

61-
6267
private void tcpPing(String hostname, int port) {
6368
// TODO: Check if we can just make a connection so we dont have to do a full ping
6469
MCPingOptions options = MCPingOptions.builder()

src/main/resources/application.yaml

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
spring:
2+
mvc:
3+
throw-exception-if-no-handler-found: true
4+
web:
5+
resources:
6+
add-mappings: false
7+
8+
server:
9+
error:
10+
whitelabel:
11+
enabled: false

src/test/java/org/geysermc/serverpingapi/PingControllerTest.java

+2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import static org.assertj.core.api.Assertions.assertThat;
44

5+
import org.geysermc.serverpingapi.controllers.PingController;
6+
import org.geysermc.serverpingapi.models.PingResponse;
57
import org.junit.jupiter.api.Test;
68

79
import org.springframework.beans.factory.annotation.Autowired;

0 commit comments

Comments
 (0)