[allnet] Add support for v2 power on response

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

View File

@ -1,54 +1,8 @@
package icu.samnyan.aqua.sega.allnet.model.response; package icu.samnyan.aqua.sega.allnet.model.response;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/** /**
* @author samnyan (privateamusement@protonmail.com) * @author samnyan (privateamusement@protonmail.com)
*/ */
@Data public interface PowerOnResponse {
@NoArgsConstructor String toString();
@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;
}
} }

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;
}
}