extern crate libc;
use api::ErrorCode;
use errors::ToErrorCode;
use commands::{Command, CommandExecutor};
use commands::ledger::LedgerCommand;
use utils::cstring::CStringUtils;
use self::libc::c_char;
#[no_mangle]
pub extern fn sovrin_sign_and_submit_request(command_handle: i32,
pool_handle: i32,
wallet_handle: i32,
submitter_did: *const c_char,
request_json: *const c_char,
cb: Option<extern fn(xcommand_handle: i32, err: ErrorCode,
request_result_json: *const c_char)>) -> ErrorCode {
check_useful_c_str!(submitter_did, ErrorCode::CommonInvalidParam3);
check_useful_c_str!(request_json, ErrorCode::CommonInvalidParam4);
check_useful_c_callback!(cb, ErrorCode::CommonInvalidParam5);
let result = CommandExecutor::instance()
.send(Command::Ledger(LedgerCommand::SignAndSubmitRequest(
pool_handle,
wallet_handle,
submitter_did,
request_json,
Box::new(move |result| {
let (err, request_result_json) = result_to_err_code_1!(result, String::new());
let request_result_json = CStringUtils::string_to_cstring(request_result_json);
cb(command_handle, err, request_result_json.as_ptr())
})
)));
result_to_err_code!(result)
}
#[no_mangle]
pub extern fn sovrin_submit_request(command_handle: i32,
pool_handle: i32,
request_json: *const c_char,
cb: Option<extern fn(xcommand_handle: i32, err: ErrorCode,
request_result_json: *const c_char)>) -> ErrorCode {
check_useful_c_str!(request_json, ErrorCode::CommonInvalidParam3);
check_useful_c_callback!(cb, ErrorCode::CommonInvalidParam4);
let result = CommandExecutor::instance()
.send(Command::Ledger(LedgerCommand::SubmitRequest(
pool_handle,
request_json,
Box::new(move |result| {
let (err, request_result_json) = result_to_err_code_1!(result, String::new());
let request_result_json = CStringUtils::string_to_cstring(request_result_json);
cb(command_handle, err, request_result_json.as_ptr())
})
)));
result_to_err_code!(result)
}
#[no_mangle]
pub extern fn sovrin_build_get_ddo_request(command_handle: i32,
submitter_did: *const c_char,
target_did: *const c_char,
cb: Option<extern fn(xcommand_handle: i32, err: ErrorCode,
request_json: *const c_char)>) -> ErrorCode {
check_useful_c_str!(submitter_did, ErrorCode::CommonInvalidParam2);
check_useful_c_str!(target_did, ErrorCode::CommonInvalidParam3);
check_useful_c_callback!(cb, ErrorCode::CommonInvalidParam4);
let result = CommandExecutor::instance()
.send(Command::Ledger(LedgerCommand::BuildGetDdoRequest(
submitter_did,
target_did,
Box::new(move |result| {
let (err, request_json) = result_to_err_code_1!(result, String::new());
let request_json = CStringUtils::string_to_cstring(request_json);
cb(command_handle, err, request_json.as_ptr())
})
)));
result_to_err_code!(result)
}
#[no_mangle]
pub extern fn sovrin_build_nym_request(command_handle: i32,
submitter_did: *const c_char,
target_did: *const c_char,
verkey: *const c_char,
alias: *const c_char,
role: *const c_char,
cb: Option<extern fn(xcommand_handle: i32, err: ErrorCode,
request_json: *const c_char)>) -> ErrorCode {
check_useful_c_str!(submitter_did, ErrorCode::CommonInvalidParam2);
check_useful_c_str!(target_did, ErrorCode::CommonInvalidParam3);
check_useful_opt_c_str!(verkey, ErrorCode::CommonInvalidParam4);
check_useful_opt_c_str!(alias, ErrorCode::CommonInvalidParam5);
check_useful_opt_c_str!(role, ErrorCode::CommonInvalidParam6);
check_useful_c_callback!(cb, ErrorCode::CommonInvalidParam7);
let result = CommandExecutor::instance()
.send(Command::Ledger(LedgerCommand::BuildNymRequest(
submitter_did,
target_did,
verkey,
alias,
role,
Box::new(move |result| {
let (err, request_json) = result_to_err_code_1!(result, String::new());
let request_json = CStringUtils::string_to_cstring(request_json);
cb(command_handle, err, request_json.as_ptr())
})
)));
result_to_err_code!(result)
}
#[no_mangle]
pub extern fn sovrin_build_attrib_request(command_handle: i32,
submitter_did: *const c_char,
target_did: *const c_char,
hash: *const c_char,
raw: *const c_char,
enc: *const c_char,
cb: Option<extern fn(xcommand_handle: i32, err: ErrorCode,
request_json: *const c_char)>) -> ErrorCode {
check_useful_c_str!(submitter_did, ErrorCode::CommonInvalidParam2);
check_useful_c_str!(target_did, ErrorCode::CommonInvalidParam3);
check_useful_opt_c_str!(hash, ErrorCode::CommonInvalidParam4);
check_useful_opt_c_str!(raw, ErrorCode::CommonInvalidParam5);
check_useful_opt_c_str!(enc, ErrorCode::CommonInvalidParam6);
check_useful_c_callback!(cb, ErrorCode::CommonInvalidParam7);
let result = CommandExecutor::instance()
.send(Command::Ledger(LedgerCommand::BuildAttribRequest(
submitter_did,
target_did,
hash,
raw,
enc,
Box::new(move |result| {
let (err, request_json) = result_to_err_code_1!(result, String::new());
let request_json = CStringUtils::string_to_cstring(request_json);
cb(command_handle, err, request_json.as_ptr())
})
)));
result_to_err_code!(result)
}
#[no_mangle]
pub extern fn sovrin_build_get_attrib_request(command_handle: i32,
submitter_did: *const c_char,
target_did: *const c_char,
data: *const c_char,
cb: Option<extern fn(xcommand_handle: i32, err: ErrorCode,
request_json: *const c_char)>) -> ErrorCode {
check_useful_c_str!(submitter_did, ErrorCode::CommonInvalidParam2);
check_useful_c_str!(target_did, ErrorCode::CommonInvalidParam3);
check_useful_c_str!(data, ErrorCode::CommonInvalidParam4);
check_useful_c_callback!(cb, ErrorCode::CommonInvalidParam5);
let result = CommandExecutor::instance()
.send(Command::Ledger(LedgerCommand::BuildGetAttribRequest(
submitter_did,
target_did,
data,
Box::new(move |result| {
let (err, request_json) = result_to_err_code_1!(result, String::new());
let request_json = CStringUtils::string_to_cstring(request_json);
cb(command_handle, err, request_json.as_ptr())
})
)));
result_to_err_code!(result)
}
#[no_mangle]
pub extern fn sovrin_build_get_nym_request(command_handle: i32,
submitter_did: *const c_char,
target_did: *const c_char,
cb: Option<extern fn(xcommand_handle: i32, err: ErrorCode,
request_json: *const c_char)>) -> ErrorCode {
check_useful_c_str!(submitter_did, ErrorCode::CommonInvalidParam2);
check_useful_c_str!(target_did, ErrorCode::CommonInvalidParam3);
check_useful_c_callback!(cb, ErrorCode::CommonInvalidParam4);
let result = CommandExecutor::instance()
.send(Command::Ledger(LedgerCommand::BuildGetNymRequest(
submitter_did,
target_did,
Box::new(move |result| {
let (err, request_json) = result_to_err_code_1!(result, String::new());
let request_json = CStringUtils::string_to_cstring(request_json);
cb(command_handle, err, request_json.as_ptr())
})
)));
result_to_err_code!(result)
}
#[no_mangle]
pub extern fn sovrin_build_schema_request(command_handle: i32,
submitter_did: *const c_char,
data: *const c_char,
cb: Option<extern fn(xcommand_handle: i32, err: ErrorCode,
request_json: *const c_char)>) -> ErrorCode {
check_useful_c_str!(submitter_did, ErrorCode::CommonInvalidParam2);
check_useful_c_str!(data, ErrorCode::CommonInvalidParam3);
check_useful_c_callback!(cb, ErrorCode::CommonInvalidParam4);
let result = CommandExecutor::instance()
.send(Command::Ledger(LedgerCommand::BuildSchemaRequest(
submitter_did,
data,
Box::new(move |result| {
let (err, request_json) = result_to_err_code_1!(result, String::new());
let request_json = CStringUtils::string_to_cstring(request_json);
cb(command_handle, err, request_json.as_ptr())
})
)));
result_to_err_code!(result)
}
#[no_mangle]
pub extern fn sovrin_build_get_schema_request(command_handle: i32,
submitter_did: *const c_char,
dest: *const c_char,
data: *const c_char,
cb: Option<extern fn(xcommand_handle: i32, err: ErrorCode,
request_json: *const c_char)>) -> ErrorCode {
check_useful_c_str!(submitter_did, ErrorCode::CommonInvalidParam2);
check_useful_c_str!(dest, ErrorCode::CommonInvalidParam3);
check_useful_c_str!(data, ErrorCode::CommonInvalidParam4);
check_useful_c_callback!(cb, ErrorCode::CommonInvalidParam5);
let result = CommandExecutor::instance()
.send(Command::Ledger(LedgerCommand::BuildGetSchemaRequest(
submitter_did,
dest,
data,
Box::new(move |result| {
let (err, request_json) = result_to_err_code_1!(result, String::new());
let request_json = CStringUtils::string_to_cstring(request_json);
cb(command_handle, err, request_json.as_ptr())
})
)));
result_to_err_code!(result)
}
#[no_mangle]
pub extern fn sovrin_build_claim_def_txn(command_handle: i32,
submitter_did: *const c_char,
xref: i32,
signature_type: *const c_char,
data: *const c_char,
cb: Option<extern fn(xcommand_handle: i32, err: ErrorCode,
request_result_json: *const c_char)>) -> ErrorCode {
check_useful_c_str!(submitter_did, ErrorCode::CommonInvalidParam2);
check_useful_c_str!(signature_type, ErrorCode::CommonInvalidParam4);
check_useful_c_str!(data, ErrorCode::CommonInvalidParam5);
check_useful_c_callback!(cb, ErrorCode::CommonInvalidParam6);
let result = CommandExecutor::instance()
.send(Command::Ledger(LedgerCommand::BuildClaimDefRequest(
submitter_did,
xref,
signature_type,
data,
Box::new(move |result| {
let (err, request_json) = result_to_err_code_1!(result, String::new());
let request_json = CStringUtils::string_to_cstring(request_json);
cb(command_handle, err, request_json.as_ptr())
})
)));
result_to_err_code!(result)
}
#[no_mangle]
pub extern fn sovrin_build_get_claim_def_txn(command_handle: i32,
submitter_did: *const c_char,
xref: i32,
signature_type: *const c_char,
origin: *const c_char,
cb: Option<extern fn(xcommand_handle: i32, err: ErrorCode,
request_json: *const c_char)>) -> ErrorCode {
check_useful_c_str!(submitter_did, ErrorCode::CommonInvalidParam2);
check_useful_c_str!(signature_type, ErrorCode::CommonInvalidParam4);
check_useful_c_str!(origin, ErrorCode::CommonInvalidParam4);
check_useful_c_callback!(cb, ErrorCode::CommonInvalidParam6);
let result = CommandExecutor::instance()
.send(Command::Ledger(LedgerCommand::BuildGetClaimDefRequest(
submitter_did,
xref,
signature_type,
origin,
Box::new(move |result| {
let (err, request_json) = result_to_err_code_1!(result, String::new());
let request_json = CStringUtils::string_to_cstring(request_json);
cb(command_handle, err, request_json.as_ptr())
})
)));
result_to_err_code!(result)
}
#[no_mangle]
pub extern fn sovrin_build_node_request(command_handle: i32,
submitter_did: *const c_char,
target_did: *const c_char,
data: *const c_char,
cb: Option<extern fn(xcommand_handle: i32, err: ErrorCode,
request_json: *const c_char)>) -> ErrorCode {
check_useful_c_str!(submitter_did, ErrorCode::CommonInvalidParam2);
check_useful_c_str!(target_did, ErrorCode::CommonInvalidParam3);
check_useful_c_str!(data, ErrorCode::CommonInvalidParam4);
check_useful_c_callback!(cb, ErrorCode::CommonInvalidParam5);
let result = CommandExecutor::instance()
.send(Command::Ledger(LedgerCommand::BuildNodeRequest(
submitter_did,
target_did,
data,
Box::new(move |result| {
let (err, request_json) = result_to_err_code_1!(result, String::new());
let request_json = CStringUtils::string_to_cstring(request_json);
cb(command_handle, err, request_json.as_ptr())
})
)));
result_to_err_code!(result)
}
#[no_mangle]
pub extern fn sovrin_build_get_txn_request(command_handle: i32,
submitter_did: *const c_char,
data: i32,
cb: Option<extern fn(xcommand_handle: i32, err: ErrorCode,
request_json: *const c_char)>) -> ErrorCode {
check_useful_c_str!(submitter_did, ErrorCode::CommonInvalidParam2);
check_useful_c_callback!(cb, ErrorCode::CommonInvalidParam4);
let result = CommandExecutor::instance()
.send(Command::Ledger(LedgerCommand::BuildGetTxnRequest(
submitter_did,
data,
Box::new(move |result| {
let (err, request_json) = result_to_err_code_1!(result, String::new());
let request_json = CStringUtils::string_to_cstring(request_json);
cb(command_handle, err, request_json.as_ptr())
})
)));
result_to_err_code!(result)
}