1use crate::msg::QueryMsg;
2use cosmwasm_schema::cw_serde;
3use cosmwasm_std::{to_binary, Addr, QuerierWrapper, QueryRequest, StdResult, WasmQuery};
4use sg_name::{TextRecord, NFT};
5
6#[cw_serde]
8pub struct NameCollectionContract(pub Addr);
9
10impl NameCollectionContract {
11 pub fn addr(&self) -> Addr {
12 self.0.clone()
13 }
14
15 pub fn name(&self, querier: &QuerierWrapper, address: &str) -> StdResult<String> {
16 let res: String = querier.query(&QueryRequest::Wasm(WasmQuery::Smart {
17 contract_addr: self.addr().into(),
18 msg: to_binary(&QueryMsg::Name {
19 address: address.to_string(),
20 })?,
21 }))?;
22
23 Ok(res)
24 }
25
26 pub fn image_nft(&self, querier: &QuerierWrapper, name: &str) -> StdResult<Option<NFT>> {
27 let res: Option<NFT> = querier.query(&QueryRequest::Wasm(WasmQuery::Smart {
28 contract_addr: self.addr().into(),
29 msg: to_binary(&QueryMsg::ImageNFT {
30 name: name.to_string(),
31 })?,
32 }))?;
33
34 Ok(res)
35 }
36
37 pub fn text_records(&self, querier: &QuerierWrapper, name: &str) -> StdResult<Vec<TextRecord>> {
38 let res: Vec<TextRecord> = querier.query(&QueryRequest::Wasm(WasmQuery::Smart {
39 contract_addr: self.addr().into(),
40 msg: to_binary(&QueryMsg::TextRecords {
41 name: name.to_string(),
42 })?,
43 }))?;
44
45 Ok(res)
46 }
47
48 pub fn is_twitter_verified(&self, querier: &QuerierWrapper, name: &str) -> StdResult<bool> {
49 let res: bool = querier.query(&QueryRequest::Wasm(WasmQuery::Smart {
50 contract_addr: self.addr().into(),
51 msg: to_binary(&QueryMsg::IsTwitterVerified {
52 name: name.to_string(),
53 })?,
54 }))?;
55
56 Ok(res)
57 }
58}