This repository was archived by the owner on Jul 10, 2020. It is now read-only.
Description Waves RPC definition:
enum WavesRPC {
case balance( address: String )
case transaction( String )
case broadcast( Data )
case nodeInfo
}
extension WavesRPC : TargetType {
var baseURL : URL {
return RPCServer ( . waves) . rpcURL
}
var path : String {
switch self {
case . balance( let address) :
return " /addresses/balance/ \( address) /0 "
case . transaction( let hash) :
return " /transactions/info/ \( hash) "
case . broadcast:
return " /transactions/broadcast "
case . nodeInfo:
return " /node/status "
}
}
var method : Moya . Method {
switch self {
case . balance, . transaction, . nodeInfo:
return . get
case . broadcast:
return . post
}
}
var sampleData : Data {
return Data ( )
}
var task : Task {
switch self {
case . balance, . transaction, . nodeInfo:
return . requestPlain
case . broadcast( let data) :
return Task . requestData ( data)
}
}
var headers : [ String : String ] ? {
return [
" content-type " : " application/json " ,
]
}
}
extension WavesRPC : RPCErrorProcessor {
public func catchError( _ response: Response ) -> Error ? {
let range = 200 ... 399
guard !range. contains ( response. statusCode) else {
return nil
}
guard let error = try ? response. map ( WavesRPCError . self) else {
return nil
}
return JSONRPCError ( code: error. error, message: error. message)
}
}
Models:
struct WavesBalance : Codable {
let balance : Int64
}
struct WavesSentTransaction : Codable {
let id : String
}
struct WavesRPCError : Codable {
let error : Int
let message : String
}
struct WavesTransactionInfo : Codable {
let height : Int64
} Reactions are currently unavailable
Waves RPC definition:
Models: