@@ -62,15 +62,24 @@ pub struct KinesisEventRecord {
62
62
pub struct KinesisRecord {
63
63
pub approximate_arrival_timestamp : SecondTimestamp ,
64
64
pub data : Base64Data ,
65
- pub encryption_type : Option < String > ,
66
65
#[ serde( default ) ]
67
- pub partition_key : Option < String > ,
66
+ pub encryption_type : KinesisEncryptionType ,
68
67
#[ serde( default ) ]
69
- pub sequence_number : Option < String > ,
68
+ pub partition_key : String ,
69
+ #[ serde( default ) ]
70
+ pub sequence_number : String ,
70
71
#[ serde( default ) ]
71
72
pub kinesis_schema_version : Option < String > ,
72
73
}
73
74
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
+
74
83
#[ cfg( test) ]
75
84
mod test {
76
85
use super :: * ;
@@ -80,6 +89,20 @@ mod test {
80
89
fn example_kinesis_event ( ) {
81
90
let data = include_bytes ! ( "../../fixtures/example-kinesis-event.json" ) ;
82
91
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
+
83
106
let output: String = serde_json:: to_string ( & parsed) . unwrap ( ) ;
84
107
let reparsed: KinesisEvent = serde_json:: from_slice ( output. as_bytes ( ) ) . unwrap ( ) ;
85
108
assert_eq ! ( parsed, reparsed) ;
0 commit comments