Improve the extension function by making it call-chainable
This commit is contained in:
parent
a60a843edf
commit
620239f859
|
@ -40,11 +40,11 @@ fun Response<out ResponseBody>.toStreamResponse(): StreamResponse {
|
||||||
* It creates Exceptions from the results returned by the Subsonic API
|
* It creates Exceptions from the results returned by the Subsonic API
|
||||||
*/
|
*/
|
||||||
@Suppress("ThrowsCount")
|
@Suppress("ThrowsCount")
|
||||||
fun Response<out SubsonicResponse>.throwOnFailure(): Response<out SubsonicResponse> {
|
fun <T : SubsonicResponse> Response<out T>.throwOnFailure(): Response<out T> {
|
||||||
val response = this
|
val response = this
|
||||||
|
|
||||||
if (response.isSuccessful && response.body()!!.status === SubsonicResponse.Status.OK) {
|
if (response.isSuccessful && response.body()!!.status === SubsonicResponse.Status.OK) {
|
||||||
return this
|
return this as Response<T>
|
||||||
}
|
}
|
||||||
if (!response.isSuccessful) {
|
if (!response.isSuccessful) {
|
||||||
throw IOException("Server error, code: " + response.code())
|
throw IOException("Server error, code: " + response.code())
|
||||||
|
|
|
@ -69,8 +69,7 @@ open class RESTMusicService(
|
||||||
|
|
||||||
@Throws(Exception::class)
|
@Throws(Exception::class)
|
||||||
override fun isLicenseValid(): Boolean {
|
override fun isLicenseValid(): Boolean {
|
||||||
val response = API.getLicense().execute()
|
val response = API.getLicense().execute().throwOnFailure()
|
||||||
response.throwOnFailure()
|
|
||||||
|
|
||||||
return response.body()!!.license.valid
|
return response.body()!!.license.valid
|
||||||
}
|
}
|
||||||
|
@ -85,8 +84,7 @@ open class RESTMusicService(
|
||||||
|
|
||||||
if (cachedMusicFolders != null && !refresh) return cachedMusicFolders
|
if (cachedMusicFolders != null && !refresh) return cachedMusicFolders
|
||||||
|
|
||||||
val response = API.getMusicFolders().execute()
|
val response = API.getMusicFolders().execute().throwOnFailure()
|
||||||
response.throwOnFailure()
|
|
||||||
|
|
||||||
val musicFolders = response.body()!!.musicFolders.toDomainEntityList()
|
val musicFolders = response.body()!!.musicFolders.toDomainEntityList()
|
||||||
fileStorage.store(MUSIC_FOLDER_STORAGE_NAME, musicFolders, getMusicFolderListSerializer())
|
fileStorage.store(MUSIC_FOLDER_STORAGE_NAME, musicFolders, getMusicFolderListSerializer())
|
||||||
|
@ -104,8 +102,7 @@ open class RESTMusicService(
|
||||||
val cachedIndexes = fileStorage.load(indexName, getIndexesSerializer())
|
val cachedIndexes = fileStorage.load(indexName, getIndexesSerializer())
|
||||||
if (cachedIndexes != null && !refresh) return cachedIndexes
|
if (cachedIndexes != null && !refresh) return cachedIndexes
|
||||||
|
|
||||||
val response = API.getIndexes(musicFolderId, null).execute()
|
val response = API.getIndexes(musicFolderId, null).execute().throwOnFailure()
|
||||||
response.throwOnFailure()
|
|
||||||
|
|
||||||
val indexes = response.body()!!.indexes.toDomainEntity()
|
val indexes = response.body()!!.indexes.toDomainEntity()
|
||||||
fileStorage.store(indexName, indexes, getIndexesSerializer())
|
fileStorage.store(indexName, indexes, getIndexesSerializer())
|
||||||
|
@ -119,8 +116,7 @@ open class RESTMusicService(
|
||||||
val cachedArtists = fileStorage.load(ARTISTS_STORAGE_NAME, getIndexesSerializer())
|
val cachedArtists = fileStorage.load(ARTISTS_STORAGE_NAME, getIndexesSerializer())
|
||||||
if (cachedArtists != null && !refresh) return cachedArtists
|
if (cachedArtists != null && !refresh) return cachedArtists
|
||||||
|
|
||||||
val response = API.getArtists(null).execute()
|
val response = API.getArtists(null).execute().throwOnFailure()
|
||||||
response.throwOnFailure()
|
|
||||||
|
|
||||||
val indexes = response.body()!!.indexes.toDomainEntity()
|
val indexes = response.body()!!.indexes.toDomainEntity()
|
||||||
fileStorage.store(ARTISTS_STORAGE_NAME, indexes, getIndexesSerializer())
|
fileStorage.store(ARTISTS_STORAGE_NAME, indexes, getIndexesSerializer())
|
||||||
|
@ -159,8 +155,7 @@ open class RESTMusicService(
|
||||||
name: String?,
|
name: String?,
|
||||||
refresh: Boolean
|
refresh: Boolean
|
||||||
): MusicDirectory {
|
): MusicDirectory {
|
||||||
val response = API.getMusicDirectory(id).execute()
|
val response = API.getMusicDirectory(id).execute().throwOnFailure()
|
||||||
response.throwOnFailure()
|
|
||||||
|
|
||||||
return response.body()!!.musicDirectory.toDomainEntity()
|
return response.body()!!.musicDirectory.toDomainEntity()
|
||||||
}
|
}
|
||||||
|
@ -171,8 +166,7 @@ open class RESTMusicService(
|
||||||
name: String?,
|
name: String?,
|
||||||
refresh: Boolean
|
refresh: Boolean
|
||||||
): MusicDirectory {
|
): MusicDirectory {
|
||||||
val response = API.getArtist(id).execute()
|
val response = API.getArtist(id).execute().throwOnFailure()
|
||||||
response.throwOnFailure()
|
|
||||||
|
|
||||||
return response.body()!!.artist.toMusicDirectoryDomainEntity()
|
return response.body()!!.artist.toMusicDirectoryDomainEntity()
|
||||||
}
|
}
|
||||||
|
@ -183,8 +177,7 @@ open class RESTMusicService(
|
||||||
name: String?,
|
name: String?,
|
||||||
refresh: Boolean
|
refresh: Boolean
|
||||||
): MusicDirectory {
|
): MusicDirectory {
|
||||||
val response = API.getAlbum(id).execute()
|
val response = API.getAlbum(id).execute().throwOnFailure()
|
||||||
response.throwOnFailure()
|
|
||||||
|
|
||||||
return response.body()!!.album.toMusicDirectoryDomainEntity()
|
return response.body()!!.album.toMusicDirectoryDomainEntity()
|
||||||
}
|
}
|
||||||
|
@ -214,8 +207,7 @@ open class RESTMusicService(
|
||||||
): SearchResult {
|
): SearchResult {
|
||||||
val response =
|
val response =
|
||||||
API.search(null, null, null, criteria.query, criteria.songCount, null, null)
|
API.search(null, null, null, criteria.query, criteria.songCount, null, null)
|
||||||
.execute()
|
.execute().throwOnFailure()
|
||||||
response.throwOnFailure()
|
|
||||||
|
|
||||||
return response.body()!!.searchResult.toDomainEntity()
|
return response.body()!!.searchResult.toDomainEntity()
|
||||||
}
|
}
|
||||||
|
@ -231,9 +223,7 @@ open class RESTMusicService(
|
||||||
val response = API.search2(
|
val response = API.search2(
|
||||||
criteria.query, criteria.artistCount, null, criteria.albumCount, null,
|
criteria.query, criteria.artistCount, null, criteria.albumCount, null,
|
||||||
criteria.songCount, null
|
criteria.songCount, null
|
||||||
).execute()
|
).execute().throwOnFailure()
|
||||||
|
|
||||||
response.throwOnFailure()
|
|
||||||
|
|
||||||
return response.body()!!.searchResult.toDomainEntity()
|
return response.body()!!.searchResult.toDomainEntity()
|
||||||
}
|
}
|
||||||
|
@ -246,9 +236,7 @@ open class RESTMusicService(
|
||||||
val response = API.search3(
|
val response = API.search3(
|
||||||
criteria.query, criteria.artistCount, null, criteria.albumCount, null,
|
criteria.query, criteria.artistCount, null, criteria.albumCount, null,
|
||||||
criteria.songCount, null
|
criteria.songCount, null
|
||||||
).execute()
|
).execute().throwOnFailure()
|
||||||
|
|
||||||
response.throwOnFailure()
|
|
||||||
|
|
||||||
return response.body()!!.searchResult.toDomainEntity()
|
return response.body()!!.searchResult.toDomainEntity()
|
||||||
}
|
}
|
||||||
|
@ -258,8 +246,7 @@ open class RESTMusicService(
|
||||||
id: String,
|
id: String,
|
||||||
name: String
|
name: String
|
||||||
): MusicDirectory {
|
): MusicDirectory {
|
||||||
val response = API.getPlaylist(id).execute()
|
val response = API.getPlaylist(id).execute().throwOnFailure()
|
||||||
response.throwOnFailure()
|
|
||||||
|
|
||||||
val playlist = response.body()!!.playlist.toMusicDirectoryDomainEntity()
|
val playlist = response.body()!!.playlist.toMusicDirectoryDomainEntity()
|
||||||
savePlaylist(name, playlist)
|
savePlaylist(name, playlist)
|
||||||
|
@ -304,8 +291,7 @@ open class RESTMusicService(
|
||||||
override fun getPlaylists(
|
override fun getPlaylists(
|
||||||
refresh: Boolean
|
refresh: Boolean
|
||||||
): List<Playlist> {
|
): List<Playlist> {
|
||||||
val response = API.getPlaylists(null).execute()
|
val response = API.getPlaylists(null).execute().throwOnFailure()
|
||||||
response.throwOnFailure()
|
|
||||||
|
|
||||||
return response.body()!!.playlists.toDomainEntitiesList()
|
return response.body()!!.playlists.toDomainEntitiesList()
|
||||||
}
|
}
|
||||||
|
@ -347,8 +333,7 @@ open class RESTMusicService(
|
||||||
override fun getPodcastsChannels(
|
override fun getPodcastsChannels(
|
||||||
refresh: Boolean
|
refresh: Boolean
|
||||||
): List<PodcastsChannel> {
|
): List<PodcastsChannel> {
|
||||||
val response = API.getPodcasts(false, null).execute()
|
val response = API.getPodcasts(false, null).execute().throwOnFailure()
|
||||||
response.throwOnFailure()
|
|
||||||
|
|
||||||
return response.body()!!.podcastChannels.toDomainEntitiesList()
|
return response.body()!!.podcastChannels.toDomainEntitiesList()
|
||||||
}
|
}
|
||||||
|
@ -357,8 +342,7 @@ open class RESTMusicService(
|
||||||
override fun getPodcastEpisodes(
|
override fun getPodcastEpisodes(
|
||||||
podcastChannelId: String?
|
podcastChannelId: String?
|
||||||
): MusicDirectory {
|
): MusicDirectory {
|
||||||
val response = API.getPodcasts(true, podcastChannelId).execute()
|
val response = API.getPodcasts(true, podcastChannelId).execute().throwOnFailure()
|
||||||
response.throwOnFailure()
|
|
||||||
|
|
||||||
val podcastEntries = response.body()!!.podcastChannels[0].episodeList
|
val podcastEntries = response.body()!!.podcastChannels[0].episodeList
|
||||||
val musicDirectory = MusicDirectory()
|
val musicDirectory = MusicDirectory()
|
||||||
|
@ -382,8 +366,7 @@ open class RESTMusicService(
|
||||||
artist: String,
|
artist: String,
|
||||||
title: String
|
title: String
|
||||||
): Lyrics {
|
): Lyrics {
|
||||||
val response = API.getLyrics(artist, title).execute()
|
val response = API.getLyrics(artist, title).execute().throwOnFailure()
|
||||||
response.throwOnFailure()
|
|
||||||
|
|
||||||
return response.body()!!.lyrics.toDomainEntity()
|
return response.body()!!.lyrics.toDomainEntity()
|
||||||
}
|
}
|
||||||
|
@ -411,9 +394,7 @@ open class RESTMusicService(
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
musicFolderId
|
musicFolderId
|
||||||
).execute()
|
).execute().throwOnFailure()
|
||||||
|
|
||||||
response.throwOnFailure()
|
|
||||||
|
|
||||||
val childList = response.body()!!.albumList.toDomainEntityList()
|
val childList = response.body()!!.albumList.toDomainEntityList()
|
||||||
val result = MusicDirectory()
|
val result = MusicDirectory()
|
||||||
|
@ -437,9 +418,7 @@ open class RESTMusicService(
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
musicFolderId
|
musicFolderId
|
||||||
).execute()
|
).execute().throwOnFailure()
|
||||||
|
|
||||||
response.throwOnFailure()
|
|
||||||
|
|
||||||
val result = MusicDirectory()
|
val result = MusicDirectory()
|
||||||
result.addAll(response.body()!!.albumList.toDomainEntityList())
|
result.addAll(response.body()!!.albumList.toDomainEntityList())
|
||||||
|
@ -457,9 +436,7 @@ open class RESTMusicService(
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null
|
null
|
||||||
).execute()
|
).execute().throwOnFailure()
|
||||||
|
|
||||||
response.throwOnFailure()
|
|
||||||
|
|
||||||
val result = MusicDirectory()
|
val result = MusicDirectory()
|
||||||
result.addAll(response.body()!!.songsList.toDomainEntityList())
|
result.addAll(response.body()!!.songsList.toDomainEntityList())
|
||||||
|
@ -469,18 +446,14 @@ open class RESTMusicService(
|
||||||
|
|
||||||
@Throws(Exception::class)
|
@Throws(Exception::class)
|
||||||
override fun getStarred(): SearchResult {
|
override fun getStarred(): SearchResult {
|
||||||
val response = API.getStarred(null).execute()
|
val response = API.getStarred(null).execute().throwOnFailure()
|
||||||
|
|
||||||
response.throwOnFailure()
|
|
||||||
|
|
||||||
return response.body()!!.starred.toDomainEntity()
|
return response.body()!!.starred.toDomainEntity()
|
||||||
}
|
}
|
||||||
|
|
||||||
@Throws(Exception::class)
|
@Throws(Exception::class)
|
||||||
override fun getStarred2(): SearchResult {
|
override fun getStarred2(): SearchResult {
|
||||||
val response = API.getStarred2(null).execute()
|
val response = API.getStarred2(null).execute().throwOnFailure()
|
||||||
|
|
||||||
response.throwOnFailure()
|
|
||||||
|
|
||||||
return response.body()!!.starred2.toDomainEntity()
|
return response.body()!!.starred2.toDomainEntity()
|
||||||
}
|
}
|
||||||
|
@ -543,9 +516,7 @@ open class RESTMusicService(
|
||||||
ids: List<String>?
|
ids: List<String>?
|
||||||
): JukeboxStatus {
|
): JukeboxStatus {
|
||||||
val response = API.jukeboxControl(JukeboxAction.SET, null, null, ids, null)
|
val response = API.jukeboxControl(JukeboxAction.SET, null, null, ids, null)
|
||||||
.execute()
|
.execute().throwOnFailure()
|
||||||
|
|
||||||
response.throwOnFailure()
|
|
||||||
|
|
||||||
return response.body()!!.jukebox.toDomainEntity()
|
return response.body()!!.jukebox.toDomainEntity()
|
||||||
}
|
}
|
||||||
|
@ -556,9 +527,7 @@ open class RESTMusicService(
|
||||||
offsetSeconds: Int
|
offsetSeconds: Int
|
||||||
): JukeboxStatus {
|
): JukeboxStatus {
|
||||||
val response = API.jukeboxControl(JukeboxAction.SKIP, index, offsetSeconds, null, null)
|
val response = API.jukeboxControl(JukeboxAction.SKIP, index, offsetSeconds, null, null)
|
||||||
.execute()
|
.execute().throwOnFailure()
|
||||||
|
|
||||||
response.throwOnFailure()
|
|
||||||
|
|
||||||
return response.body()!!.jukebox.toDomainEntity()
|
return response.body()!!.jukebox.toDomainEntity()
|
||||||
}
|
}
|
||||||
|
@ -566,9 +535,7 @@ open class RESTMusicService(
|
||||||
@Throws(Exception::class)
|
@Throws(Exception::class)
|
||||||
override fun stopJukebox(): JukeboxStatus {
|
override fun stopJukebox(): JukeboxStatus {
|
||||||
val response = API.jukeboxControl(JukeboxAction.STOP, null, null, null, null)
|
val response = API.jukeboxControl(JukeboxAction.STOP, null, null, null, null)
|
||||||
.execute()
|
.execute().throwOnFailure()
|
||||||
|
|
||||||
response.throwOnFailure()
|
|
||||||
|
|
||||||
return response.body()!!.jukebox.toDomainEntity()
|
return response.body()!!.jukebox.toDomainEntity()
|
||||||
}
|
}
|
||||||
|
@ -576,9 +543,7 @@ open class RESTMusicService(
|
||||||
@Throws(Exception::class)
|
@Throws(Exception::class)
|
||||||
override fun startJukebox(): JukeboxStatus {
|
override fun startJukebox(): JukeboxStatus {
|
||||||
val response = API.jukeboxControl(JukeboxAction.START, null, null, null, null)
|
val response = API.jukeboxControl(JukeboxAction.START, null, null, null, null)
|
||||||
.execute()
|
.execute().throwOnFailure()
|
||||||
|
|
||||||
response.throwOnFailure()
|
|
||||||
|
|
||||||
return response.body()!!.jukebox.toDomainEntity()
|
return response.body()!!.jukebox.toDomainEntity()
|
||||||
}
|
}
|
||||||
|
@ -586,9 +551,7 @@ open class RESTMusicService(
|
||||||
@Throws(Exception::class)
|
@Throws(Exception::class)
|
||||||
override fun getJukeboxStatus(): JukeboxStatus {
|
override fun getJukeboxStatus(): JukeboxStatus {
|
||||||
val response = API.jukeboxControl(JukeboxAction.STATUS, null, null, null, null)
|
val response = API.jukeboxControl(JukeboxAction.STATUS, null, null, null, null)
|
||||||
.execute()
|
.execute().throwOnFailure()
|
||||||
|
|
||||||
response.throwOnFailure()
|
|
||||||
|
|
||||||
return response.body()!!.jukebox.toDomainEntity()
|
return response.body()!!.jukebox.toDomainEntity()
|
||||||
}
|
}
|
||||||
|
@ -598,9 +561,7 @@ open class RESTMusicService(
|
||||||
gain: Float
|
gain: Float
|
||||||
): JukeboxStatus {
|
): JukeboxStatus {
|
||||||
val response = API.jukeboxControl(JukeboxAction.SET_GAIN, null, null, null, gain)
|
val response = API.jukeboxControl(JukeboxAction.SET_GAIN, null, null, null, gain)
|
||||||
.execute()
|
.execute().throwOnFailure()
|
||||||
|
|
||||||
response.throwOnFailure()
|
|
||||||
|
|
||||||
return response.body()!!.jukebox.toDomainEntity()
|
return response.body()!!.jukebox.toDomainEntity()
|
||||||
}
|
}
|
||||||
|
@ -609,8 +570,7 @@ open class RESTMusicService(
|
||||||
override fun getShares(
|
override fun getShares(
|
||||||
refresh: Boolean
|
refresh: Boolean
|
||||||
): List<Share> {
|
): List<Share> {
|
||||||
val response = API.getShares().execute()
|
val response = API.getShares().execute().throwOnFailure()
|
||||||
response.throwOnFailure()
|
|
||||||
|
|
||||||
return response.body()!!.shares.toDomainEntitiesList()
|
return response.body()!!.shares.toDomainEntitiesList()
|
||||||
}
|
}
|
||||||
|
@ -619,8 +579,7 @@ open class RESTMusicService(
|
||||||
override fun getGenres(
|
override fun getGenres(
|
||||||
refresh: Boolean
|
refresh: Boolean
|
||||||
): List<Genre>? {
|
): List<Genre>? {
|
||||||
val response = API.getGenres().execute()
|
val response = API.getGenres().execute().throwOnFailure()
|
||||||
response.throwOnFailure()
|
|
||||||
|
|
||||||
return response.body()!!.genresList.toDomainEntityList()
|
return response.body()!!.genresList.toDomainEntityList()
|
||||||
}
|
}
|
||||||
|
@ -631,8 +590,7 @@ open class RESTMusicService(
|
||||||
count: Int,
|
count: Int,
|
||||||
offset: Int
|
offset: Int
|
||||||
): MusicDirectory {
|
): MusicDirectory {
|
||||||
val response = API.getSongsByGenre(genre, count, offset, null).execute()
|
val response = API.getSongsByGenre(genre, count, offset, null).execute().throwOnFailure()
|
||||||
response.throwOnFailure()
|
|
||||||
|
|
||||||
val result = MusicDirectory()
|
val result = MusicDirectory()
|
||||||
result.addAll(response.body()!!.songsList.toDomainEntityList())
|
result.addAll(response.body()!!.songsList.toDomainEntityList())
|
||||||
|
@ -644,9 +602,7 @@ open class RESTMusicService(
|
||||||
override fun getUser(
|
override fun getUser(
|
||||||
username: String
|
username: String
|
||||||
): UserInfo {
|
): UserInfo {
|
||||||
val response = API.getUser(username).execute()
|
val response = API.getUser(username).execute().throwOnFailure()
|
||||||
|
|
||||||
response.throwOnFailure()
|
|
||||||
|
|
||||||
return response.body()!!.user.toDomainEntity()
|
return response.body()!!.user.toDomainEntity()
|
||||||
}
|
}
|
||||||
|
@ -655,9 +611,7 @@ open class RESTMusicService(
|
||||||
override fun getChatMessages(
|
override fun getChatMessages(
|
||||||
since: Long?
|
since: Long?
|
||||||
): List<ChatMessage> {
|
): List<ChatMessage> {
|
||||||
val response = API.getChatMessages(since).execute()
|
val response = API.getChatMessages(since).execute().throwOnFailure()
|
||||||
|
|
||||||
response.throwOnFailure()
|
|
||||||
|
|
||||||
return response.body()!!.chatMessages.toDomainEntitiesList()
|
return response.body()!!.chatMessages.toDomainEntitiesList()
|
||||||
}
|
}
|
||||||
|
@ -671,8 +625,7 @@ open class RESTMusicService(
|
||||||
|
|
||||||
@Throws(Exception::class)
|
@Throws(Exception::class)
|
||||||
override fun getBookmarks(): List<Bookmark> {
|
override fun getBookmarks(): List<Bookmark> {
|
||||||
val response = API.getBookmarks().execute()
|
val response = API.getBookmarks().execute().throwOnFailure()
|
||||||
response.throwOnFailure()
|
|
||||||
|
|
||||||
return response.body()!!.bookmarkList.toDomainEntitiesList()
|
return response.body()!!.bookmarkList.toDomainEntitiesList()
|
||||||
}
|
}
|
||||||
|
@ -696,8 +649,7 @@ open class RESTMusicService(
|
||||||
override fun getVideos(
|
override fun getVideos(
|
||||||
refresh: Boolean
|
refresh: Boolean
|
||||||
): MusicDirectory {
|
): MusicDirectory {
|
||||||
val response = API.getVideos().execute()
|
val response = API.getVideos().execute().throwOnFailure()
|
||||||
response.throwOnFailure()
|
|
||||||
|
|
||||||
val musicDirectory = MusicDirectory()
|
val musicDirectory = MusicDirectory()
|
||||||
musicDirectory.addAll(response.body()!!.videosList.toDomainEntityList())
|
musicDirectory.addAll(response.body()!!.videosList.toDomainEntityList())
|
||||||
|
@ -711,8 +663,7 @@ open class RESTMusicService(
|
||||||
description: String?,
|
description: String?,
|
||||||
expires: Long?
|
expires: Long?
|
||||||
): List<Share> {
|
): List<Share> {
|
||||||
val response = API.createShare(ids, description, expires).execute()
|
val response = API.createShare(ids, description, expires).execute().throwOnFailure()
|
||||||
response.throwOnFailure()
|
|
||||||
|
|
||||||
return response.body()!!.shares.toDomainEntitiesList()
|
return response.body()!!.shares.toDomainEntitiesList()
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue