croncat_mod_generic/
helpers.rs1use cosmwasm_std::{to_vec, Binary, Deps, Empty, QueryRequest, StdError, StdResult, WasmQuery};
2use serde_cw_value::Value;
3
4pub fn query_wasm_smart_raw(
5 deps: Deps,
6 contract_addr: impl Into<String>,
7 msg: Binary,
8) -> StdResult<Binary> {
9 let contract_addr = contract_addr.into();
10 let request: QueryRequest<Empty> = QueryRequest::Wasm(WasmQuery::Smart { contract_addr, msg });
11
12 let raw = to_vec(&request).map_err(|serialize_err| {
15 StdError::generic_err(format!("Serializing QueryRequest: {}", serialize_err))
16 })?;
17 let bin = match deps.querier.raw_query(&raw) {
18 cosmwasm_std::SystemResult::Ok(cosmwasm_std::ContractResult::Ok(value)) => value,
19 cosmwasm_std::SystemResult::Ok(cosmwasm_std::ContractResult::Err(contract_err)) => {
20 return Err(StdError::generic_err(format!(
21 "Querier contract error: {}",
22 contract_err
23 )));
24 }
25 cosmwasm_std::SystemResult::Err(system_err) => {
26 return Err(StdError::generic_err(format!(
27 "Querier system error: {}",
28 system_err
29 )));
30 }
31 };
32 Ok(bin)
33}
34
35pub fn bin_to_value(bin: &[u8]) -> StdResult<Value> {
36 cosmwasm_std::from_slice(bin)
37 .map_err(|e| StdError::parse_err(std::any::type_name::<serde_cw_value::Value>(), e))
38}