changePassword function
Changes the currentPassword to the new newPassword. This requires a valid
accessToken and will throw a ArgumentError if it is not.
Be careful to what values you pass into newPassword, as the accessToken will
get invalidated and you will need it to log into your account again.
Implementation
Future<bool> changePassword(
String currentPassword, String newPassword, AccessToken accessToken) async {
if (currentPassword.isEmpty) {
throw ArgumentError.value(currentPassword, 'currentPassword',
'The current password cannot be empty.');
} else if (newPassword.isEmpty) {
throw ArgumentError.value(
newPassword, 'newPassword', 'The new password cannot be empty.');
}
final payload = {
'authorization': accessToken,
'content-type': 'application/json'
};
final response =
await requestBody(http.put, _mojangApi, 'users/password', payload);
switch (response.statusCode) {
case 400:
{
final map = parseResponseMap(response);
if (map['error'] == 'IllegalArgumentException') {
throw ArgumentError.value(
currentPassword, 'currentPassword', map['errorMessage']);
}
return false;
}
case 401:
{
final map = parseResponseMap(response);
throw ArgumentError.value(
accessToken, 'accessToken', map['errorMessage']);
}
}
return response.statusCode == 204;
}