#[derive(Debug, Clone, PartialEq, Eq)]
pub enum WireEncoding {
Json,
Cbor,
Protobuf,
Cdr,
Other(String),
}
impl WireEncoding {
pub fn from_encoding_str(s: &str) -> WireEncoding {
match s {
"application/json" | "text/json" => WireEncoding::Json,
"application/cbor" => WireEncoding::Cbor,
"application/protobuf" | "application/x-protobuf" => WireEncoding::Protobuf,
"application/cdr" | "application/x-cdr" => WireEncoding::Cdr,
other => WireEncoding::Other(other.to_string()),
}
}
pub fn as_encoding_str(&self) -> &str {
match self {
WireEncoding::Json => "application/json",
WireEncoding::Cbor => "application/cbor",
WireEncoding::Protobuf => "application/protobuf",
WireEncoding::Cdr => "application/cdr",
WireEncoding::Other(s) => s,
}
}
}
impl std::fmt::Display for WireEncoding {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.write_str(self.as_encoding_str())
}
}