Implement saving recipes by URLs
This commit is contained in:
@@ -3,6 +3,7 @@ package gq.kirmanak.mealient.datasource.v0
|
||||
import gq.kirmanak.mealient.datasource.v0.models.AddRecipeRequestV0
|
||||
import gq.kirmanak.mealient.datasource.v0.models.GetRecipeResponseV0
|
||||
import gq.kirmanak.mealient.datasource.v0.models.GetRecipeSummaryResponseV0
|
||||
import gq.kirmanak.mealient.datasource.v0.models.ParseRecipeURLRequestV0
|
||||
import gq.kirmanak.mealient.datasource.v0.models.VersionResponseV0
|
||||
|
||||
interface MealieDataSourceV0 {
|
||||
@@ -38,4 +39,10 @@ interface MealieDataSourceV0 {
|
||||
token: String?,
|
||||
slug: String,
|
||||
): GetRecipeResponseV0
|
||||
|
||||
suspend fun parseRecipeFromURL(
|
||||
baseUrl: String,
|
||||
token: String?,
|
||||
request: ParseRecipeURLRequestV0,
|
||||
): String
|
||||
}
|
||||
@@ -3,7 +3,12 @@ package gq.kirmanak.mealient.datasource.v0
|
||||
import gq.kirmanak.mealient.datasource.NetworkError
|
||||
import gq.kirmanak.mealient.datasource.NetworkRequestWrapper
|
||||
import gq.kirmanak.mealient.datasource.decode
|
||||
import gq.kirmanak.mealient.datasource.v0.models.*
|
||||
import gq.kirmanak.mealient.datasource.v0.models.AddRecipeRequestV0
|
||||
import gq.kirmanak.mealient.datasource.v0.models.ErrorDetailV0
|
||||
import gq.kirmanak.mealient.datasource.v0.models.GetRecipeResponseV0
|
||||
import gq.kirmanak.mealient.datasource.v0.models.GetRecipeSummaryResponseV0
|
||||
import gq.kirmanak.mealient.datasource.v0.models.ParseRecipeURLRequestV0
|
||||
import gq.kirmanak.mealient.datasource.v0.models.VersionResponseV0
|
||||
import kotlinx.serialization.SerializationException
|
||||
import kotlinx.serialization.json.Json
|
||||
import retrofit2.HttpException
|
||||
@@ -77,4 +82,15 @@ class MealieDataSourceV0Impl @Inject constructor(
|
||||
logMethod = { "requestRecipeInfo" },
|
||||
logParameters = { "baseUrl = $baseUrl, token = $token, slug = $slug" }
|
||||
)
|
||||
|
||||
override suspend fun parseRecipeFromURL(
|
||||
baseUrl: String,
|
||||
token: String?,
|
||||
request: ParseRecipeURLRequestV0
|
||||
): String = networkRequestWrapper.makeCallAndHandleUnauthorized(
|
||||
block = { service.createRecipeFromURL("$baseUrl/api/recipes/create-url", token, request) },
|
||||
logMethod = { "parseRecipeFromURL" },
|
||||
logParameters = { "baseUrl = $baseUrl, token = $token, request = $request" }
|
||||
|
||||
)
|
||||
}
|
||||
|
||||
@@ -39,4 +39,11 @@ interface MealieServiceV0 {
|
||||
@Url url: String,
|
||||
@Header(AUTHORIZATION_HEADER_NAME) token: String?,
|
||||
): GetRecipeResponseV0
|
||||
|
||||
@POST
|
||||
suspend fun createRecipeFromURL(
|
||||
@Url url: String,
|
||||
@Header(AUTHORIZATION_HEADER_NAME) token: String?,
|
||||
@Body request: ParseRecipeURLRequestV0,
|
||||
): String
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package gq.kirmanak.mealient.datasource.v0.models
|
||||
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@Serializable
|
||||
data class ParseRecipeURLRequestV0(
|
||||
@SerialName("url") val url: String,
|
||||
)
|
||||
@@ -1,6 +1,11 @@
|
||||
package gq.kirmanak.mealient.datasource.v1
|
||||
|
||||
import gq.kirmanak.mealient.datasource.v1.models.*
|
||||
import gq.kirmanak.mealient.datasource.v1.models.CreateRecipeRequestV1
|
||||
import gq.kirmanak.mealient.datasource.v1.models.GetRecipeResponseV1
|
||||
import gq.kirmanak.mealient.datasource.v1.models.GetRecipeSummaryResponseV1
|
||||
import gq.kirmanak.mealient.datasource.v1.models.ParseRecipeURLRequestV1
|
||||
import gq.kirmanak.mealient.datasource.v1.models.UpdateRecipeRequestV1
|
||||
import gq.kirmanak.mealient.datasource.v1.models.VersionResponseV1
|
||||
|
||||
interface MealieDataSourceV1 {
|
||||
|
||||
@@ -42,4 +47,10 @@ interface MealieDataSourceV1 {
|
||||
token: String?,
|
||||
slug: String,
|
||||
): GetRecipeResponseV1
|
||||
|
||||
suspend fun parseRecipeFromURL(
|
||||
baseUrl: String,
|
||||
token: String?,
|
||||
request: ParseRecipeURLRequestV1,
|
||||
): String
|
||||
}
|
||||
@@ -3,7 +3,13 @@ package gq.kirmanak.mealient.datasource.v1
|
||||
import gq.kirmanak.mealient.datasource.NetworkError
|
||||
import gq.kirmanak.mealient.datasource.NetworkRequestWrapper
|
||||
import gq.kirmanak.mealient.datasource.decode
|
||||
import gq.kirmanak.mealient.datasource.v1.models.*
|
||||
import gq.kirmanak.mealient.datasource.v1.models.CreateRecipeRequestV1
|
||||
import gq.kirmanak.mealient.datasource.v1.models.ErrorDetailV1
|
||||
import gq.kirmanak.mealient.datasource.v1.models.GetRecipeResponseV1
|
||||
import gq.kirmanak.mealient.datasource.v1.models.GetRecipeSummaryResponseV1
|
||||
import gq.kirmanak.mealient.datasource.v1.models.ParseRecipeURLRequestV1
|
||||
import gq.kirmanak.mealient.datasource.v1.models.UpdateRecipeRequestV1
|
||||
import gq.kirmanak.mealient.datasource.v1.models.VersionResponseV1
|
||||
import kotlinx.serialization.SerializationException
|
||||
import kotlinx.serialization.json.Json
|
||||
import retrofit2.HttpException
|
||||
@@ -89,5 +95,16 @@ class MealieDataSourceV1Impl @Inject constructor(
|
||||
logParameters = { "baseUrl = $baseUrl, token = $token, slug = $slug" }
|
||||
)
|
||||
|
||||
override suspend fun parseRecipeFromURL(
|
||||
baseUrl: String,
|
||||
token: String?,
|
||||
request: ParseRecipeURLRequestV1
|
||||
): String = networkRequestWrapper.makeCallAndHandleUnauthorized(
|
||||
block = { service.createRecipeFromURL("$baseUrl/api/recipes/create-url", token, request) },
|
||||
logMethod = { "parseRecipeFromURL" },
|
||||
logParameters = { "baseUrl = $baseUrl, token = $token, request = $request" }
|
||||
|
||||
)
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -46,4 +46,11 @@ interface MealieServiceV1 {
|
||||
@Url url: String,
|
||||
@Header(AUTHORIZATION_HEADER_NAME) token: String?,
|
||||
): GetRecipeResponseV1
|
||||
|
||||
@POST
|
||||
suspend fun createRecipeFromURL(
|
||||
@Url url: String,
|
||||
@Header(AUTHORIZATION_HEADER_NAME) token: String?,
|
||||
@Body request: ParseRecipeURLRequestV1,
|
||||
): String
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package gq.kirmanak.mealient.datasource.v1.models
|
||||
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@Serializable
|
||||
data class ParseRecipeURLRequestV1(
|
||||
@SerialName("url") val url: String,
|
||||
@SerialName("includeTags") val includeTags: Boolean
|
||||
)
|
||||
Reference in New Issue
Block a user