Simpler api endpoints are now integrated into the MainViewModel

This commit is contained in:
Vicnet
2023-11-16 17:53:30 +01:00
parent 3563c23e29
commit 23e1a665df
13 changed files with 284 additions and 74 deletions

View File

@@ -40,8 +40,9 @@ struct ApiRequest {
Logger.network.debug("\(method.rawValue) \(path) sending ...")
// Prepare URL
let urlString = serverAddress + cookbookPath + path
Logger.network.debug("Full path: \(urlString)")
let urlString = "https://" + serverAddress + cookbookPath + path
print("Full path: \(urlString)")
//Logger.network.debug("Full path: \(urlString)")
guard let urlStringSanitized = urlString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else { return (nil, .unknownError) }
guard let url = URL(string: urlStringSanitized) else { return (nil, .unknownError) }
@@ -76,6 +77,9 @@ struct ApiRequest {
do {
(data, response) = try await URLSession.shared.data(for: request)
Logger.network.debug("\(method.rawValue) \(path) SUCCESS!")
if let data = data {
print(data, String(data: data, encoding: .utf8))
}
return (data, nil)
} catch {
let error = decodeURLResponse(response: response as? HTTPURLResponse)

View File

@@ -49,7 +49,8 @@ protocol CookbookApi {
/// - Returns: A NetworkError if the request fails. Nil otherwise.
static func createRecipe(
from serverAdress: String,
auth: String
auth: String,
recipe: RecipeDetail
) async -> (NetworkError?)
/// Get the recipe with the specified id.
@@ -94,7 +95,7 @@ protocol CookbookApi {
static func getCategories(
from serverAdress: String,
auth: String
) async -> ([String]?, NetworkError?)
) async -> ([Category]?, NetworkError?)
/// Get all recipes of a specified category.
/// - Parameters:
@@ -185,3 +186,6 @@ protocol CookbookApi {
) async -> (NetworkError?)
}

View File

@@ -43,13 +43,18 @@ class CookbookApiV1: CookbookApi {
return (JSONDecoder.safeDecode(data), nil)
}
static func createRecipe(from serverAdress: String, auth: String) async -> (NetworkError?) {
static func createRecipe(from serverAdress: String, auth: String, recipe: RecipeDetail) async -> (NetworkError?) {
guard let recipeData = JSONEncoder.safeEncode(recipe) else {
return .dataError
}
let request = ApiRequest(
serverAdress: serverAdress,
path: "/api/v1/recipes",
method: .POST,
authString: auth,
headerFields: [HeaderField.ocsRequest(value: true), HeaderField.accept(value: .JSON)]
headerFields: [HeaderField.ocsRequest(value: true), HeaderField.accept(value: .JSON)],
body: recipeData
)
let (data, error) = await request.send()
@@ -119,7 +124,7 @@ class CookbookApiV1: CookbookApi {
return nil
}
static func getCategories(from serverAdress: String, auth: String) async -> ([String]?, NetworkError?) {
static func getCategories(from serverAdress: String, auth: String) async -> ([Category]?, NetworkError?) {
let request = ApiRequest(
serverAdress: serverAdress,
path: "/api/v1/categories",