Skip to content

Commit c3490bb

Browse files
committed
compression: Use id as an internal enum tag
This allows us to more easily support compression algorithms that have decompression parameters.
1 parent 8c28d46 commit c3490bb

File tree

1 file changed

+8
-9
lines changed

1 file changed

+8
-9
lines changed

src/models.rs

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ impl Slice {
8888
/// Compression algorithm
8989
#[derive(Clone, Copy, Debug, Deserialize, PartialEq)]
9090
#[serde(rename_all = "lowercase")]
91+
#[serde(tag = "id")]
9192
pub enum Compression {
9293
/// Gzip
9394
Gzip,
@@ -362,11 +363,10 @@ mod tests {
362363
Token::SeqEnd,
363364
Token::Str("compression"),
364365
Token::Some,
365-
Token::Enum {
366-
name: "Compression",
367-
},
366+
Token::Map { len: None },
367+
Token::Str("id"),
368368
Token::Str("gzip"),
369-
Token::Unit,
369+
Token::MapEnd,
370370
Token::StructEnd,
371371
],
372372
);
@@ -643,11 +643,10 @@ mod tests {
643643
},
644644
Token::Str("compression"),
645645
Token::Some,
646-
Token::Enum {
647-
name: "Compression",
648-
},
646+
Token::Map { len: None },
647+
Token::Str("id"),
649648
Token::Str("foo"),
650-
Token::StructEnd,
649+
Token::MapEnd,
651650
],
652651
"unknown variant `foo`, expected `gzip` or `zlib`",
653652
)
@@ -675,7 +674,7 @@ mod tests {
675674

676675
#[test]
677676
fn test_json_optional_fields() {
678-
let json = r#"{"source": "http://example.com", "bucket": "bar", "object": "baz", "dtype": "int32", "offset": 4, "size": 8, "shape": [2, 5], "order": "C", "selection": [[1, 2, 3], [4, 5, 6]], "compression": "gzip"}"#;
677+
let json = r#"{"source": "http://example.com", "bucket": "bar", "object": "baz", "dtype": "int32", "offset": 4, "size": 8, "shape": [2, 5], "order": "C", "selection": [[1, 2, 3], [4, 5, 6]], "compression": {"id": "gzip"}}"#;
679678
let request_data = serde_json::from_str::<RequestData>(json).unwrap();
680679
assert_eq!(request_data, get_test_request_data_optional());
681680
}

0 commit comments

Comments
 (0)