stellar_xdr/curr/
tx_auths.rs1use super::{
2 FeeBumpTransaction, FeeBumpTransactionEnvelope, FeeBumpTransactionInnerTx,
3 InvokeHostFunctionOp, Operation, OperationBody, SorobanAuthorizationEntry, Transaction,
4 TransactionEnvelope, TransactionV0, TransactionV0Envelope, TransactionV1Envelope, VecM,
5};
6
7impl TransactionEnvelope {
8 pub fn auths(&self) -> FlatMapOperationToSorobanAuthorizationEntryIter<'_> {
9 match self {
10 TransactionEnvelope::TxV0(e) => e.auths(),
11 TransactionEnvelope::Tx(e) => e.auths(),
12 TransactionEnvelope::TxFeeBump(e) => e.auths(),
13 }
14 }
15
16 #[cfg(feature = "alloc")]
17 pub fn auths_mut(&mut self) -> FlatMapOperationToSorobanAuthorizationEntryIterMut<'_> {
18 match self {
19 TransactionEnvelope::TxV0(e) => e.auths_mut(),
20 TransactionEnvelope::Tx(e) => e.auths_mut(),
21 TransactionEnvelope::TxFeeBump(e) => e.auths_mut(),
22 }
23 }
24}
25
26impl FeeBumpTransactionEnvelope {
27 pub fn auths(&self) -> FlatMapOperationToSorobanAuthorizationEntryIter<'_> {
28 self.tx.auths()
29 }
30
31 #[cfg(feature = "alloc")]
32 pub fn auths_mut(&mut self) -> FlatMapOperationToSorobanAuthorizationEntryIterMut<'_> {
33 self.tx.auths_mut()
34 }
35}
36
37impl FeeBumpTransaction {
38 pub fn auths(&self) -> FlatMapOperationToSorobanAuthorizationEntryIter<'_> {
39 self.inner_tx.auths()
40 }
41
42 #[cfg(feature = "alloc")]
43 pub fn auths_mut(&mut self) -> FlatMapOperationToSorobanAuthorizationEntryIterMut<'_> {
44 self.inner_tx.auths_mut()
45 }
46}
47
48impl FeeBumpTransactionInnerTx {
49 pub fn auths(&self) -> FlatMapOperationToSorobanAuthorizationEntryIter<'_> {
50 match self {
51 FeeBumpTransactionInnerTx::Tx(e) => e.auths(),
52 }
53 }
54
55 #[cfg(feature = "alloc")]
56 pub fn auths_mut(&mut self) -> FlatMapOperationToSorobanAuthorizationEntryIterMut<'_> {
57 match self {
58 FeeBumpTransactionInnerTx::Tx(e) => e.auths_mut(),
59 }
60 }
61}
62
63impl TransactionV1Envelope {
64 pub fn auths(&self) -> FlatMapOperationToSorobanAuthorizationEntryIter<'_> {
65 self.tx.auths()
66 }
67
68 #[cfg(feature = "alloc")]
69 pub fn auths_mut(&mut self) -> FlatMapOperationToSorobanAuthorizationEntryIterMut<'_> {
70 self.tx.auths_mut()
71 }
72}
73
74impl TransactionV0Envelope {
75 pub fn auths(&self) -> FlatMapOperationToSorobanAuthorizationEntryIter<'_> {
76 self.tx.auths()
77 }
78
79 #[cfg(feature = "alloc")]
80 pub fn auths_mut(&mut self) -> FlatMapOperationToSorobanAuthorizationEntryIterMut<'_> {
81 self.tx.auths_mut()
82 }
83}
84
85impl Transaction {
86 pub fn auths(&self) -> FlatMapOperationToSorobanAuthorizationEntryIter<'_> {
87 self.operations.auths()
88 }
89
90 #[cfg(feature = "alloc")]
91 pub fn auths_mut(&mut self) -> FlatMapOperationToSorobanAuthorizationEntryIterMut<'_> {
92 self.operations.auths_mut()
93 }
94}
95
96impl TransactionV0 {
97 pub fn auths(&self) -> FlatMapOperationToSorobanAuthorizationEntryIter<'_> {
98 self.operations.auths()
99 }
100
101 #[cfg(feature = "alloc")]
102 pub fn auths_mut(&mut self) -> FlatMapOperationToSorobanAuthorizationEntryIterMut<'_> {
103 self.operations.auths_mut()
104 }
105}
106
107type FlatMapOperationToSorobanAuthorizationEntryIter<'a> = core::iter::FlatMap<
108 core::slice::Iter<'a, Operation>,
109 core::slice::Iter<'a, SorobanAuthorizationEntry>,
110 fn(&'a Operation) -> core::slice::Iter<'a, SorobanAuthorizationEntry>,
111>;
112
113#[cfg(feature = "alloc")]
114type FlatMapOperationToSorobanAuthorizationEntryIterMut<'a> = core::iter::FlatMap<
115 core::slice::IterMut<'a, Operation>,
116 core::slice::IterMut<'a, SorobanAuthorizationEntry>,
117 fn(&'a mut Operation) -> core::slice::IterMut<'a, SorobanAuthorizationEntry>,
118>;
119
120impl<const MAX: u32> VecM<Operation, MAX> {
121 pub fn auths(&self) -> FlatMapOperationToSorobanAuthorizationEntryIter<'_> {
122 self.iter().flat_map(Operation::auths)
123 }
124
125 #[cfg(feature = "alloc")]
126 pub fn auths_mut(&mut self) -> FlatMapOperationToSorobanAuthorizationEntryIterMut<'_> {
127 self.iter_mut().flat_map(Operation::auths_mut)
128 }
129}
130
131impl Operation {
132 pub fn auths(&self) -> core::slice::Iter<'_, SorobanAuthorizationEntry> {
133 self.body.auths()
134 }
135
136 #[cfg(feature = "alloc")]
137 pub fn auths_mut(&mut self) -> core::slice::IterMut<'_, SorobanAuthorizationEntry> {
138 self.body.auths_mut()
139 }
140}
141
142impl OperationBody {
143 pub fn auths(&self) -> core::slice::Iter<'_, SorobanAuthorizationEntry> {
144 match self {
145 OperationBody::InvokeHostFunction(op) => op.auths(),
146 _ => [].iter(),
147 }
148 }
149
150 #[cfg(feature = "alloc")]
151 pub fn auths_mut(&mut self) -> core::slice::IterMut<'_, SorobanAuthorizationEntry> {
152 match self {
153 OperationBody::InvokeHostFunction(op) => op.auths_mut(),
154 _ => [].iter_mut(),
155 }
156 }
157}
158
159impl InvokeHostFunctionOp {
160 pub fn auths(&self) -> core::slice::Iter<'_, SorobanAuthorizationEntry> {
161 self.auth.iter()
162 }
163
164 #[cfg(feature = "alloc")]
165 pub fn auths_mut(&mut self) -> core::slice::IterMut<'_, SorobanAuthorizationEntry> {
166 self.auth.iter_mut()
167 }
168}