use of com.github.games647.craftapi.model.skin.SkinProperty in project CraftAPI by games647.
the class AbstractResolverTest method decodeSkinSlim.
@Test
public void decodeSkinSlim() throws Exception {
SkinProperty property = new SkinProperty(SkinPropertyTest.SLIM_VALUE, SkinPropertyTest.SLIM_SIGNATURE);
Skin skin = resolver.decodeSkin(property);
assertThat(skin.getSignature(), is(hexStringToByteArray(SLIM_SIGNATURE)));
assertThat(skin.getTimeFetched(), is(Instant.ofEpochMilli(1519552798232L)));
assertThat(skin.getOwnerId(), is(UUIDAdapter.parseId("78c3a4e837e448189df8f9ce61c5efcc")));
assertThat(skin.getOwnerName(), is("F0ggyMonst3r"));
Texture skinTexture = skin.getTexture(Type.SKIN).get();
assertThat(skinTexture.getHash(), is("52847ba3eb656e7ac69f2af9cec58d4ec2f5a2ea7e18968c97907e87efa9cc4"));
assertThat(skinTexture.getArmModel().orElse(null), is(Model.SLIM));
}
use of com.github.games647.craftapi.model.skin.SkinProperty in project CraftAPI by games647.
the class AbstractResolverTest method encodeSkinCape.
@Test
public void encodeSkinCape() throws Exception {
Skin skin = new Skin(Instant.ofEpochMilli(1520277572322L), UUIDAdapter.parseId("61699b2ed3274a019f1e0ea8c3f06bc6"), "Dinnerbone", "cd6be915b261643fd13621ee4e99c9e541a551d80272687a3b56183b981fb9a", Model.SQUARE, "eec3cabfaeed5dafe61c6546297e853a547c39ec238d7c44bf4eb4a49dc1f2c0");
skin.setSignature(hexStringToByteArray(CAPE_SIGNATURE));
SkinProperty property = resolver.encodeSkin(skin);
assertThat(property.getValue(), is(SkinPropertyTest.CAPE_VALUE));
assertThat(property.getSignature(), is(SkinPropertyTest.CAPE_SIGNATURE));
}
use of com.github.games647.craftapi.model.skin.SkinProperty in project CraftAPI by games647.
the class AbstractResolverTest method decodeSkinSteve.
@Test
public void decodeSkinSteve() throws Exception {
SkinProperty property = new SkinProperty(SkinPropertyTest.STEVE_VALUE, SkinPropertyTest.STEVE_SIGNATURE);
Skin skin = resolver.decodeSkin(property);
assertThat(skin.getSignature(), is(hexStringToByteArray(STEVE_SIGNATURE)));
assertThat(skin.getTimeFetched(), is(Instant.ofEpochMilli(1517052435668L)));
assertThat(skin.getOwnerId(), is(UUIDAdapter.parseId("0aaa2c13922a411bb6559b8c08404695")));
assertThat(skin.getOwnerName(), is("games647"));
Texture skinTexture = skin.getTexture(Type.SKIN).get();
assertThat(skinTexture.getHash(), is("a2e6a3f8caea7913ab48237beea6d6a1a6f76936e3b71af4c7a08bb61c7870"));
assertThat(skinTexture.getArmModel().orElse(null), is(Model.SQUARE));
}
use of com.github.games647.craftapi.model.skin.SkinProperty in project CraftAPI by games647.
the class AbstractResolver method decodeSkin.
/**
* Decodes the property from a skin request.
*
* @param property Base64 encoded skin property
* @return decoded model
*/
public Skin decodeSkin(SkinProperty property) {
byte[] data = Base64.getDecoder().decode(property.getValue());
String json = new String(data, StandardCharsets.UTF_8);
Skin skinModel = gson.fromJson(json, Skin.class);
skinModel.setSignature(Base64.getDecoder().decode(property.getSignature()));
return skinModel;
}
use of com.github.games647.craftapi.model.skin.SkinProperty in project CraftAPI by games647.
the class MojangResolver method downloadSkin.
@Override
public Optional<SkinProperty> downloadSkin(UUID uuid) throws IOException, RateLimitException {
Optional<SkinProperty> optSkin = cache.getSkin(uuid);
if (optSkin.isPresent()) {
return optSkin;
}
String url = String.format(SKIN_URL, UUIDAdapter.toMojangId(uuid));
HttpURLConnection conn = getConnection(url);
int responseCode = conn.getResponseCode();
if (responseCode == RateLimitException.RATE_LIMIT_RESPONSE_CODE) {
discard(conn);
throw new RateLimitException();
}
if (responseCode == HttpURLConnection.HTTP_NO_CONTENT) {
return Optional.empty();
}
Textures texturesModel = parseRequest(conn, in -> readJson(in, Textures.class));
SkinProperty property = texturesModel.getProperties()[0];
cache.addSkin(uuid, property);
return Optional.of(property);
}
Aggregations