[allnet] Add support for v2 power on response

master
samnyan 2020-12-14 17:02:44 +08:00
parent be5d241565
commit b3a8e80399
4 changed files with 171 additions and 70 deletions

View File

@ -2,6 +2,8 @@ package icu.samnyan.aqua.sega.allnet;
import com.fasterxml.jackson.databind.ObjectMapper;
import icu.samnyan.aqua.sega.allnet.model.response.PowerOnResponse;
import icu.samnyan.aqua.sega.allnet.model.response.PowerOnResponseV2;
import icu.samnyan.aqua.sega.allnet.model.response.PowerOnResponseV3;
import icu.samnyan.aqua.sega.allnet.util.Decoder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -13,6 +15,7 @@ import org.springframework.web.bind.annotation.RestController;
import java.io.IOException;
import java.io.InputStream;
import java.time.Instant;
import java.time.LocalDateTime;
import java.util.Map;
import java.util.zip.DataFormatException;
@ -24,6 +27,7 @@ public class AllNetController {
private static final Logger logger = LoggerFactory.getLogger(AllNetController.class);
private final ObjectMapper mapper = new ObjectMapper();
private final String HOST;
private final String PORT;
@ -53,27 +57,56 @@ public class AllNetController {
// TODO: Verify KeyChip id
String gameId = reqMap.getOrDefault("game_id", "");
PowerOnResponse resp = new PowerOnResponse(
1,
switchUri(gameId),
switchHost(gameId),
"123",
"",
"",
"1",
"W",
"X",
"Y",
"Z",
"JPN",
"456",
"+0900",
Instant.now().toString().substring(0, 19).concat("Z"),
"",
"3",
reqMap.get("token")
);
logger.info("Response: " + new ObjectMapper().writeValueAsString(resp));
String format_ver = reqMap.getOrDefault("format_ver", "");
PowerOnResponse resp;
if (format_ver.startsWith("2")) {
var now = LocalDateTime.now();
resp = new PowerOnResponseV2(
1,
switchUri(gameId),
switchHost(gameId),
"123",
"",
"",
"1",
"W",
"X",
"Y",
"Z",
"JPN",
now.getYear(),
now.getMonth().getValue(),
now.getDayOfMonth(),
now.getHour(),
now.getMinute(),
now.getSecond(),
"1",
"+09:00",
"PowerOnResponseV2"
);
} else {
resp = new PowerOnResponseV3(
1,
switchUri(gameId),
switchHost(gameId),
"123",
"",
"",
"1",
"W",
"X",
"Y",
"Z",
"JPN",
"456",
"+0900",
Instant.now().toString().substring(0, 19).concat("Z"),
"",
"3",
reqMap.get("token")
);
}
logger.info("Response: " + mapper.writeValueAsString(resp));
return resp.toString().concat("\n");
}

View File

@ -1,54 +1,8 @@
package icu.samnyan.aqua.sega.allnet.model.response;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class PowerOnResponse {
private int stat;
private String uri;
private String host;
private String place_id;
private String name;
private String nickname;
private String region0;
private String region_name0;
private String region_name1;
private String region_name2;
private String region_name3;
private String country;
private String allnet_id;
private String client_timezone;
private String utc_time;
private String setting;
private String res_ver;
private String token;
@Override
public String toString() {
return "stat=" + stat +
"&uri=" + uri +
"&host=" + host +
"&place_id=" + place_id +
"&name=" + name +
"&nickname=" + nickname +
"&region0=" + region0 +
"&region_name0=" + region_name0 +
"&region_name1=" + region_name1 +
"&region_name2=" + region_name2 +
"&region_name3=" + region_name3 +
"&country=" + country +
"&allnet_id=" + allnet_id +
"&client_timezone=" + client_timezone +
"&utc_time=" + utc_time +
"&setting=" + setting +
"&res_ver=" + res_ver +
"&token=" + token;
}
}
public interface PowerOnResponse {
String toString();
}

View File

@ -0,0 +1,60 @@
package icu.samnyan.aqua.sega.allnet.model.response;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class PowerOnResponseV2 implements PowerOnResponse {
private int stat;
private String uri;
private String host;
private String place_id;
private String name;
private String nickname;
private String region0;
private String region_name0;
private String region_name1;
private String region_name2;
private String region_name3;
private String country;
private int year;
private int month;
private int day;
private int hour;
private int minute;
private int second;
private String setting;
private String timezone;
private String res_class;
@Override
public String toString() {
return "stat=" + stat +
"&uri=" + uri +
"&host=" + host +
"&place_id=" + place_id +
"&name=" + name +
"&nickname=" + nickname +
"&region0=" + region0 +
"&region_name0=" + region_name0 +
"&region_name1=" + region_name1 +
"&region_name2=" + region_name2 +
"&region_name3=" + region_name3 +
"&country=" + country +
"&year=" + year +
"&month=" + month +
"&day=" + day +
"&hour=" + hour +
"&minute=" + minute +
"&second=" + second +
"&setting=" + setting +
"&timezone=" + timezone +
"&res_class=PowerOnResponseV2";
}
}

View File

@ -0,0 +1,54 @@
package icu.samnyan.aqua.sega.allnet.model.response;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class PowerOnResponseV3 implements PowerOnResponse {
private int stat;
private String uri;
private String host;
private String place_id;
private String name;
private String nickname;
private String region0;
private String region_name0;
private String region_name1;
private String region_name2;
private String region_name3;
private String country;
private String allnet_id;
private String client_timezone;
private String utc_time;
private String setting;
private String res_ver;
private String token;
@Override
public String toString() {
return "stat=" + stat +
"&uri=" + uri +
"&host=" + host +
"&place_id=" + place_id +
"&name=" + name +
"&nickname=" + nickname +
"&region0=" + region0 +
"&region_name0=" + region_name0 +
"&region_name1=" + region_name1 +
"&region_name2=" + region_name2 +
"&region_name3=" + region_name3 +
"&country=" + country +
"&allnet_id=" + allnet_id +
"&client_timezone=" + client_timezone +
"&utc_time=" + utc_time +
"&setting=" + setting +
"&res_ver=" + res_ver +
"&token=" + token;
}
}