1use r402_protocol::payment::PaymentRequirements;
4
5use crate::hooks::WirePaymentPayload;
6use crate::resource::ResourceServer;
7use crate::scheme::DynSchemeNetworkServer;
8
9impl ResourceServer {
10 #[must_use]
15 pub fn find_matching_requirements<'a>(
16 &self,
17 available: &'a [PaymentRequirements],
18 payload: &WirePaymentPayload,
19 ) -> Option<&'a PaymentRequirements> {
20 available.iter().find(|req| {
21 let dynamic = self
22 .registered_scheme(req.scheme.as_str(), &req.network)
23 .map_or(&[][..], DynSchemeNetworkServer::dynamic_extra_fields);
24 req.matches_payload_accepted_with_dynamic(&payload.accepted, dynamic)
25 })
26 }
27}