68 lines
1.8 KiB
Swift
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
|
|
}
|
|
}
|