Skip to content

Commit f4498bb

Browse files
committed
feat: send connector version header
1 parent b898894 commit f4498bb

2 files changed

Lines changed: 58 additions & 1 deletion

File tree

core/src/main/java/com/minekube/connect/module/CommonModule.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
import com.minekube.connect.inject.CommonPlatformInjector;
4646
import com.minekube.connect.packet.PacketHandlersImpl;
4747
import com.minekube.connect.platform.util.PlatformUtils;
48+
import com.minekube.connect.util.Constants;
4849
import com.minekube.connect.util.HttpUtils;
4950
import com.minekube.connect.util.LanguageManager;
5051
import com.minekube.connect.util.Metrics;
@@ -139,6 +140,7 @@ public OkHttpClient connectOkHttpClient(
139140
.addHeader("Connect-TotalPlayers",
140141
String.valueOf(platformUtils.getPlayerCount()))
141142
.addHeader("Connect-Players", String.valueOf(api.getPlayerCount()))
143+
.addHeader("Connect-Version", Constants.VERSION)
142144
.addHeader("Connect-AuthType", platformUtils.authType().name())
143145
.addHeader("Connect-Platform", implementationName)
144146
.addHeader("Connect-Platform", platformUtils.serverImplementationName())
@@ -186,4 +188,3 @@ static String generate() {
186188
}
187189
}
188190
}
189-
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package com.minekube.connect.module;
2+
3+
import static org.junit.jupiter.api.Assertions.assertEquals;
4+
import static org.mockito.Mockito.mock;
5+
import static org.mockito.Mockito.when;
6+
7+
import com.minekube.connect.api.SimpleConnectApi;
8+
import com.minekube.connect.api.logger.ConnectLogger;
9+
import com.minekube.connect.platform.util.PlatformUtils;
10+
import com.minekube.connect.util.Constants;
11+
import java.nio.file.Path;
12+
import okhttp3.OkHttpClient;
13+
import okhttp3.Request;
14+
import okhttp3.Response;
15+
import okhttp3.mockwebserver.MockResponse;
16+
import okhttp3.mockwebserver.MockWebServer;
17+
import okhttp3.mockwebserver.RecordedRequest;
18+
import org.junit.jupiter.api.Test;
19+
import org.junit.jupiter.api.io.TempDir;
20+
21+
class CommonModuleTest {
22+
@TempDir Path tempDir;
23+
24+
@Test
25+
void connectHttpClientSendsPluginVersionHeader() throws Exception {
26+
CommonModule module = new CommonModule(tempDir);
27+
PlatformUtils platformUtils = mock(PlatformUtils.class);
28+
when(platformUtils.authType()).thenReturn(PlatformUtils.AuthType.ONLINE);
29+
when(platformUtils.serverImplementationName()).thenReturn("Paper");
30+
when(platformUtils.minecraftVersion()).thenReturn("1.21.11");
31+
when(platformUtils.getPlayerCount()).thenReturn(7);
32+
33+
OkHttpClient client = module.connectOkHttpClient(
34+
module.defaultOkHttpClient(),
35+
platformUtils,
36+
"spigot",
37+
new SimpleConnectApi(mock(ConnectLogger.class))
38+
);
39+
40+
try (MockWebServer server = new MockWebServer()) {
41+
server.enqueue(new MockResponse().setBody("ok"));
42+
server.start();
43+
44+
Request request = new Request.Builder()
45+
.url(server.url("/watch"))
46+
.build();
47+
try (Response ignored = client.newCall(request).execute()) {
48+
RecordedRequest recorded = server.takeRequest();
49+
50+
assertEquals(Constants.VERSION, recorded.getHeader("Connect-Version"));
51+
assertEquals("spigot", recorded.getHeader("Connect-Platform"));
52+
assertEquals("Paper", recorded.getHeaders().values("Connect-Platform").get(1));
53+
}
54+
}
55+
}
56+
}

0 commit comments

Comments
 (0)