76 lines
1.6 KiB
Swift
76 lines
1.6 KiB
Swift
//
|
||
// Api.swift
|
||
// comments
|
||
//
|
||
// Created by Эрнест Литвиненко on 11.03.2024.
|
||
//
|
||
|
||
import Foundation
|
||
import Alamofire
|
||
|
||
struct PostStruct: Decodable, Identifiable {
|
||
var id: Int
|
||
var userId: Int
|
||
var title: String
|
||
var body: String
|
||
}
|
||
|
||
struct CardProps: Decodable, Identifiable, Hashable{
|
||
var id: Int
|
||
var name: String
|
||
var amount: Float
|
||
var lastDigits: String
|
||
var color: String
|
||
}
|
||
|
||
struct FetchBalance: Decodable {
|
||
var amount: String
|
||
var currency: String
|
||
}
|
||
|
||
class Api {
|
||
private let BASE_URL = "http://localhost:3000"
|
||
func fetchPosts() async -> [PostStruct] {
|
||
let result = await AF.request(BASE_URL + "/posts").serializingDecodable([PostStruct].self).result
|
||
|
||
var data: [PostStruct] = []
|
||
|
||
do {
|
||
try data = result.get()
|
||
} catch {
|
||
return []
|
||
}
|
||
return data
|
||
}
|
||
|
||
func fetchCards() async -> [CardProps] {
|
||
let result = await AF.request(BASE_URL + "/cards").serializingDecodable([CardProps].self).result
|
||
|
||
var data: [CardProps] = []
|
||
|
||
do {
|
||
try data = result.get()
|
||
} catch {
|
||
return []
|
||
}
|
||
return data
|
||
}
|
||
|
||
func fetchBalance() async -> FetchBalance? {
|
||
let result = await AF.request(BASE_URL + "/balance").serializingDecodable(FetchBalance.self).result
|
||
|
||
var data: FetchBalance? = nil
|
||
|
||
do {
|
||
try data = result.get()
|
||
} catch {
|
||
return nil
|
||
}
|
||
return data!
|
||
}
|
||
}
|
||
|
||
|
||
|
||
|