add some functions for converting structures to string
This commit is contained in:
parent
6c443784bc
commit
94f7b83c5a
1
src/types/client/fcp_request.rs
Normal file
1
src/types/client/fcp_request.rs
Normal file
|
@ -0,0 +1 @@
|
||||||
|
|
|
@ -10,7 +10,7 @@ impl ClientHello {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl FcpRequest for ClientHello {
|
impl FcpRequest for ClientHello {
|
||||||
fn parse(&self) -> String {
|
fn convert(&self) -> String {
|
||||||
return format!(
|
return format!(
|
||||||
"ClientHello\n\
|
"ClientHello\n\
|
||||||
Name={}\n\
|
Name={}\n\
|
||||||
|
@ -27,10 +27,10 @@ pub struct ClientHello {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn client_hello_parses() {
|
fn client_hello_converts() {
|
||||||
let hello = ClientHello::new("user name".to_string(), 2.0);
|
let hello = ClientHello::new("user name".to_string(), 2.0);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
hello.parse(),
|
hello.convert(),
|
||||||
"ClientHello\nName=user name\nExpectedVersion=2\nEndMessage\n\n"
|
"ClientHello\nName=user name\nExpectedVersion=2\nEndMessage\n\n"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -96,18 +96,18 @@ pub struct ClientPut {
|
||||||
uri: String, //TODO create key type
|
uri: String, //TODO create key type
|
||||||
data_length: u64,
|
data_length: u64,
|
||||||
filename: String,
|
filename: String,
|
||||||
content_type: Option<String>,
|
content_type: Option<&'static String>,
|
||||||
identifier: Option<String>,
|
identifier: Option<String>,
|
||||||
verbosity: Option<VerbosityPut>,
|
verbosity: Option<VerbosityPut>,
|
||||||
max_retries: Option<Retry>,
|
max_retries: Option<Retry>,
|
||||||
priority_class: Option<i8>,
|
priority_class: Option<Priority>,
|
||||||
get_chk_only: Option<bool>,
|
get_chk_only: Option<bool>,
|
||||||
global: Option<bool>,
|
global: Option<bool>,
|
||||||
dont_compress: Option<bool>,
|
dont_compress: Option<bool>,
|
||||||
codecs: Option<Vec<String>>,
|
codecs: Option<Vec<String>>,
|
||||||
client_token: Option<String>,
|
client_token: Option<String>,
|
||||||
persistence: Option<Persistence>,
|
persistence: Option<Persistence>,
|
||||||
target_filename: Option<Box<OsStr>>,
|
target_filename: Option<String>, // TODO create filename type (not PATH, ONLY SLASHES)
|
||||||
early_encode: Option<bool>,
|
early_encode: Option<bool>,
|
||||||
upload_ffrom: Option<UploadForm>,
|
upload_ffrom: Option<UploadForm>,
|
||||||
target_uri: Option<String>, // cloning uri if does not exists
|
target_uri: Option<String>, // cloning uri if does not exists
|
||||||
|
@ -123,15 +123,15 @@ pub struct ClientPut {
|
||||||
metadata_threshold: Option<i64>,
|
metadata_threshold: Option<i64>,
|
||||||
data: Option<String>, // Data fromdirect
|
data: Option<String>, // Data fromdirect
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
impl FcpRequest for ClientPut {
|
impl FcpRequest for ClientPut {
|
||||||
fn parse(self) -> String {
|
fn convert(&self) -> String {
|
||||||
format!(
|
format!(
|
||||||
"ClientPut\n\
|
"ClientPut\n\
|
||||||
{}\
|
{}\
|
||||||
{}\
|
{}\
|
||||||
{}\
|
{}\
|
||||||
{}\
|
{}\
|
||||||
|
"/*
|
||||||
{}\
|
{}\
|
||||||
{}\
|
{}\
|
||||||
{}\
|
{}\
|
||||||
|
@ -158,57 +158,14 @@ impl FcpRequest for ClientPut {
|
||||||
{}\
|
{}\
|
||||||
EndMessage\n\
|
EndMessage\n\
|
||||||
{}\
|
{}\
|
||||||
",
|
",*/,
|
||||||
self.uri,
|
format!("URI={}\n", self.uri),
|
||||||
self.data_length,
|
format!("DataLength={}\n", self.data_length),
|
||||||
self.filename,
|
format!("Filename={}\n", self.filename),
|
||||||
self.content_type.unwrap_or("".to_string()),
|
to_fcp_unwrap("ContentType", self.content_type, "\n")
|
||||||
self.identifier.unwrap_or("".to_string()),
|
|
||||||
self.verbosity.unwrap_or("".to_string()),
|
|
||||||
self.max_retries.unwrap_or("".to_string()),
|
|
||||||
self.priority_class.unwrap_or("".to_string()),
|
|
||||||
self.get_chk_only.unwrap_or("".to_string()),
|
|
||||||
self.global.unwrap_or("".to_string()),
|
|
||||||
self.dont_compress.unwrap_or("".to_string()),
|
|
||||||
self.codecs.unwrap_or("".to_string()),
|
|
||||||
self.identifier.unwrap_or("".to_string()),
|
|
||||||
self.identifier.unwrap_or("".to_string()),
|
|
||||||
self.identifier.unwrap_or("".to_string()),
|
|
||||||
self.identifier.unwrap_or("".to_string()),
|
|
||||||
self.identifier.unwrap_or("".to_string()),
|
|
||||||
self.identifier.unwrap_or("".to_string()),
|
|
||||||
self.identifier.unwrap_or("".to_string()),
|
|
||||||
self.identifier.unwrap_or("".to_string()),
|
|
||||||
self.identifier.unwrap_or("".to_string()),
|
|
||||||
self.identifier.unwrap_or("".to_string()),
|
|
||||||
self.identifier.unwrap_or("".to_string()),
|
|
||||||
self.identifier.unwrap_or("".to_string()),
|
|
||||||
self.identifier.unwrap_or("".to_string()),
|
|
||||||
self.identifier.unwrap_or("".to_string()),
|
|
||||||
self.identifier.unwrap_or("".to_string()),
|
|
||||||
self.identifier.unwrap_or("".to_string()),
|
|
||||||
self.identifier.unwrap_or("".to_string()),
|
|
||||||
self.identifier.unwrap_or("".to_string()),
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}*/
|
|
||||||
|
|
||||||
impl FcpRequest for String {
|
|
||||||
fn parse(&self) -> String {
|
|
||||||
self.to_string()
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
impl FcpRequest for bool {
|
|
||||||
fn parse(&self) -> String {
|
|
||||||
if *self {
|
|
||||||
"true".to_string()
|
|
||||||
} else {
|
|
||||||
"false".to_string()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub struct ClientGet {
|
pub struct ClientGet {
|
||||||
message_name: String,
|
message_name: String,
|
||||||
ignore_ds: Option<bool>,
|
ignore_ds: Option<bool>,
|
||||||
|
|
|
@ -26,7 +26,7 @@ pub enum VerbosityPut {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl FcpRequest for VerbosityPut {
|
impl FcpRequest for VerbosityPut {
|
||||||
fn parse(&self) -> String {
|
fn convert(&self) -> String {
|
||||||
match self {
|
match self {
|
||||||
VerbosityPut::SimpleProgress => 0.to_string(),
|
VerbosityPut::SimpleProgress => 0.to_string(),
|
||||||
VerbosityPut::ExpectedHashes => 3.to_string(),
|
VerbosityPut::ExpectedHashes => 3.to_string(),
|
||||||
|
@ -37,22 +37,22 @@ impl FcpRequest for VerbosityPut {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn is_berbosity_put_parsing() {
|
fn is_berbosity_put_converting() {
|
||||||
assert_eq!(default_unwrap::<VerbosityPut>(None), "".to_string());
|
assert_eq!(fcp_types_unwrap::<VerbosityPut>(None), "".to_string());
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
default_unwrap::<VerbosityPut>(Some(&VerbosityPut::SimpleProgress)),
|
fcp_types_unwrap::<VerbosityPut>(Some(&VerbosityPut::SimpleProgress)),
|
||||||
"0".to_string()
|
"0".to_string()
|
||||||
);
|
);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
default_unwrap::<VerbosityPut>(Some(&VerbosityPut::ExpectedHashes)),
|
fcp_types_unwrap::<VerbosityPut>(Some(&VerbosityPut::ExpectedHashes)),
|
||||||
"3".to_string()
|
"3".to_string()
|
||||||
);
|
);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
default_unwrap::<VerbosityPut>(Some(&VerbosityPut::PutFetchable)),
|
fcp_types_unwrap::<VerbosityPut>(Some(&VerbosityPut::PutFetchable)),
|
||||||
"8".to_string()
|
"8".to_string()
|
||||||
);
|
);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
default_unwrap::<VerbosityPut>(Some(
|
fcp_types_unwrap::<VerbosityPut>(Some(
|
||||||
&VerbosityPut::StartedCompressionANDFinishedCompression
|
&VerbosityPut::StartedCompressionANDFinishedCompression
|
||||||
)),
|
)),
|
||||||
"9".to_string()
|
"9".to_string()
|
||||||
|
@ -81,7 +81,7 @@ pub enum Persistence {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl FcpRequest for Persistence {
|
impl FcpRequest for Persistence {
|
||||||
fn parse(&self) -> String {
|
fn convert(&self) -> String {
|
||||||
match *self {
|
match *self {
|
||||||
Persistence::Connection => "connection".to_string(),
|
Persistence::Connection => "connection".to_string(),
|
||||||
Persistence::Reboot => "reboot".to_string(),
|
Persistence::Reboot => "reboot".to_string(),
|
||||||
|
@ -91,20 +91,20 @@ impl FcpRequest for Persistence {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn is_persistence_parsing() {
|
fn is_persistence_converting() {
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
default_unwrap(Some(&Persistence::Connection)),
|
fcp_types_unwrap(Some(&Persistence::Connection)),
|
||||||
"connection".to_string()
|
"connection".to_string()
|
||||||
);
|
);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
default_unwrap(Some(&Persistence::Reboot)),
|
fcp_types_unwrap(Some(&Persistence::Reboot)),
|
||||||
"reboot".to_string()
|
"reboot".to_string()
|
||||||
);
|
);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
default_unwrap(Some(&Persistence::Forever)),
|
fcp_types_unwrap(Some(&Persistence::Forever)),
|
||||||
"forever".to_string()
|
"forever".to_string()
|
||||||
);
|
);
|
||||||
assert_eq!(default_unwrap::<Persistence>(None), "".to_string());
|
assert_eq!(fcp_types_unwrap::<Persistence>(None), "".to_string());
|
||||||
}
|
}
|
||||||
|
|
||||||
pub enum UploadForm {
|
pub enum UploadForm {
|
||||||
|
@ -112,6 +112,32 @@ pub enum UploadForm {
|
||||||
Disk,
|
Disk,
|
||||||
Redirect,
|
Redirect,
|
||||||
}
|
}
|
||||||
|
impl FcpRequest for UploadForm {
|
||||||
|
fn convert(&self) -> String {
|
||||||
|
match *self {
|
||||||
|
UploadForm::Direct => "direct".to_string(),
|
||||||
|
UploadForm::Disk => "disk".to_string(),
|
||||||
|
UploadForm::Redirect => "redirect".to_string(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn is_upload_from_converting() {
|
||||||
|
assert_eq!(
|
||||||
|
fcp_types_unwrap(Some(&UploadForm::Direct)),
|
||||||
|
"direct".to_string()
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
fcp_types_unwrap(Some(&UploadForm::Disk)),
|
||||||
|
"disk".to_string()
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
fcp_types_unwrap(Some(&UploadForm::Redirect)),
|
||||||
|
"redirect".to_string()
|
||||||
|
);
|
||||||
|
assert_eq!(fcp_types_unwrap::<Persistence>(None), "".to_string());
|
||||||
|
}
|
||||||
|
|
||||||
pub enum ReturnType {
|
pub enum ReturnType {
|
||||||
Direct,
|
Direct,
|
||||||
|
@ -134,12 +160,73 @@ pub enum Priority {
|
||||||
G, // 6
|
G, // 6
|
||||||
}
|
}
|
||||||
|
|
||||||
pub trait FcpRequest {
|
impl FcpRequest for Priority {
|
||||||
fn parse(&self) -> String;
|
fn convert(&self) -> String {
|
||||||
|
match *self {
|
||||||
|
Priority::A => "0".to_string(),
|
||||||
|
Priority::B => "1".to_string(),
|
||||||
|
Priority::C => "2".to_string(),
|
||||||
|
Priority::D => "3".to_string(),
|
||||||
|
Priority::E => "4".to_string(),
|
||||||
|
Priority::F => "5".to_string(),
|
||||||
|
Priority::G => "6".to_string(),
|
||||||
}
|
}
|
||||||
pub fn default_unwrap<T: FcpRequest>(fcp_type: Option<&T>) -> String {
|
}
|
||||||
|
}
|
||||||
|
#[test]
|
||||||
|
fn is_priority_converting() {
|
||||||
|
assert_eq!(fcp_types_unwrap(Some(&Priority::A)), "0".to_string());
|
||||||
|
assert_eq!(fcp_types_unwrap(Some(&Priority::B)), "1".to_string());
|
||||||
|
assert_eq!(fcp_types_unwrap(Some(&Priority::C)), "2".to_string());
|
||||||
|
assert_eq!(fcp_types_unwrap(Some(&Priority::D)), "3".to_string());
|
||||||
|
assert_eq!(fcp_types_unwrap(Some(&Priority::E)), "4".to_string());
|
||||||
|
assert_eq!(fcp_types_unwrap(Some(&Priority::F)), "5".to_string());
|
||||||
|
assert_eq!(fcp_types_unwrap(Some(&Priority::G)), "6".to_string());
|
||||||
|
assert_eq!(fcp_types_unwrap::<Priority>(None), "".to_string());
|
||||||
|
}
|
||||||
|
|
||||||
|
impl FcpRequest for u32 {
|
||||||
|
fn convert(&self) -> String {
|
||||||
|
self.to_string()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl FcpRequest for String {
|
||||||
|
fn convert(&self) -> String {
|
||||||
|
self.to_string()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl FcpRequest for bool {
|
||||||
|
fn convert(&self) -> String {
|
||||||
|
if *self {
|
||||||
|
"true".to_string()
|
||||||
|
} else {
|
||||||
|
"false".to_string()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub trait FcpRequest {
|
||||||
|
fn convert(&self) -> String;
|
||||||
|
|
||||||
|
fn fcp_wrap(&self, prefix: &str, postfix: &str) -> String {
|
||||||
|
format!("{}{}{}", prefix, self.convert(), postfix)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
pub fn fcp_types_unwrap<T: FcpRequest>(fcp_type: Option<&T>) -> String {
|
||||||
match fcp_type {
|
match fcp_type {
|
||||||
Some(val) => val.parse(),
|
Some(val) => val.convert(),
|
||||||
|
None => String::from(""),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
pub fn to_fcp_unwrap<T: FcpRequest>(
|
||||||
|
prefix: &'static str,
|
||||||
|
fcp_type: Option<&T>,
|
||||||
|
postfix: &'static str,
|
||||||
|
) -> String {
|
||||||
|
match fcp_type {
|
||||||
|
Some(val) => val.fcp_wrap(&prefix, &postfix),
|
||||||
None => String::from(""),
|
None => String::from(""),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue