@@ -62,15 +62,24 @@ pub struct KinesisEventRecord {
6262pub struct KinesisRecord {
6363 pub approximate_arrival_timestamp : SecondTimestamp ,
6464 pub data : Base64Data ,
65- pub encryption_type : Option < String > ,
6665 #[ serde( default ) ]
67- pub partition_key : Option < String > ,
66+ pub encryption_type : KinesisEncryptionType ,
6867 #[ serde( default ) ]
69- pub sequence_number : Option < String > ,
68+ pub partition_key : String ,
69+ #[ serde( default ) ]
70+ pub sequence_number : String ,
7071 #[ serde( default ) ]
7172 pub kinesis_schema_version : Option < String > ,
7273}
7374
75+ #[ derive( Clone , Debug , Default , Deserialize , Eq , PartialEq , Serialize ) ]
76+ #[ serde( rename_all = "SCREAMING_SNAKE_CASE" ) ]
77+ pub enum KinesisEncryptionType {
78+ #[ default]
79+ None ,
80+ Kms ,
81+ }
82+
7483#[ cfg( test) ]
7584mod test {
7685 use super :: * ;
@@ -80,6 +89,20 @@ mod test {
8089 fn example_kinesis_event ( ) {
8190 let data = include_bytes ! ( "../../fixtures/example-kinesis-event.json" ) ;
8291 let parsed: KinesisEvent = serde_json:: from_slice ( data) . unwrap ( ) ;
92+ assert_eq ! ( KinesisEncryptionType :: None , parsed. records[ 0 ] . kinesis. encryption_type) ;
93+
94+ let output: String = serde_json:: to_string ( & parsed) . unwrap ( ) ;
95+ let reparsed: KinesisEvent = serde_json:: from_slice ( output. as_bytes ( ) ) . unwrap ( ) ;
96+ assert_eq ! ( parsed, reparsed) ;
97+ }
98+
99+ #[ test]
100+ #[ cfg( feature = "kinesis" ) ]
101+ fn example_kinesis_event_encrypted ( ) {
102+ let data = include_bytes ! ( "../../fixtures/example-kinesis-event-encrypted.json" ) ;
103+ let parsed: KinesisEvent = serde_json:: from_slice ( data) . unwrap ( ) ;
104+ assert_eq ! ( KinesisEncryptionType :: Kms , parsed. records[ 0 ] . kinesis. encryption_type) ;
105+
83106 let output: String = serde_json:: to_string ( & parsed) . unwrap ( ) ;
84107 let reparsed: KinesisEvent = serde_json:: from_slice ( output. as_bytes ( ) ) . unwrap ( ) ;
85108 assert_eq ! ( parsed, reparsed) ;
0 commit comments