Skip to content

Commit

Permalink
refactor ABS model views
Browse files Browse the repository at this point in the history
  • Loading branch information
GrakovNe committed Nov 12, 2024
1 parent 29db899 commit 7abbada
Show file tree
Hide file tree
Showing 39 changed files with 150 additions and 156 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,20 @@ package org.grakovne.lissen.channel.audiobookshelf.common.api

import org.grakovne.lissen.channel.audiobookshelf.common.client.AudiobookshelfApiClient
import org.grakovne.lissen.channel.audiobookshelf.common.model.MediaProgressResponse
import org.grakovne.lissen.channel.audiobookshelf.common.model.PlaybackSessionResponse
import org.grakovne.lissen.channel.audiobookshelf.common.model.PodcastResponse
import org.grakovne.lissen.channel.audiobookshelf.common.model.StartPlaybackRequest
import org.grakovne.lissen.channel.audiobookshelf.common.model.SyncProgressRequest
import org.grakovne.lissen.channel.audiobookshelf.common.model.common.AuthorResponse
import org.grakovne.lissen.channel.audiobookshelf.common.model.common.ConnectionInfoResponse
import org.grakovne.lissen.channel.audiobookshelf.common.model.common.LibraryResponse
import org.grakovne.lissen.channel.audiobookshelf.common.model.common.PersonalizedFeedResponse
import org.grakovne.lissen.channel.audiobookshelf.common.model.library.BookResponse
import org.grakovne.lissen.channel.audiobookshelf.common.model.library.LibraryItemsResponse
import org.grakovne.lissen.channel.audiobookshelf.common.model.library.LibrarySearchResponse
import org.grakovne.lissen.channel.audiobookshelf.common.model.podcast.PodcastItemsResponse
import org.grakovne.lissen.channel.audiobookshelf.common.model.podcast.PodcastSearchResponse
import org.grakovne.lissen.channel.audiobookshelf.common.model.podcast.UserInfoResponse
import org.grakovne.lissen.channel.audiobookshelf.common.model.connection.ConnectionInfoResponse
import org.grakovne.lissen.channel.audiobookshelf.common.model.metadata.AuthorItemsResponse
import org.grakovne.lissen.channel.audiobookshelf.common.model.metadata.LibraryResponse
import org.grakovne.lissen.channel.audiobookshelf.common.model.playback.PlaybackSessionResponse
import org.grakovne.lissen.channel.audiobookshelf.common.model.playback.PlaybackStartRequest
import org.grakovne.lissen.channel.audiobookshelf.common.model.playback.ProgressSyncRequest
import org.grakovne.lissen.channel.audiobookshelf.common.model.user.PersonalizedFeedResponse
import org.grakovne.lissen.channel.audiobookshelf.common.model.user.UserInfoResponse
import org.grakovne.lissen.channel.audiobookshelf.library.model.BookResponse
import org.grakovne.lissen.channel.audiobookshelf.library.model.LibraryItemsResponse
import org.grakovne.lissen.channel.audiobookshelf.library.model.LibrarySearchResponse
import org.grakovne.lissen.channel.audiobookshelf.podcast.model.PodcastItemsResponse
import org.grakovne.lissen.channel.audiobookshelf.podcast.model.PodcastResponse
import org.grakovne.lissen.channel.audiobookshelf.podcast.model.PodcastSearchResponse
import org.grakovne.lissen.channel.common.ApiClient
import org.grakovne.lissen.channel.common.ApiResult
import org.grakovne.lissen.persistence.preferences.LissenSharedPreferences
Expand All @@ -36,7 +36,7 @@ class AudioBookshelfDataRepository @Inject constructor(

suspend fun fetchAuthorItems(
authorId: String
): ApiResult<AuthorResponse> = safeApiCall {
): ApiResult<AuthorItemsResponse> = safeApiCall {
getClientInstance()
.fetchAuthorLibraryItems(
authorId = authorId
Expand Down Expand Up @@ -117,14 +117,14 @@ class AudioBookshelfDataRepository @Inject constructor(

suspend fun startPlayback(
itemId: String,
request: StartPlaybackRequest
request: PlaybackStartRequest
): ApiResult<PlaybackSessionResponse> =
safeApiCall { getClientInstance().startLibraryPlayback(itemId, request) }

suspend fun startPodcastPlayback(
itemId: String,
episodeId: String,
request: StartPlaybackRequest
request: PlaybackStartRequest
): ApiResult<PlaybackSessionResponse> =
safeApiCall { getClientInstance().startPodcastPlayback(itemId, episodeId, request) }

Expand All @@ -133,7 +133,7 @@ class AudioBookshelfDataRepository @Inject constructor(

suspend fun publishLibraryItemProgress(
itemId: String,
progress: SyncProgressRequest
progress: ProgressSyncRequest
): ApiResult<Unit> =
safeApiCall { getClientInstance().publishLibraryItemProgress(itemId, progress) }

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package org.grakovne.lissen.channel.audiobookshelf.common.api

import org.grakovne.lissen.channel.audiobookshelf.common.model.SyncProgressRequest
import org.grakovne.lissen.channel.audiobookshelf.common.model.playback.ProgressSyncRequest
import org.grakovne.lissen.channel.common.ApiResult
import org.grakovne.lissen.domain.PlaybackProgress
import javax.inject.Inject
Expand All @@ -24,7 +24,7 @@ class AudioBookshelfSyncService @Inject constructor(
?.toInt()
?: 0

val request = SyncProgressRequest(
val request = ProgressSyncRequest(
currentTime = progress.currentTime,
duration = progress.totalTime,
timeListened = trackedTime
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ package org.grakovne.lissen.channel.audiobookshelf.common.api

import org.grakovne.lissen.channel.audiobookshelf.common.client.AudiobookshelfApiClient
import org.grakovne.lissen.channel.audiobookshelf.common.converter.LoginResponseConverter
import org.grakovne.lissen.channel.audiobookshelf.common.model.common.LoginRequest
import org.grakovne.lissen.channel.audiobookshelf.common.model.common.LoginResponse
import org.grakovne.lissen.channel.audiobookshelf.common.model.user.CredentialsLoginRequest
import org.grakovne.lissen.channel.audiobookshelf.common.model.user.LoggedUserResponse
import org.grakovne.lissen.channel.common.ApiClient
import org.grakovne.lissen.channel.common.ApiError
import org.grakovne.lissen.channel.common.ApiResult
Expand Down Expand Up @@ -41,8 +41,8 @@ class AudiobookshelfAuthService @Inject constructor(
return ApiResult.Error(ApiError.InternalError)
}

val response: ApiResult<LoginResponse> =
safeApiCall { apiService.login(LoginRequest(username, password)) }
val response: ApiResult<LoggedUserResponse> =
safeApiCall { apiService.login(CredentialsLoginRequest(username, password)) }

return response
.fold(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
package org.grakovne.lissen.channel.audiobookshelf.common.client

import org.grakovne.lissen.channel.audiobookshelf.common.model.MediaProgressResponse
import org.grakovne.lissen.channel.audiobookshelf.common.model.PlaybackSessionResponse
import org.grakovne.lissen.channel.audiobookshelf.common.model.PodcastResponse
import org.grakovne.lissen.channel.audiobookshelf.common.model.StartPlaybackRequest
import org.grakovne.lissen.channel.audiobookshelf.common.model.SyncProgressRequest
import org.grakovne.lissen.channel.audiobookshelf.common.model.common.AuthorResponse
import org.grakovne.lissen.channel.audiobookshelf.common.model.common.ConnectionInfoResponse
import org.grakovne.lissen.channel.audiobookshelf.common.model.common.LibraryResponse
import org.grakovne.lissen.channel.audiobookshelf.common.model.common.LoginRequest
import org.grakovne.lissen.channel.audiobookshelf.common.model.common.LoginResponse
import org.grakovne.lissen.channel.audiobookshelf.common.model.common.PersonalizedFeedResponse
import org.grakovne.lissen.channel.audiobookshelf.common.model.library.BookResponse
import org.grakovne.lissen.channel.audiobookshelf.common.model.library.LibraryItemsResponse
import org.grakovne.lissen.channel.audiobookshelf.common.model.library.LibrarySearchResponse
import org.grakovne.lissen.channel.audiobookshelf.common.model.podcast.PodcastItemsResponse
import org.grakovne.lissen.channel.audiobookshelf.common.model.podcast.PodcastSearchResponse
import org.grakovne.lissen.channel.audiobookshelf.common.model.podcast.UserInfoResponse
import org.grakovne.lissen.channel.audiobookshelf.common.model.connection.ConnectionInfoResponse
import org.grakovne.lissen.channel.audiobookshelf.common.model.metadata.AuthorItemsResponse
import org.grakovne.lissen.channel.audiobookshelf.common.model.metadata.LibraryResponse
import org.grakovne.lissen.channel.audiobookshelf.common.model.playback.PlaybackSessionResponse
import org.grakovne.lissen.channel.audiobookshelf.common.model.playback.PlaybackStartRequest
import org.grakovne.lissen.channel.audiobookshelf.common.model.playback.ProgressSyncRequest
import org.grakovne.lissen.channel.audiobookshelf.common.model.user.CredentialsLoginRequest
import org.grakovne.lissen.channel.audiobookshelf.common.model.user.LoggedUserResponse
import org.grakovne.lissen.channel.audiobookshelf.common.model.user.PersonalizedFeedResponse
import org.grakovne.lissen.channel.audiobookshelf.common.model.user.UserInfoResponse
import org.grakovne.lissen.channel.audiobookshelf.library.model.BookResponse
import org.grakovne.lissen.channel.audiobookshelf.library.model.LibraryItemsResponse
import org.grakovne.lissen.channel.audiobookshelf.library.model.LibrarySearchResponse
import org.grakovne.lissen.channel.audiobookshelf.podcast.model.PodcastItemsResponse
import org.grakovne.lissen.channel.audiobookshelf.podcast.model.PodcastResponse
import org.grakovne.lissen.channel.audiobookshelf.podcast.model.PodcastSearchResponse
import retrofit2.Response
import retrofit2.http.Body
import retrofit2.http.GET
Expand Down Expand Up @@ -86,25 +86,25 @@ interface AudiobookshelfApiClient {
@GET("/api/authors/{authorId}?include=items")
suspend fun fetchAuthorLibraryItems(
@Path("authorId") authorId: String
): Response<AuthorResponse>
): Response<AuthorItemsResponse>

@POST("/api/session/{itemId}/sync")
suspend fun publishLibraryItemProgress(
@Path("itemId") itemId: String,
@Body syncProgressRequest: SyncProgressRequest
@Body syncProgressRequest: ProgressSyncRequest
): Response<Unit>

@POST("/api/items/{itemId}/play/{episodeId}")
suspend fun startPodcastPlayback(
@Path("itemId") itemId: String,
@Path("episodeId") episodeId: String,
@Body syncProgressRequest: StartPlaybackRequest
@Body syncProgressRequest: PlaybackStartRequest
): Response<PlaybackSessionResponse>

@POST("/api/items/{itemId}/play")
suspend fun startLibraryPlayback(
@Path("itemId") itemId: String,
@Body syncProgressRequest: StartPlaybackRequest
@Body syncProgressRequest: PlaybackStartRequest
): Response<PlaybackSessionResponse>

@POST("/api/session/{sessionId}/close")
Expand All @@ -113,5 +113,5 @@ interface AudiobookshelfApiClient {
): Response<Unit>

@POST("login")
suspend fun login(@Body request: LoginRequest): Response<LoginResponse>
suspend fun login(@Body request: CredentialsLoginRequest): Response<LoggedUserResponse>
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package org.grakovne.lissen.channel.audiobookshelf.common.converter

import org.grakovne.lissen.channel.audiobookshelf.common.model.common.ConnectionInfoResponse
import org.grakovne.lissen.channel.audiobookshelf.common.model.connection.ConnectionInfoResponse
import org.grakovne.lissen.channel.common.ConnectionInfo
import javax.inject.Inject
import javax.inject.Singleton
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package org.grakovne.lissen.channel.audiobookshelf.common.converter

import org.grakovne.lissen.channel.audiobookshelf.common.model.library.LibraryItemsResponse
import org.grakovne.lissen.channel.audiobookshelf.library.model.LibraryItemsResponse
import org.grakovne.lissen.domain.Book
import org.grakovne.lissen.domain.BookCachedState
import org.grakovne.lissen.domain.PagedItems
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package org.grakovne.lissen.channel.audiobookshelf.common.converter

import org.grakovne.lissen.channel.audiobookshelf.common.model.common.LibraryResponse
import org.grakovne.lissen.channel.audiobookshelf.common.model.metadata.LibraryResponse
import org.grakovne.lissen.channel.common.LibraryType
import org.grakovne.lissen.domain.Library
import javax.inject.Inject
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
package org.grakovne.lissen.channel.audiobookshelf.common.converter

import org.grakovne.lissen.channel.audiobookshelf.common.model.common.LoginResponse
import org.grakovne.lissen.channel.audiobookshelf.common.model.user.LoggedUserResponse
import org.grakovne.lissen.domain.UserAccount
import javax.inject.Inject
import javax.inject.Singleton

@Singleton
class LoginResponseConverter @Inject constructor() {

fun apply(response: LoginResponse): UserAccount = UserAccount(
fun apply(response: LoggedUserResponse): UserAccount = UserAccount(
token = response.user.token,
preferredLibraryId = response.userDefaultLibraryId
)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package org.grakovne.lissen.channel.audiobookshelf.common.converter

import org.grakovne.lissen.channel.audiobookshelf.common.model.PlaybackSessionResponse
import org.grakovne.lissen.channel.audiobookshelf.common.model.playback.PlaybackSessionResponse
import org.grakovne.lissen.domain.PlaybackSession
import javax.inject.Inject
import javax.inject.Singleton
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package org.grakovne.lissen.channel.audiobookshelf.common.converter

import org.grakovne.lissen.channel.audiobookshelf.common.model.common.PersonalizedFeedResponse
import org.grakovne.lissen.channel.audiobookshelf.common.model.user.PersonalizedFeedResponse
import org.grakovne.lissen.domain.RecentBook
import javax.inject.Inject
import javax.inject.Singleton
Expand Down

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.grakovne.lissen.channel.audiobookshelf.common.model.common
package org.grakovne.lissen.channel.audiobookshelf.common.model.connection

data class ConnectionInfoResponse(
val user: ConnectionInfoUserResponse,
Expand Down

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package org.grakovne.lissen.channel.audiobookshelf.common.model.metadata

import org.grakovne.lissen.channel.audiobookshelf.library.model.LibraryItem

data class AuthorItemsResponse(
val libraryItems: List<LibraryItem>
)
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package org.grakovne.lissen.channel.audiobookshelf.common.model.common
package org.grakovne.lissen.channel.audiobookshelf.common.model.metadata

data class LibraryResponse(
val libraries: List<Library>
val libraries: List<LibraryItemResponse>
)

data class Library(
data class LibraryItemResponse(
val id: String,
val name: String,
val mediaType: String
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.grakovne.lissen.channel.audiobookshelf.common.model
package org.grakovne.lissen.channel.audiobookshelf.common.model.playback

data class PlaybackSessionResponse(
val id: String,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package org.grakovne.lissen.channel.audiobookshelf.common.model
package org.grakovne.lissen.channel.audiobookshelf.common.model.playback

data class StartPlaybackRequest(
data class PlaybackStartRequest(
val deviceInfo: DeviceInfo,
val supportedMimeTypes: List<String>,
val mediaPlayer: String,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package org.grakovne.lissen.channel.audiobookshelf.common.model.playback

data class ProgressSyncRequest(
val timeListened: Int,
val duration: Double,
val currentTime: Double
)
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package org.grakovne.lissen.channel.audiobookshelf.common.model.common
package org.grakovne.lissen.channel.audiobookshelf.common.model.user

data class LoginRequest(
data class CredentialsLoginRequest(
val username: String,
val password: String
)
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package org.grakovne.lissen.channel.audiobookshelf.common.model.common
package org.grakovne.lissen.channel.audiobookshelf.common.model.user

data class LoginResponse(
data class LoggedUserResponse(
val user: User,
val userDefaultLibraryId: String
val userDefaultLibraryId: String?
)

data class User(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.grakovne.lissen.channel.audiobookshelf.common.model.common
package org.grakovne.lissen.channel.audiobookshelf.common.model.user

data class PersonalizedFeedResponse(
val id: String,
Expand Down
Loading

0 comments on commit 7abbada

Please sign in to comment.