// // 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( account: String, limit: Int, filter: String? = nil, sort: Sort = .desc, skip: Int? = nil, after: String? = nil, type: T.Type, completion: @escaping (([Action],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.self) { completion($0.value?.actions ?? [], $0.value?.total.value ?? 0, $0.error) } } } extension Network.Service.Actions { struct Response: Decodable { let total: Total let actions: [Action] } struct Act: Decodable { let data: T let name: String let account: String let authorization: [NodeActAuthorization] } // swiftlint:disable identifier_name struct Action: Decodable { let act: Act let trx_id: String var timestamp: String let global_sequence: Int let block_num: Int } struct Total: Decodable { let value: Int } }