Re-authorize if token has expired.

This commit is contained in:
Matthew Messinger 2018-07-28 01:47:16 -04:00
parent c60cd9dae6
commit 74fef1a240

View file

@ -74,24 +74,40 @@ public class ValhallaSkinServer implements SkinServer {
try (CloseableHttpClient client = HttpClients.createSystem()) { try (CloseableHttpClient client = HttpClients.createSystem()) {
authorize(client, session); authorize(client, session);
GameProfile profile = session.getProfile(); try {
return upload(client, session, image, type, metadata);
if (image == null) { } catch (IOException e) {
return resetSkin(client, profile, type); if (e.getMessage().equals("Authorization failed")) {
} accessToken = null;
switch (image.getScheme()) { authorize(client, session);
case "file": return upload(client, session, image, type, metadata);
return uploadFile(client, new File(image), profile, type, metadata); }
case "http": throw e;
case "https":
return uploadUrl(client, image, profile, type, metadata);
default:
throw new IOException("Unsupported URI scheme: " + image.getScheme());
} }
} }
}, HDSkinManager.skinUploadExecutor); }, HDSkinManager.skinUploadExecutor);
} }
private SkinUploadResponse upload(CloseableHttpClient client, Session session, @Nullable URI image,
MinecraftProfileTexture.Type type, Map<String, String> metadata)
throws IOException {
GameProfile profile = session.getProfile();
if (image == null) {
return resetSkin(client, profile, type);
}
switch (image.getScheme()) {
case "file":
return uploadFile(client, new File(image), profile, type, metadata);
case "http":
case "https":
return uploadUrl(client, image, profile, type, metadata);
default:
throw new IOException("Unsupported URI scheme: " + image.getScheme());
}
}
private SkinUploadResponse resetSkin(CloseableHttpClient client, GameProfile profile, MinecraftProfileTexture.Type type) throws IOException { private SkinUploadResponse resetSkin(CloseableHttpClient client, GameProfile profile, MinecraftProfileTexture.Type type) throws IOException {
return upload(client, RequestBuilder.delete() return upload(client, RequestBuilder.delete()
.setUri(buildUserTextureUri(profile, type)) .setUri(buildUserTextureUri(profile, type))