psibase 0.23.0

Library and command-line tool for interacting with psibase networks
Documentation
use crate::services::{accounts, auth_sig, http_server, setcode};
use crate::{account_raw, method_raw, AccountNumber, Action, AnyPublicKey, MethodNumber};
use fracpack::Pack;

macro_rules! account {
    ($name:expr) => {
        AccountNumber::new(account_raw!($name))
    };
}

pub fn new_account_action(sender: AccountNumber, account: AccountNumber) -> Action {
    accounts::Wrapper::pack_from(sender).newAccount(account, account!("auth-any"), false)
}

pub fn set_key_action(account: AccountNumber, key: &AnyPublicKey) -> Action {
    if key.key.service == account!("verify-sig") {
        auth_sig::Wrapper::pack_from(account).setKey(key.key.rawData.to_vec().into())
    } else {
        panic!("unknown account service");
    }
}

pub fn set_auth_service_action(account: AccountNumber, auth_service: AccountNumber) -> Action {
    accounts::Wrapper::pack_from(account).setAuthServ(auth_service)
}

pub fn set_code_action(account: AccountNumber, wasm: Vec<u8>) -> Action {
    setcode::Wrapper::pack_from(account).setCode(account, 0, 0, wasm.into())
}

pub fn reg_server(service: AccountNumber, server_service: AccountNumber) -> Action {
    http_server::Wrapper::pack_from(service).registerServer(server_service)
}

pub fn login_action(user: AccountNumber, app: AccountNumber, root_host: &str) -> Action {
    Action {
        sender: user,
        service: app,
        method: MethodNumber::new(method_raw!("loginSys")),
        rawData: (root_host,).packed().into(),
    }
}