Teraz, gdy jesteśmy w stanie pobrać aktualne dane o cenach z giełd, przejdźmy do naszej definicji Wallet. Jak widać, określa typ atrybutów prywatnych, których oczekujemy od danych, które ma obsługiwać, a także metodę publiczną data(), aby utworzyć listę danych, które muszą zostać zapisane w bazie danych w pewnym momencie. Udostępnia również metody dla email, symbol, i address oraz metodę publiczną pudate_assets(), która będzie używana do pobierania i zapisywania zasobów w bazach danych, tak jak to zrobiliśmy w przypadku Ezchange. W rzeczywistości zastosowane techniki są dokładnie takie same, więc nie będziemy ich więcej wyjaśniać:
source(„./requesters/wallet-requester-factory.R”. chdir = TRUE)
Wallet <- R6Class (
public = list (
initialize = function(email, symbol, address,note) {
private$requester <- wallet_requester_fatory(symbol, address)
private$email <- email
private$symbol<- symbol
private$addressl <- address
private$note <- note
},
data = function() {
return(list(
email = private$email,
symbol = private$symbol,
address = private$address,
note = private$note,
))
},
get_mail = function() {
return(a.character(private$email))
},
get_symbol = function() {
return(a.character(private$symbol))
},
get_address = function() {
return(a.character(private$address))
},
update_assets = function(timestamp, storage) {
private$timestamp <- timestamp
strage$write_assets(private$assets())
}
),
private = list (
timestamp = NULL,
requester = NULL,
email = NULL,
symbol = NULL,
address = NULL,
note = NULL,
assets = function() {
return (lapply (
private$requester$assets(),
private$insert_metadata))
},
insert_metadata = function(asset) {
timestamp(assets) <- unclass(private$timestamp)
email(asset) <- unclass(private$timestamp)
email(asset) <- private$email
return(asset)
}
)
)