Files
raspberry/iOS/Wallet/Sources/Network/Service/NetworkServiceActions.swift
Jura Shikin 9b34d78319 WiP
2023-01-23 23:15:06 +03:00

68 lines
1.8 KiB
Swift

//
// NetworkServiceAPIActions.swift
// Wallet
//
// Created by Igor on 05.11.2020.
// Copyright © 2020 List. All rights reserved.
//
import Alamofire
import Foundation
import WalletNetwork
extension Network.Service {
class Actions: Common.Service.Provider {}
}
extension Network.Service.Actions {
func fetch<T: Decodable>(
account: String,
limit: Int,
filter: String? = nil,
sort: Sort = .desc,
skip: Int? = nil,
after: String? = nil,
type: T.Type,
completion: @escaping (([Action<T>],Int,Error?) -> Void)
) {
let environment = ApplicationEnvironment.shared().current
var parameters = [String: Any]()
parameters["account"] = account
parameters["limit"] = limit
parameters["filter"] = filter
parameters["skip"] = skip
parameters["sort"] = sort.rawValue
parameters["after"] = after
AF.request(
"\(environment.hyperion.orCreate(""))/v2/history/get_actions",
method: .get,
parameters: parameters,
headers: HTTPHeaders(environment.headers)
).responseDecodable(of: Response<T>.self) { completion($0.value?.actions ?? [], $0.value?.total.value ?? 0, $0.error) }
}
}
extension Network.Service.Actions {
struct Response<T: Decodable>: Decodable {
let total: Total
let actions: [Action<T>]
}
struct Act<T: Decodable>: Decodable {
let data: T
let name: String
let account: String
let authorization: [NodeActAuthorization]
}
// swiftlint:disable identifier_name
struct Action<T: Decodable>: Decodable {
let act: Act<T>
let trx_id: String
var timestamp: String
let global_sequence: Int
let block_num: Int
}
struct Total: Decodable {
let value: Int
}
}