mirror of
https://github.com/ultrasonic/ultrasonic
synced 2025-02-17 12:10:41 +01:00
Use getMusicFolders() method from SubsonicAPI kotlin implementation.
Signed-off-by: Yahor Berdnikau <egorr.berd@gmail.com>
This commit is contained in:
parent
9ed0921218
commit
4fd5493d15
@ -19,6 +19,7 @@ android {
|
||||
}
|
||||
|
||||
sourceSets {
|
||||
main.java.srcDirs += 'src/main/kotlin'
|
||||
test.java.srcDirs += 'src/test/kotlin'
|
||||
}
|
||||
|
||||
|
@ -56,7 +56,9 @@ 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.MusicFoldersResponse;
|
||||
import org.moire.ultrasonic.api.subsonic.response.SubsonicResponse;
|
||||
import org.moire.ultrasonic.data.APIConverter;
|
||||
import org.moire.ultrasonic.domain.Bookmark;
|
||||
import org.moire.ultrasonic.domain.ChatMessage;
|
||||
import org.moire.ultrasonic.domain.Genre;
|
||||
@ -81,7 +83,6 @@ import org.moire.ultrasonic.service.parser.IndexesParser;
|
||||
import org.moire.ultrasonic.service.parser.JukeboxStatusParser;
|
||||
import org.moire.ultrasonic.service.parser.LyricsParser;
|
||||
import org.moire.ultrasonic.service.parser.MusicDirectoryParser;
|
||||
import org.moire.ultrasonic.service.parser.MusicFoldersParser;
|
||||
import org.moire.ultrasonic.service.parser.PlaylistParser;
|
||||
import org.moire.ultrasonic.service.parser.PlaylistsParser;
|
||||
import org.moire.ultrasonic.service.parser.PodcastEpisodeParser;
|
||||
@ -213,27 +214,24 @@ public class RESTMusicService implements MusicService
|
||||
return response.body().getLicense().getValid();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<MusicFolder> getMusicFolders(boolean refresh, Context context, ProgressListener progressListener) throws Exception
|
||||
{
|
||||
List<MusicFolder> cachedMusicFolders = readCachedMusicFolders(context);
|
||||
if (cachedMusicFolders != null && !refresh)
|
||||
{
|
||||
return cachedMusicFolders;
|
||||
}
|
||||
@Override
|
||||
public List<MusicFolder> getMusicFolders(boolean refresh,
|
||||
Context context,
|
||||
ProgressListener progressListener) throws Exception {
|
||||
List<MusicFolder> cachedMusicFolders = readCachedMusicFolders(context);
|
||||
if (cachedMusicFolders != null && !refresh) {
|
||||
return cachedMusicFolders;
|
||||
}
|
||||
|
||||
Reader reader = getReader(context, progressListener, "getMusicFolders", null);
|
||||
try
|
||||
{
|
||||
List<MusicFolder> musicFolders = new MusicFoldersParser(context).parse(reader, progressListener);
|
||||
writeCachedMusicFolders(context, musicFolders);
|
||||
return musicFolders;
|
||||
}
|
||||
finally
|
||||
{
|
||||
Util.close(reader);
|
||||
}
|
||||
}
|
||||
updateProgressListener(progressListener);
|
||||
Response<MusicFoldersResponse> response = subsonicAPIClient.getApi().getMusicFolders().execute();
|
||||
checkResponseSuccessful(response);
|
||||
|
||||
List<MusicFolder> musicFolders = APIConverter
|
||||
.convertMusicFolderList(response.body().getMusicFolders());
|
||||
writeCachedMusicFolders(context, musicFolders);
|
||||
return musicFolders;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Indexes getIndexes(String musicFolderId, boolean refresh, Context context, ProgressListener progressListener) throws Exception
|
||||
@ -337,17 +335,15 @@ public class RESTMusicService implements MusicService
|
||||
return String.format("indexes-%d.ser", Math.abs(s.hashCode()));
|
||||
}
|
||||
|
||||
private static ArrayList<MusicFolder> readCachedMusicFolders(Context context)
|
||||
{
|
||||
String filename = getCachedMusicFoldersFilename(context);
|
||||
return FileUtil.deserialize(context, filename);
|
||||
}
|
||||
private static List<MusicFolder> readCachedMusicFolders(Context context) {
|
||||
String filename = getCachedMusicFoldersFilename(context);
|
||||
return FileUtil.deserialize(context, filename);
|
||||
}
|
||||
|
||||
private static void writeCachedMusicFolders(Context context, List<MusicFolder> musicFolders)
|
||||
{
|
||||
String filename = getCachedMusicFoldersFilename(context);
|
||||
FileUtil.serialize(context, new ArrayList<MusicFolder>(musicFolders), filename);
|
||||
}
|
||||
private static void writeCachedMusicFolders(Context context, List<MusicFolder> musicFolders) {
|
||||
String filename = getCachedMusicFoldersFilename(context);
|
||||
FileUtil.serialize(context, new ArrayList<>(musicFolders), filename);
|
||||
}
|
||||
|
||||
private static String getCachedMusicFoldersFilename(Context context)
|
||||
{
|
||||
|
@ -1,5 +1,15 @@
|
||||
// Converts entities from [org.moire.ultrasonic.api.subsonic.SubsonicAPIClient] to app entities.
|
||||
@file:JvmName("APIConverter")
|
||||
package org.moire.ultrasonic.data
|
||||
|
||||
/**
|
||||
* Created by egorr on 26.07.17.
|
||||
*/
|
||||
import org.moire.ultrasonic.domain.MusicFolder
|
||||
|
||||
typealias APIMusicFolder = org.moire.ultrasonic.api.subsonic.models.MusicFolder
|
||||
|
||||
fun convertMusicFolder(entity: APIMusicFolder): MusicFolder {
|
||||
return MusicFolder(entity.id.toString(), entity.name)
|
||||
}
|
||||
|
||||
fun convertMusicFolderList(entitiesList: List<APIMusicFolder>): List<MusicFolder> {
|
||||
return entitiesList.map { convertMusicFolder(it) }
|
||||
}
|
@ -1,8 +1,43 @@
|
||||
@file:Suppress("IllegalIdentifier")
|
||||
|
||||
package org.moire.ultrasonic.data
|
||||
|
||||
import org.junit.Assert.*
|
||||
import org.amshove.kluent.`should equal to`
|
||||
import org.junit.Test
|
||||
import org.moire.ultrasonic.api.subsonic.models.MusicFolder
|
||||
|
||||
/**
|
||||
* Created by egorr on 26.07.17.
|
||||
* Unit test for functions in SubsonicAPIConverter file.
|
||||
*
|
||||
* @author Yahor Berdnikau
|
||||
*/
|
||||
class APIConverterTest
|
||||
class APIConverterTest {
|
||||
@Test
|
||||
fun `Should convert MusicFolder entity`() {
|
||||
val entity = createMusicFolder(10, "some-name")
|
||||
|
||||
val convertedEntity = convertMusicFolder(entity)
|
||||
|
||||
convertedEntity.name `should equal to` "some-name"
|
||||
convertedEntity.id `should equal to` 10.toString()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `Should convert list of MusicFolder entities`() {
|
||||
val entityList = listOf(
|
||||
createMusicFolder(3, "some-name-3"),
|
||||
createMusicFolder(4, "some-name-4")
|
||||
)
|
||||
|
||||
val convertedList = convertMusicFolderList(entityList)
|
||||
|
||||
convertedList.size `should equal to` 2
|
||||
convertedList[0].id `should equal to` 3.toString()
|
||||
convertedList[0].name `should equal to` "some-name-3"
|
||||
convertedList[1].id `should equal to` 4.toString()
|
||||
convertedList[1].name `should equal to` "some-name-4"
|
||||
}
|
||||
|
||||
private fun createMusicFolder(id: Long = 0, name: String = ""): MusicFolder =
|
||||
MusicFolder(id, name)
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user