8 个版本
0.1.2 | 2023年10月10日 |
---|---|
0.1.1 | 2023年10月10日 |
0.1.0 | 2020年9月3日 |
0.0.5 | 2019年7月9日 |
0.0.4 | 2019年6月28日 |
在 解析器实现 中排名 #1012
33KB
804 行(不包括注释)
AWS 事件流解析器
Rust 实现的 vnd.amazon.event-stream
二进制格式
实现基于以下内容
- https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectSELECTContent.html#RESTObjectSELECTContent-responses
- https://github.com/awslabs/aws-c-event-stream
- https://github.com/aws/aws-sdk-ruby/
- https://github.com/lifion/lifion-aws-event-stream
安装
将以下内容添加到您的 Cargo.toml
[dependencies]
aws_event_stream_parser = "0.1.0"
用法
普通解析器
extern crate aws_event_stream_parser;
use aws_event_stream_parser::parse_message;
let res = parse_message(&hex!("0000003d0000002007fd83960c636f6e74656e742d747970650700106170706c69636174696f6e2f6a736f6e7b27666f6f273a27626172277d8d9c08b1")).unwrap();
println!("{:?}", res);
/*
([], Message {
prelude: PreludeBlock {
total_length: 61,
- headers_length: 32,
checksum: 134054806
},
headers: HeaderBlock {
headers: [
Header { key: "content-type", value: String("application/json") }
]
},
body: [123, 39, 102, 111, 111, 39, 58, 39, 98, 97, 114, 39, 125],
checksum: 2375813297 })
*/
println!("{:?}", res.1.valid());
// true
帧编解码器
(更多信息请参阅 https://tokio.rs/docs/going-deeper/frames/ )
use aws_event_stream_parser::EventStreamCodec;
TcpStream::connect(&addr).and_then(|sock| {
let framed_sock = Framed::new(sock, EventStreamCodec::new());
framed_sock.for_each(|line| {
println!("Received line {}", line);
Ok(())
})
});
规范
此解析器基于 AWS 文档和其他协议实现进行建模。我们还记录了格式以供未来的实现使用。
头图
贡献
欢迎拉取请求。对于重大更改,请先提出问题以讨论您希望更改的内容。
请确保适当地更新测试。
许可证
依赖项
~6MB
~97K SLoC