Fix transition when base URL is actually incorrect (#196)
This commit is contained in:
@@ -35,7 +35,7 @@ interface MealieDataSource {
|
||||
password: String,
|
||||
): String
|
||||
|
||||
suspend fun getVersionInfo(): VersionResponse
|
||||
suspend fun getVersionInfo(baseURL: String): VersionResponse
|
||||
|
||||
suspend fun requestRecipes(
|
||||
page: Int,
|
||||
|
||||
@@ -28,7 +28,7 @@ internal interface MealieService {
|
||||
slug: String,
|
||||
): GetRecipeResponse
|
||||
|
||||
suspend fun getVersion(): VersionResponse
|
||||
suspend fun getVersion(baseURL: String): VersionResponse
|
||||
|
||||
suspend fun getRecipeSummary(page: Int, perPage: Int): GetRecipesResponse
|
||||
|
||||
|
||||
@@ -65,16 +65,18 @@ internal class MealieDataSourceImpl @Inject constructor(
|
||||
throw if (errorDetail.detail == "Unauthorized") NetworkError.Unauthorized(it) else it
|
||||
}
|
||||
|
||||
override suspend fun getVersionInfo(): VersionResponse = networkRequestWrapper.makeCall(
|
||||
block = { service.getVersion() },
|
||||
logMethod = { "getVersionInfo" },
|
||||
).getOrElse {
|
||||
throw when (it) {
|
||||
is ResponseException, is NoTransformationFoundException -> NetworkError.NotMealie(it)
|
||||
is SocketTimeoutException, is SocketException -> NetworkError.NoServerConnection(it)
|
||||
else -> NetworkError.MalformedUrl(it)
|
||||
override suspend fun getVersionInfo(baseURL: String): VersionResponse =
|
||||
networkRequestWrapper.makeCall(
|
||||
block = { service.getVersion(baseURL) },
|
||||
logMethod = { "getVersionInfo" },
|
||||
logParameters = { "baseURL = $baseURL" }
|
||||
).getOrElse {
|
||||
throw when (it) {
|
||||
is ResponseException, is NoTransformationFoundException -> NetworkError.NotMealie(it)
|
||||
is SocketTimeoutException, is SocketException -> NetworkError.NoServerConnection(it)
|
||||
else -> NetworkError.MalformedUrl(it)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override suspend fun requestRecipes(
|
||||
page: Int,
|
||||
|
||||
@@ -76,9 +76,9 @@ internal class MealieServiceKtor @Inject constructor(
|
||||
}.body()
|
||||
}
|
||||
|
||||
override suspend fun getVersion(): VersionResponse {
|
||||
override suspend fun getVersion(baseURL: String): VersionResponse {
|
||||
return httpClient.get {
|
||||
endpoint("/api/app/about")
|
||||
endpoint(baseURL, "/api/app/about")
|
||||
}.body()
|
||||
}
|
||||
|
||||
@@ -198,9 +198,21 @@ internal class MealieServiceKtor @Inject constructor(
|
||||
|
||||
private suspend fun HttpRequestBuilder.endpoint(
|
||||
path: String,
|
||||
block: URLBuilder.() -> Unit = {}
|
||||
block: URLBuilder.() -> Unit = {},
|
||||
) {
|
||||
val baseUrl = checkNotNull(serverUrlProvider.getUrl()) { "Server URL is not set" }
|
||||
endpoint(
|
||||
baseUrl = baseUrl,
|
||||
path = path,
|
||||
block = block
|
||||
)
|
||||
}
|
||||
|
||||
private fun HttpRequestBuilder.endpoint(
|
||||
baseUrl: String,
|
||||
path: String,
|
||||
block: URLBuilder.() -> Unit = {},
|
||||
) {
|
||||
url {
|
||||
takeFrom(baseUrl)
|
||||
path(path)
|
||||
|
||||
Reference in New Issue
Block a user