Skip to main content

tx3_resolver/trp/
mod.rs

1pub mod errors;
2pub mod spec;
3
4pub use spec::*;
5
6use tx3_tir::{encoding::AnyTir, reduce::ArgMap};
7
8use crate::{interop, Error};
9
10pub fn parse_resolve_request(request: spec::ResolveParams) -> Result<(AnyTir, ArgMap), Error> {
11    let tir = AnyTir::try_from(request.tir)?;
12
13    let params = tx3_tir::reduce::find_params(&tir);
14    let mut args = ArgMap::new();
15
16    for (key, val) in request.args {
17        if let Some(ty) = params.get(&key) {
18            let arg = interop::from_json(val.clone(), &ty)?;
19            args.insert(key, arg);
20        }
21    }
22
23    Ok((tir, args))
24}