Skip to content

Commit 930cfcc

Browse files
committed
add Sumemo functions
1 parent 009ce1b commit 930cfcc

3 files changed

Lines changed: 387 additions & 10 deletions

File tree

.idea/workspace.xml

Lines changed: 14 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,139 @@
1+
package com.phantoms.phantomsbackend.common.utils;
2+
3+
import okhttp3.*;
4+
import com.alibaba.fastjson.JSONArray;
5+
import com.alibaba.fastjson.JSONObject;
6+
import org.springframework.stereotype.Component;
7+
8+
import java.io.IOException;
9+
import java.util.Collections;
10+
import java.util.List;
11+
import java.util.concurrent.TimeUnit;
12+
import java.util.logging.Level;
13+
import java.util.logging.Logger;
14+
15+
@Component
16+
public class SumemoUtils {
17+
18+
private static final Logger logger = Logger.getLogger(SumemoUtils.class.getName());
19+
private static final String BASE_URL = "https://api.sumemo.dev/";
20+
private static final String USER_AGENT = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36";
21+
22+
private static final OkHttpClient client;
23+
24+
static {
25+
client = new OkHttpClient.Builder()
26+
.connectTimeout(10, TimeUnit.SECONDS)
27+
.writeTimeout(10, TimeUnit.SECONDS)
28+
.readTimeout(30, TimeUnit.SECONDS)
29+
.build();
30+
}
31+
32+
/**
33+
* 获取玩家特定副本的最佳攻略信息
34+
* @param playerName 玩家名称
35+
* @param serverName 服务器名称
36+
* @param zoneId 副本ID
37+
* @return 最佳攻略信息
38+
*/
39+
public static JSONObject getPlayerBestDuty(String playerName, String serverName, int zoneId) throws IOException {
40+
String formattedName = String.format("%s@%s", playerName, serverName);
41+
HttpUrl url = HttpUrl.parse(BASE_URL + "member/" + formattedName + "/" + zoneId + "/best").newBuilder()
42+
.build();
43+
44+
Request request = new Request.Builder()
45+
.url(url)
46+
.header("User-Agent", USER_AGENT)
47+
.build();
48+
49+
try (Response response = client.newCall(request).execute()) {
50+
if (!response.isSuccessful()) {
51+
logger.log(Level.SEVERE, "Unexpected code {0} for getting player best duty", response.code());
52+
throw new IOException("Unexpected code " + response.code());
53+
}
54+
String responseBody = response.body().string();
55+
logger.log(Level.FINE, "Player best duty response: {0}", responseBody);
56+
return JSONObject.parseObject(responseBody);
57+
}
58+
}
59+
60+
/**
61+
* 获取玩家特定副本的最新攻略信息列表
62+
* @param playerName 玩家名称
63+
* @param serverName 服务器名称
64+
* @param zoneId 副本ID
65+
* @param limit 返回数量限制
66+
* @return 最新攻略信息列表
67+
*/
68+
public static JSONArray getPlayerLatestDuty(String playerName, String serverName, int zoneId, int limit) throws IOException {
69+
String formattedName = String.format("%s@%s", playerName, serverName);
70+
HttpUrl url = HttpUrl.parse(BASE_URL + "member/" + formattedName + "/" + zoneId + "/latest").newBuilder()
71+
.addQueryParameter("limit", String.valueOf(limit))
72+
.build();
73+
74+
Request request = new Request.Builder()
75+
.url(url)
76+
.header("User-Agent", USER_AGENT)
77+
.build();
78+
79+
try (Response response = client.newCall(request).execute()) {
80+
if (!response.isSuccessful()) {
81+
logger.log(Level.SEVERE, "Unexpected code {0} for getting player latest duty", response.code());
82+
throw new IOException("Unexpected code " + response.code());
83+
}
84+
String responseBody = response.body().string();
85+
logger.log(Level.FINE, "Player latest duty response: {0}", responseBody);
86+
return JSONArray.parseArray(responseBody);
87+
}
88+
}
89+
90+
/**
91+
* 获取副本信息
92+
* @param zoneId 副本ID
93+
* @return 副本信息
94+
*/
95+
public static JSONObject getDutyInfo(int zoneId) throws IOException {
96+
HttpUrl url = HttpUrl.parse(BASE_URL + "duty/" + zoneId).newBuilder()
97+
.build();
98+
99+
Request request = new Request.Builder()
100+
.url(url)
101+
.header("User-Agent", USER_AGENT)
102+
.build();
103+
104+
try (Response response = client.newCall(request).execute()) {
105+
if (!response.isSuccessful()) {
106+
logger.log(Level.SEVERE, "Unexpected code {0} for getting duty info", response.code());
107+
throw new IOException("Unexpected code " + response.code());
108+
}
109+
String responseBody = response.body().string();
110+
logger.log(Level.FINE, "Duty info response: {0}", responseBody);
111+
return JSONObject.parseObject(responseBody);
112+
}
113+
}
114+
115+
/**
116+
* 获取副本名称
117+
* @param zoneId 副本ID
118+
* @return 副本名称
119+
*/
120+
public static String getDutyName(int zoneId) throws IOException {
121+
HttpUrl url = HttpUrl.parse(BASE_URL + "duty/" + zoneId + "/name").newBuilder()
122+
.build();
123+
124+
Request request = new Request.Builder()
125+
.url(url)
126+
.header("User-Agent", USER_AGENT)
127+
.build();
128+
129+
try (Response response = client.newCall(request).execute()) {
130+
if (!response.isSuccessful()) {
131+
logger.log(Level.SEVERE, "Unexpected code {0} for getting duty name", response.code());
132+
throw new IOException("Unexpected code " + response.code());
133+
}
134+
String responseBody = response.body().string();
135+
JSONObject result = JSONObject.parseObject(responseBody);
136+
return result.getString("name");
137+
}
138+
}
139+
}

0 commit comments

Comments
 (0)