(args: serde_json::Value)
| 103 | } |
| 104 | |
| 105 | fn parse_hrn(args: serde_json::Value) -> Result<HumanReadableName, anyhow::Error> { |
| 106 | match args { |
| 107 | serde_json::Value::String(s) => { |
| 108 | HumanReadableName::from_encoded(&s).map_err(|_e| anyhow!("invalid address")) |
| 109 | } |
| 110 | serde_json::Value::Array(values) => { |
| 111 | if values.len() > 1 { |
| 112 | return Err(anyhow!("too many arguments")); |
| 113 | } |
| 114 | if values.is_empty() { |
| 115 | return Err(anyhow!("no address given")); |
| 116 | } |
| 117 | let address = values |
| 118 | .first() |
| 119 | .unwrap() |
| 120 | .as_str() |
| 121 | .ok_or_else(|| anyhow!("address is not a string"))?; |
| 122 | HumanReadableName::from_encoded(address).map_err(|_e| anyhow!("invalid address")) |
| 123 | } |
| 124 | serde_json::Value::Object(map) => { |
| 125 | let address = map |
| 126 | .get("address") |
| 127 | .ok_or_else(|| anyhow!("no address given"))? |
| 128 | .as_str() |
| 129 | .ok_or_else(|| anyhow!("address is not a string"))?; |
| 130 | HumanReadableName::from_encoded(address).map_err(|_e| anyhow!("invalid address")) |
| 131 | } |
| 132 | _ => Err(anyhow!("invalid json type for address")), |
| 133 | } |
| 134 | } |
| 135 | |
| 136 | async fn fetch_payment_instructions( |
| 137 | plugin: Plugin<()>, |
no test coverage detected