@@ -7,12 +7,45 @@ use crate::signed_doc_spec::CatalystSignedDocSpec;
77
88/// `catalyst_signed_documents_rules` macro implementation
99pub ( crate ) fn catalyst_signed_documents_rules_impl ( ) -> anyhow:: Result < TokenStream > {
10- let _spec = CatalystSignedDocSpec :: load_signed_doc_spec ( ) ?;
10+ let spec = CatalystSignedDocSpec :: load_signed_doc_spec ( ) ?;
11+
12+ let mut rules_definitions = Vec :: new ( ) ;
13+ for ( doc_name, _doc_spec) in spec. docs {
14+ let const_type_name_ident = doc_name. ident ( ) ;
15+
16+ // TODO: impleemnt a proper initialisation for all specific validation rules
17+ let rules = quote ! {
18+ crate :: validator:: rules:: Rules {
19+ id: crate :: validator:: rules:: IdRule ,
20+ ver: crate :: validator:: rules:: VerRule ,
21+ content_type: crate :: validator:: rules:: ContentTypeRule {
22+ exp: ContentType :: Json ,
23+ } ,
24+ content_encoding: crate :: validator:: rules:: ContentEncodingRule {
25+ exp: ContentEncoding :: Brotli ,
26+ optional: false ,
27+ } ,
28+ content: crate :: validator:: rules:: ContentRule :: NotSpecified ,
29+ parameters: crate :: validator:: rules:: ParametersRule :: NotSpecified ,
30+ doc_ref: crate :: validator:: rules:: RefRule :: NotSpecified ,
31+ reply: crate :: validator:: rules:: ReplyRule :: NotSpecified ,
32+ section: crate :: validator:: rules:: SectionRule :: NotSpecified ,
33+ kid: crate :: validator:: rules:: SignatureKidRule {
34+ exp: & [ ] ,
35+ } ,
36+ }
37+ } ;
38+
39+ let rule_defintion = quote ! {
40+ ( #const_type_name_ident, #rules) ,
41+ } ;
42+ rules_definitions. push ( rule_defintion) ;
43+ }
1144
1245 Ok ( quote ! {
1346 /// Returns an iterator with all defined Catalyst Signed Documents validation rules per corresponding document type
14- fn documents_rules( ) -> impl Iterator <Item = ( DocType , Rules ) > {
15- [ ] . into_iter( )
47+ fn documents_rules( ) -> impl Iterator <Item = ( crate :: DocType , crate :: validator :: rules :: Rules ) > {
48+ [ # ( #rules_definitions ) * ] . into_iter( )
1649 }
1750 } )
1851}
0 commit comments