diff --git a/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/MealieDataSourceV1.kt b/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/MealieDataSourceV1.kt new file mode 100644 index 0000000..6125e5d --- /dev/null +++ b/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/MealieDataSourceV1.kt @@ -0,0 +1,41 @@ +package gq.kirmanak.mealient.datasource + +import gq.kirmanak.mealient.datasource.models.AddRecipeRequest +import gq.kirmanak.mealient.datasource.models.GetRecipeResponse +import gq.kirmanak.mealient.datasource.models.GetRecipeSummaryResponse +import gq.kirmanak.mealient.datasource.models.VersionResponse + +interface MealieDataSourceV1 { + + suspend fun addRecipe( + baseUrl: String, + token: String?, + recipe: AddRecipeRequest, + ): String + + /** + * Tries to acquire authentication token using the provided credentials + */ + suspend fun authenticate( + baseUrl: String, + username: String, + password: String, + ): String + + suspend fun getVersionInfo( + baseUrl: String, + ): VersionResponse + + suspend fun requestRecipes( + baseUrl: String, + token: String?, + start: Int, + limit: Int, + ): List + + suspend fun requestRecipeInfo( + baseUrl: String, + token: String?, + slug: String, + ): GetRecipeResponse +} \ No newline at end of file diff --git a/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/MealieDataSourceV1Impl.kt b/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/MealieDataSourceV1Impl.kt new file mode 100644 index 0000000..30a5310 --- /dev/null +++ b/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/MealieDataSourceV1Impl.kt @@ -0,0 +1,41 @@ +package gq.kirmanak.mealient.datasource + +import gq.kirmanak.mealient.datasource.models.AddRecipeRequest +import gq.kirmanak.mealient.datasource.models.GetRecipeResponse +import gq.kirmanak.mealient.datasource.models.GetRecipeSummaryResponse +import gq.kirmanak.mealient.datasource.models.VersionResponse + +class MealieDataSourceV1Impl : MealieDataSourceV1 { + override suspend fun addRecipe( + baseUrl: String, + token: String?, + recipe: AddRecipeRequest + ): String { + TODO("Not yet implemented") + } + + override suspend fun authenticate(baseUrl: String, username: String, password: String): String { + TODO("Not yet implemented") + } + + override suspend fun getVersionInfo(baseUrl: String): VersionResponse { + TODO("Not yet implemented") + } + + override suspend fun requestRecipes( + baseUrl: String, + token: String?, + start: Int, + limit: Int + ): List { + TODO("Not yet implemented") + } + + override suspend fun requestRecipeInfo( + baseUrl: String, + token: String?, + slug: String + ): GetRecipeResponse { + TODO("Not yet implemented") + } +} \ No newline at end of file diff --git a/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/MealieServiceV1.kt b/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/MealieServiceV1.kt new file mode 100644 index 0000000..8e7dcb8 --- /dev/null +++ b/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/MealieServiceV1.kt @@ -0,0 +1,50 @@ +package gq.kirmanak.mealient.datasource + +import gq.kirmanak.mealient.datasource.DataSourceModule.Companion.AUTHORIZATION_HEADER_NAME +import gq.kirmanak.mealient.datasource.models.* +import retrofit2.http.* + +interface MealieServiceV1 { + + @FormUrlEncoded + @POST + suspend fun getToken( + @Url url: String, + @Field("username") username: String, + @Field("password") password: String, + ): GetTokenResponse + + @POST + suspend fun addRecipe( + @Url url: String, + @Header(AUTHORIZATION_HEADER_NAME) token: String?, + @Body addRecipeRequest: AddRecipeRequest, + ): String + + @GET + suspend fun getVersion( + @Url url: String, + ): VersionResponse + + @GET + suspend fun getRecipeSummary( + @Url url: String, + @Header(AUTHORIZATION_HEADER_NAME) token: String?, + @Query("start") start: Int, + @Query("limit") limit: Int, + ): List + + @GET + suspend fun getRecipeSummaryV1( + @Url url: String, + @Header(AUTHORIZATION_HEADER_NAME) token: String?, + @Query("page") page: Int, + @Query("perPage") perPage: Int, + ): GetRecipesResponseV1 + + @GET + suspend fun getRecipe( + @Url url: String, + @Header(AUTHORIZATION_HEADER_NAME) token: String?, + ): GetRecipeResponse +} \ No newline at end of file