Simplify network layer (#175)

* Use Ktor for network requests

* Remove V0 version

* Remove Retrofit dependency

* Fix url

* Update versions of dependencies

* Revert kotlinx-datetime

Due to https://github.com/Kotlin/kotlinx-datetime/issues/304

* Rename leftovers

* Remove OkHttp

* Remove unused manifest

* Remove unused Hilt module

* Fix building empty image URLs

* Use OkHttp as engine for Ktor

* Reduce visibility of internal classes

* Fix first set up test

* Store only auth token, not header

* Remove UnitInfo/FoodInfo/VersionInfo/NewShoppingListItemInfo

* Remove RecipeSummaryInfo and ShoppingListsInfo

* Remove FullShoppingListInfo

* Remove ParseRecipeURLInfo

* Remove FullRecipeInfo

* Sign out if access token does not work

* Rename getVersionInfo method

* Update version name
This commit is contained in:
Kirill Kamakin
2023-11-05 15:01:19 +01:00
committed by GitHub
parent 888783bf14
commit 5ed1acb678
144 changed files with 1216 additions and 2796 deletions

View File

@@ -1,122 +1,41 @@
package gq.kirmanak.mealient.datasource_test
import gq.kirmanak.mealient.datasource.models.AddRecipeInfo
import gq.kirmanak.mealient.datasource.models.AddRecipeIngredient
import gq.kirmanak.mealient.datasource.models.AddRecipeIngredientInfo
import gq.kirmanak.mealient.datasource.models.AddRecipeInstruction
import gq.kirmanak.mealient.datasource.models.AddRecipeInstructionInfo
import gq.kirmanak.mealient.datasource.models.AddRecipeSettings
import gq.kirmanak.mealient.datasource.models.AddRecipeSettingsInfo
import gq.kirmanak.mealient.datasource.models.FullRecipeInfo
import gq.kirmanak.mealient.datasource.models.RecipeIngredientInfo
import gq.kirmanak.mealient.datasource.models.RecipeInstructionInfo
import gq.kirmanak.mealient.datasource.models.RecipeSettingsInfo
import gq.kirmanak.mealient.datasource.models.RecipeSummaryInfo
import gq.kirmanak.mealient.datasource.models.VersionInfo
import gq.kirmanak.mealient.datasource.v0.models.AddRecipeIngredientV0
import gq.kirmanak.mealient.datasource.v0.models.AddRecipeInstructionV0
import gq.kirmanak.mealient.datasource.v0.models.AddRecipeRequestV0
import gq.kirmanak.mealient.datasource.v0.models.AddRecipeSettingsV0
import gq.kirmanak.mealient.datasource.v0.models.GetRecipeIngredientResponseV0
import gq.kirmanak.mealient.datasource.v0.models.GetRecipeInstructionResponseV0
import gq.kirmanak.mealient.datasource.v0.models.GetRecipeResponseV0
import gq.kirmanak.mealient.datasource.v0.models.GetRecipeSummaryResponseV0
import gq.kirmanak.mealient.datasource.v0.models.VersionResponseV0
import gq.kirmanak.mealient.datasource.v1.models.AddRecipeIngredientV1
import gq.kirmanak.mealient.datasource.v1.models.AddRecipeInstructionV1
import gq.kirmanak.mealient.datasource.v1.models.AddRecipeSettingsV1
import gq.kirmanak.mealient.datasource.v1.models.CreateRecipeRequestV1
import gq.kirmanak.mealient.datasource.v1.models.GetRecipeIngredientResponseV1
import gq.kirmanak.mealient.datasource.v1.models.GetRecipeInstructionResponseV1
import gq.kirmanak.mealient.datasource.v1.models.GetRecipeResponseV1
import gq.kirmanak.mealient.datasource.v1.models.GetRecipeSummaryResponseV1
import gq.kirmanak.mealient.datasource.v1.models.UpdateRecipeRequestV1
import gq.kirmanak.mealient.datasource.v1.models.VersionResponseV1
import gq.kirmanak.mealient.datasource.models.CreateRecipeRequest
import gq.kirmanak.mealient.datasource.models.GetRecipeIngredientResponse
import gq.kirmanak.mealient.datasource.models.GetRecipeInstructionResponse
import gq.kirmanak.mealient.datasource.models.GetRecipeResponse
import gq.kirmanak.mealient.datasource.models.GetRecipeSettingsResponse
import gq.kirmanak.mealient.datasource.models.GetRecipeSummaryResponse
import gq.kirmanak.mealient.datasource.models.UpdateRecipeRequest
import kotlinx.datetime.LocalDate
import kotlinx.datetime.LocalDateTime
val RECIPE_SUMMARY_CAKE = RecipeSummaryInfo(
val RECIPE_SUMMARY_CAKE = GetRecipeSummaryResponse(
remoteId = "1",
name = "Cake",
slug = "cake",
description = "A tasty cake",
dateAdded = LocalDate.parse("2021-11-13"),
dateUpdated = LocalDateTime.parse("2021-11-13T15:30:13"),
imageId = "cake",
)
val RECIPE_SUMMARY_PORRIDGE_V0 = RecipeSummaryInfo(
val RECIPE_SUMMARY_PORRIDGE = GetRecipeSummaryResponse(
remoteId = "2",
name = "Porridge",
slug = "porridge",
description = "A tasty porridge",
dateAdded = LocalDate.parse("2021-11-12"),
dateUpdated = LocalDateTime.parse("2021-10-13T17:35:23"),
imageId = "porridge",
)
val RECIPE_SUMMARY_PORRIDGE_V1 = RecipeSummaryInfo(
remoteId = "2",
name = "Porridge",
slug = "porridge",
description = "A tasty porridge",
dateAdded = LocalDate.parse("2021-11-12"),
dateUpdated = LocalDateTime.parse("2021-10-13T17:35:23"),
imageId = "2",
)
val TEST_RECIPE_SUMMARIES = listOf(RECIPE_SUMMARY_CAKE, RECIPE_SUMMARY_PORRIDGE_V0)
val SUGAR_INGREDIENT = RecipeIngredientInfo(
note = "2 oz of white sugar",
quantity = 1.0,
unit = null,
food = null,
title = null,
)
val BREAD_INGREDIENT = RecipeIngredientInfo(
note = "2 oz of white bread",
quantity = 1.0,
unit = null,
food = null,
title = null,
)
private val MILK_INGREDIENT = RecipeIngredientInfo(
note = "2 oz of white milk",
quantity = 1.0,
unit = null,
food = null,
title = null,
)
val MIX_INSTRUCTION = RecipeInstructionInfo(
text = "Mix the ingredients"
)
private val BAKE_INSTRUCTION = RecipeInstructionInfo(
text = "Bake the ingredients"
)
private val BOIL_INSTRUCTION = RecipeInstructionInfo(
text = "Boil the ingredients"
)
val CAKE_FULL_RECIPE_INFO = FullRecipeInfo(
remoteId = "1",
name = "Cake",
recipeYield = "4 servings",
recipeIngredients = listOf(SUGAR_INGREDIENT, BREAD_INGREDIENT),
recipeInstructions = listOf(MIX_INSTRUCTION, BAKE_INSTRUCTION),
settings = RecipeSettingsInfo(disableAmounts = true)
)
val PORRIDGE_FULL_RECIPE_INFO = FullRecipeInfo(
remoteId = "2",
name = "Porridge",
recipeYield = "3 servings",
recipeIngredients = listOf(SUGAR_INGREDIENT, MILK_INGREDIENT),
recipeInstructions = listOf(MIX_INSTRUCTION, BOIL_INSTRUCTION),
settings = RecipeSettingsInfo(disableAmounts = true)
)
val TEST_RECIPE_SUMMARIES = listOf(RECIPE_SUMMARY_CAKE, RECIPE_SUMMARY_PORRIDGE)
val SUGAR_ADD_RECIPE_INGREDIENT_INFO = AddRecipeIngredientInfo("2 oz of white sugar")
@@ -143,16 +62,7 @@ val PORRIDGE_ADD_RECIPE_INFO = AddRecipeInfo(
settings = ADD_RECIPE_INFO_SETTINGS,
)
val PORRIDGE_RECIPE_SUMMARY_RESPONSE_V0 = GetRecipeSummaryResponseV0(
remoteId = 2,
name = "Porridge",
slug = "porridge",
description = "A tasty porridge",
dateAdded = LocalDate.parse("2021-11-12"),
dateUpdated = LocalDateTime.parse("2021-10-13T17:35:23"),
)
val PORRIDGE_RECIPE_SUMMARY_RESPONSE_V1 = GetRecipeSummaryResponseV1(
val PORRIDGE_RECIPE_SUMMARY_RESPONSE = GetRecipeSummaryResponse(
remoteId = "2",
name = "Porridge",
slug = "porridge",
@@ -161,19 +71,7 @@ val PORRIDGE_RECIPE_SUMMARY_RESPONSE_V1 = GetRecipeSummaryResponseV1(
dateUpdated = LocalDateTime.parse("2021-10-13T17:35:23"),
)
val VERSION_RESPONSE_V0 = VersionResponseV0("v0.5.6")
val VERSION_INFO_V0 = VersionInfo("v0.5.6")
val VERSION_RESPONSE_V1 = VersionResponseV1("v1.0.0-beta05")
val VERSION_INFO_V1 = VersionInfo("v1.0.0-beta05")
val MILK_RECIPE_INGREDIENT_RESPONSE_V0 = GetRecipeIngredientResponseV0("2 oz of white milk")
val SUGAR_RECIPE_INGREDIENT_RESPONSE_V0 = GetRecipeIngredientResponseV0("2 oz of white sugar")
val MILK_RECIPE_INGREDIENT_RESPONSE_V1 = GetRecipeIngredientResponseV1(
val MILK_RECIPE_INGREDIENT_RESPONSE = GetRecipeIngredientResponse(
note = "2 oz of white milk",
quantity = 1.0,
unit = null,
@@ -181,7 +79,7 @@ val MILK_RECIPE_INGREDIENT_RESPONSE_V1 = GetRecipeIngredientResponseV1(
title = null,
)
val SUGAR_RECIPE_INGREDIENT_RESPONSE_V1 = GetRecipeIngredientResponseV1(
val SUGAR_RECIPE_INGREDIENT_RESPONSE = GetRecipeIngredientResponse(
note = "2 oz of white sugar",
quantity = 1.0,
unit = null,
@@ -189,113 +87,81 @@ val SUGAR_RECIPE_INGREDIENT_RESPONSE_V1 = GetRecipeIngredientResponseV1(
title = null,
)
val MILK_RECIPE_INGREDIENT_INFO = RecipeIngredientInfo(
note = "2 oz of white milk",
val BREAD_RECIPE_INGREDIENT_RESPONSE = GetRecipeIngredientResponse(
note = "2 oz of white bread",
quantity = 1.0,
unit = null,
food = null,
title = null,
)
val MIX_RECIPE_INSTRUCTION_RESPONSE_V0 = GetRecipeInstructionResponseV0("Mix the ingredients")
val MIX_RECIPE_INSTRUCTION_RESPONSE = GetRecipeInstructionResponse("Mix the ingredients")
val BOIL_RECIPE_INSTRUCTION_RESPONSE_V0 = GetRecipeInstructionResponseV0("Boil the ingredients")
val BAKE_RECIPE_INSTRUCTION_RESPONSE = GetRecipeInstructionResponse("Bake the ingredients")
val MIX_RECIPE_INSTRUCTION_RESPONSE_V1 = GetRecipeInstructionResponseV1("Mix the ingredients")
val BOIL_RECIPE_INSTRUCTION_RESPONSE = GetRecipeInstructionResponse("Boil the ingredients")
val BOIL_RECIPE_INSTRUCTION_RESPONSE_V1 = GetRecipeInstructionResponseV1("Boil the ingredients")
val NO_AMOUNT_RECIPE_SETTINGS_RESPONSE = GetRecipeSettingsResponse(disableAmount = true)
val MIX_RECIPE_INSTRUCTION_INFO = RecipeInstructionInfo("Mix the ingredients")
val PORRIDGE_RECIPE_RESPONSE_V0 = GetRecipeResponseV0(
remoteId = 2,
name = "Porridge",
recipeYield = "3 servings",
recipeIngredients = listOf(
SUGAR_RECIPE_INGREDIENT_RESPONSE_V0,
MILK_RECIPE_INGREDIENT_RESPONSE_V0,
),
recipeInstructions = listOf(
MIX_RECIPE_INSTRUCTION_RESPONSE_V0,
BOIL_RECIPE_INSTRUCTION_RESPONSE_V0
),
val CAKE_RECIPE_RESPONSE = GetRecipeResponse(
remoteId = "1",
name = "Cake",
recipeYield = "4 servings",
recipeIngredients = listOf(SUGAR_RECIPE_INGREDIENT_RESPONSE, BREAD_RECIPE_INGREDIENT_RESPONSE),
recipeInstructions = listOf(MIX_RECIPE_INSTRUCTION_RESPONSE, BAKE_RECIPE_INSTRUCTION_RESPONSE),
settings = NO_AMOUNT_RECIPE_SETTINGS_RESPONSE,
)
val PORRIDGE_RECIPE_RESPONSE_V1 = GetRecipeResponseV1(
val PORRIDGE_RECIPE_RESPONSE = GetRecipeResponse(
remoteId = "2",
recipeYield = "3 servings",
name = "Porridge",
recipeIngredients = listOf(
SUGAR_RECIPE_INGREDIENT_RESPONSE_V1,
MILK_RECIPE_INGREDIENT_RESPONSE_V1,
SUGAR_RECIPE_INGREDIENT_RESPONSE,
MILK_RECIPE_INGREDIENT_RESPONSE,
),
recipeInstructions = listOf(
MIX_RECIPE_INSTRUCTION_RESPONSE_V1,
BOIL_RECIPE_INSTRUCTION_RESPONSE_V1
MIX_RECIPE_INSTRUCTION_RESPONSE,
BOIL_RECIPE_INSTRUCTION_RESPONSE
),
)
val MIX_ADD_RECIPE_INSTRUCTION_REQUEST_V0 = AddRecipeInstructionV0("Mix the ingredients")
val BOIL_ADD_RECIPE_INSTRUCTION_REQUEST_V0 = AddRecipeInstructionV0("Boil the ingredients")
val SUGAR_ADD_RECIPE_INGREDIENT_REQUEST_V0 = AddRecipeIngredientV0("2 oz of white sugar")
val MILK_ADD_RECIPE_INGREDIENT_REQUEST_V0 = AddRecipeIngredientV0("2 oz of white milk")
val ADD_RECIPE_REQUEST_SETTINGS_V0 = AddRecipeSettingsV0(disableComments = false, public = true)
val PORRIDGE_ADD_RECIPE_REQUEST_V0 = AddRecipeRequestV0(
name = "Porridge",
description = "A tasty porridge",
recipeYield = "3 servings",
recipeInstructions = listOf(
MIX_ADD_RECIPE_INSTRUCTION_REQUEST_V0,
BOIL_ADD_RECIPE_INSTRUCTION_REQUEST_V0,
),
recipeIngredient = listOf(
MILK_ADD_RECIPE_INGREDIENT_REQUEST_V0,
SUGAR_ADD_RECIPE_INGREDIENT_REQUEST_V0,
),
settings = ADD_RECIPE_REQUEST_SETTINGS_V0
)
val MIX_ADD_RECIPE_INSTRUCTION_REQUEST_V1 = AddRecipeInstructionV1(
val MIX_ADD_RECIPE_INSTRUCTION_REQUEST = AddRecipeInstruction(
id = "1",
text = "Mix the ingredients",
ingredientReferences = emptyList()
)
val BOIL_ADD_RECIPE_INSTRUCTION_REQUEST_V1 = AddRecipeInstructionV1(
val BOIL_ADD_RECIPE_INSTRUCTION_REQUEST = AddRecipeInstruction(
id = "2",
text = "Boil the ingredients",
ingredientReferences = emptyList()
)
val SUGAR_ADD_RECIPE_INGREDIENT_REQUEST_V1 = AddRecipeIngredientV1(
val SUGAR_ADD_RECIPE_INGREDIENT_REQUEST = AddRecipeIngredient(
id = "3",
note = "2 oz of white sugar"
)
val MILK_ADD_RECIPE_INGREDIENT_REQUEST_V1 = AddRecipeIngredientV1(
val MILK_ADD_RECIPE_INGREDIENT_REQUEST = AddRecipeIngredient(
id = "4",
note = "2 oz of white milk"
)
val ADD_RECIPE_REQUEST_SETTINGS_V1 = AddRecipeSettingsV1(disableComments = false, public = true)
val ADD_RECIPE_REQUEST_SETTINGS = AddRecipeSettings(disableComments = false, public = true)
val PORRIDGE_CREATE_RECIPE_REQUEST_V1 = CreateRecipeRequestV1(name = "Porridge")
val PORRIDGE_CREATE_RECIPE_REQUEST = CreateRecipeRequest(name = "Porridge")
val PORRIDGE_UPDATE_RECIPE_REQUEST_V1 = UpdateRecipeRequestV1(
val PORRIDGE_UPDATE_RECIPE_REQUEST = UpdateRecipeRequest(
description = "A tasty porridge",
recipeYield = "3 servings",
recipeInstructions = listOf(
MIX_ADD_RECIPE_INSTRUCTION_REQUEST_V1,
BOIL_ADD_RECIPE_INSTRUCTION_REQUEST_V1,
MIX_ADD_RECIPE_INSTRUCTION_REQUEST,
BOIL_ADD_RECIPE_INSTRUCTION_REQUEST,
),
recipeIngredient = listOf(
MILK_ADD_RECIPE_INGREDIENT_REQUEST_V1,
SUGAR_ADD_RECIPE_INGREDIENT_REQUEST_V1,
MILK_ADD_RECIPE_INGREDIENT_REQUEST,
SUGAR_ADD_RECIPE_INGREDIENT_REQUEST,
),
settings = ADD_RECIPE_REQUEST_SETTINGS_V1
settings = ADD_RECIPE_REQUEST_SETTINGS
)