From 67601262de34fe92cbfe39e8242a85ea1d07c230 Mon Sep 17 00:00:00 2001 From: Yahor Berdnikau Date: Tue, 25 Jul 2017 22:31:49 +0200 Subject: [PATCH] Use getLicense() method from Subsonic API kotlin implementation. Replace in RESTMusicService isLicenseValid() method body to use new kotlin subsonic API. --- .../ultrasonic/service/RESTMusicService.java | 48 +++++++++++-------- 1 file changed, 28 insertions(+), 20 deletions(-) diff --git a/ultrasonic/src/main/java/org/moire/ultrasonic/service/RESTMusicService.java b/ultrasonic/src/main/java/org/moire/ultrasonic/service/RESTMusicService.java index 7e2f0c4c..e69330b7 100644 --- a/ultrasonic/src/main/java/org/moire/ultrasonic/service/RESTMusicService.java +++ b/ultrasonic/src/main/java/org/moire/ultrasonic/service/RESTMusicService.java @@ -23,6 +23,7 @@ import android.content.SharedPreferences; import android.graphics.Bitmap; import android.net.ConnectivityManager; import android.net.NetworkInfo; +import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.util.Log; @@ -54,6 +55,7 @@ import org.apache.http.protocol.ExecutionContext; import org.apache.http.protocol.HttpContext; import org.moire.ultrasonic.R; import org.moire.ultrasonic.api.subsonic.SubsonicAPIClient; +import org.moire.ultrasonic.api.subsonic.response.LicenseResponse; import org.moire.ultrasonic.api.subsonic.response.SubsonicResponse; import org.moire.ultrasonic.domain.Bookmark; import org.moire.ultrasonic.domain.ChatMessage; @@ -67,7 +69,6 @@ import org.moire.ultrasonic.domain.Playlist; import org.moire.ultrasonic.domain.PodcastsChannel; import org.moire.ultrasonic.domain.SearchCriteria; import org.moire.ultrasonic.domain.SearchResult; -import org.moire.ultrasonic.domain.ServerInfo; import org.moire.ultrasonic.domain.Share; import org.moire.ultrasonic.domain.UserInfo; import org.moire.ultrasonic.domain.Version; @@ -78,7 +79,6 @@ import org.moire.ultrasonic.service.parser.ErrorParser; import org.moire.ultrasonic.service.parser.GenreParser; import org.moire.ultrasonic.service.parser.IndexesParser; import org.moire.ultrasonic.service.parser.JukeboxStatusParser; -import org.moire.ultrasonic.service.parser.LicenseParser; import org.moire.ultrasonic.service.parser.LyricsParser; import org.moire.ultrasonic.service.parser.MusicDirectoryParser; import org.moire.ultrasonic.service.parser.MusicFoldersParser; @@ -199,26 +199,19 @@ public class RESTMusicService implements MusicService updateProgressListener(progressListener); final Response response = subsonicAPIClient.getApi().ping().execute(); - if (!response.isSuccessful() || - response.body().getStatus() == SubsonicResponse.Status.ERROR) { - throw new IOException("Ping request failed"); - } + checkResponseSuccessful(response); } - @Override - public boolean isLicenseValid(Context context, ProgressListener progressListener) throws Exception - { - Reader reader = getReader(context, progressListener, "getLicense", null); - try - { - ServerInfo serverInfo = new LicenseParser(context).parse(reader); - return serverInfo.isLicenseValid(); - } - finally - { - Util.close(reader); - } - } + @Override + public boolean isLicenseValid(Context context, ProgressListener progressListener) + throws Exception { + updateProgressListener(progressListener); + + final Response response = subsonicAPIClient.getApi().getLicense().execute(); + + checkResponseSuccessful(response); + return response.body().getLicense().getValid(); + } @Override public List getMusicFolders(boolean refresh, Context context, ProgressListener progressListener) throws Exception @@ -1789,4 +1782,19 @@ public class RESTMusicService implements MusicService progressListener.updateProgress(R.string.service_connecting); } } + + private void checkResponseSuccessful(@NonNull final Response response) + throws IOException { + if (response.isSuccessful() && + response.body().getStatus() == SubsonicResponse.Status.OK) { + return; + } + + if (response.body().getStatus() == SubsonicResponse.Status.ERROR && + response.body().getError() != null) { + throw new IOException("Server error: " + response.body().getError().getCode()); + } else { + throw new IOException("Failed to perform request: " + response.code()); + } + } }