diff options
Diffstat (limited to 'rust/fatcat-api/examples/client.rs')
-rw-r--r-- | rust/fatcat-api/examples/client.rs | 350 |
1 files changed, 350 insertions, 0 deletions
diff --git a/rust/fatcat-api/examples/client.rs b/rust/fatcat-api/examples/client.rs new file mode 100644 index 00000000..6f7aa151 --- /dev/null +++ b/rust/fatcat-api/examples/client.rs @@ -0,0 +1,350 @@ +#![allow(missing_docs, unused_variables, trivial_casts)] + +extern crate clap; +extern crate fatcat; +#[allow(unused_extern_crates)] +extern crate futures; +#[allow(unused_extern_crates)] +extern crate swagger; +extern crate tokio_core; +#[allow(unused_extern_crates)] +extern crate uuid; + +use clap::{App, Arg}; +#[allow(unused_imports)] +use fatcat::{ApiError, ApiNoContext, ContainerIdGetResponse, ContainerLookupGetResponse, + ContainerPostResponse, ContextWrapperExt, CreatorIdGetResponse, + CreatorLookupGetResponse, CreatorPostResponse, EditgroupIdAcceptPostResponse, + EditgroupIdGetResponse, EditgroupPostResponse, EditorUsernameChangelogGetResponse, + EditorUsernameGetResponse, FileIdGetResponse, FileLookupGetResponse, + FilePostResponse, ReleaseIdGetResponse, ReleaseLookupGetResponse, + ReleasePostResponse, WorkIdGetResponse, WorkPostResponse}; +#[allow(unused_imports)] +use futures::{future, stream, Future, Stream}; +use tokio_core::reactor; + +fn main() { + let matches = App::new("client") + .arg( + Arg::with_name("operation") + .help("Sets the operation to run") + .possible_values(&[ + "ContainerIdGet", + "ContainerLookupGet", + "ContainerPost", + "CreatorIdGet", + "CreatorLookupGet", + "CreatorPost", + "EditgroupIdAcceptPost", + "EditgroupIdGet", + "EditgroupPost", + "EditorUsernameChangelogGet", + "EditorUsernameGet", + "FileIdGet", + "FileLookupGet", + "FilePost", + "ReleaseIdGet", + "ReleaseLookupGet", + "ReleasePost", + "WorkIdGet", + "WorkPost", + ]) + .required(true) + .index(1), + ) + .arg( + Arg::with_name("https") + .long("https") + .help("Whether to use HTTPS or not"), + ) + .arg( + Arg::with_name("host") + .long("host") + .takes_value(true) + .default_value("api.fatcat.wiki") + .help("Hostname to contact"), + ) + .arg( + Arg::with_name("port") + .long("port") + .takes_value(true) + .default_value("8080") + .help("Port to contact"), + ) + .get_matches(); + + let mut core = reactor::Core::new().unwrap(); + let is_https = matches.is_present("https"); + let base_url = format!( + "{}://{}:{}", + if is_https { "https" } else { "http" }, + matches.value_of("host").unwrap(), + matches.value_of("port").unwrap() + ); + let client = if matches.is_present("https") { + // Using Simple HTTPS + fatcat::Client::try_new_https(core.handle(), &base_url, "examples/ca.pem") + .expect("Failed to create HTTPS client") + } else { + // Using HTTP + fatcat::Client::try_new_http(core.handle(), &base_url) + .expect("Failed to create HTTP client") + }; + + // Using a non-default `Context` is not required; this is just an example! + let client = client.with_context(fatcat::Context::new_with_span_id( + self::uuid::Uuid::new_v4().to_string(), + )); + + match matches.value_of("operation") { + Some("ContainerIdGet") => { + let result = core.run(client.container_id_get("id_example".to_string())); + println!( + "{:?} (X-Span-ID: {:?})", + result, + client + .context() + .x_span_id + .clone() + .unwrap_or(String::from("<none>")) + ); + } + + Some("ContainerLookupGet") => { + let result = core.run(client.container_lookup_get("issn_example".to_string())); + println!( + "{:?} (X-Span-ID: {:?})", + result, + client + .context() + .x_span_id + .clone() + .unwrap_or(String::from("<none>")) + ); + } + + Some("ContainerPost") => { + let result = core.run(client.container_post(None)); + println!( + "{:?} (X-Span-ID: {:?})", + result, + client + .context() + .x_span_id + .clone() + .unwrap_or(String::from("<none>")) + ); + } + + Some("CreatorIdGet") => { + let result = core.run(client.creator_id_get("id_example".to_string())); + println!( + "{:?} (X-Span-ID: {:?})", + result, + client + .context() + .x_span_id + .clone() + .unwrap_or(String::from("<none>")) + ); + } + + Some("CreatorLookupGet") => { + let result = core.run(client.creator_lookup_get("orcid_example".to_string())); + println!( + "{:?} (X-Span-ID: {:?})", + result, + client + .context() + .x_span_id + .clone() + .unwrap_or(String::from("<none>")) + ); + } + + Some("CreatorPost") => { + let result = core.run(client.creator_post(None)); + println!( + "{:?} (X-Span-ID: {:?})", + result, + client + .context() + .x_span_id + .clone() + .unwrap_or(String::from("<none>")) + ); + } + + Some("EditgroupIdAcceptPost") => { + let result = core.run(client.editgroup_id_accept_post(56)); + println!( + "{:?} (X-Span-ID: {:?})", + result, + client + .context() + .x_span_id + .clone() + .unwrap_or(String::from("<none>")) + ); + } + + Some("EditgroupIdGet") => { + let result = core.run(client.editgroup_id_get(56)); + println!( + "{:?} (X-Span-ID: {:?})", + result, + client + .context() + .x_span_id + .clone() + .unwrap_or(String::from("<none>")) + ); + } + + Some("EditgroupPost") => { + let result = core.run(client.editgroup_post()); + println!( + "{:?} (X-Span-ID: {:?})", + result, + client + .context() + .x_span_id + .clone() + .unwrap_or(String::from("<none>")) + ); + } + + Some("EditorUsernameChangelogGet") => { + let result = + core.run(client.editor_username_changelog_get("username_example".to_string())); + println!( + "{:?} (X-Span-ID: {:?})", + result, + client + .context() + .x_span_id + .clone() + .unwrap_or(String::from("<none>")) + ); + } + + Some("EditorUsernameGet") => { + let result = core.run(client.editor_username_get("username_example".to_string())); + println!( + "{:?} (X-Span-ID: {:?})", + result, + client + .context() + .x_span_id + .clone() + .unwrap_or(String::from("<none>")) + ); + } + + Some("FileIdGet") => { + let result = core.run(client.file_id_get("id_example".to_string())); + println!( + "{:?} (X-Span-ID: {:?})", + result, + client + .context() + .x_span_id + .clone() + .unwrap_or(String::from("<none>")) + ); + } + + Some("FileLookupGet") => { + let result = core.run(client.file_lookup_get("sha1_example".to_string())); + println!( + "{:?} (X-Span-ID: {:?})", + result, + client + .context() + .x_span_id + .clone() + .unwrap_or(String::from("<none>")) + ); + } + + Some("FilePost") => { + let result = core.run(client.file_post(None)); + println!( + "{:?} (X-Span-ID: {:?})", + result, + client + .context() + .x_span_id + .clone() + .unwrap_or(String::from("<none>")) + ); + } + + Some("ReleaseIdGet") => { + let result = core.run(client.release_id_get("id_example".to_string())); + println!( + "{:?} (X-Span-ID: {:?})", + result, + client + .context() + .x_span_id + .clone() + .unwrap_or(String::from("<none>")) + ); + } + + Some("ReleaseLookupGet") => { + let result = core.run(client.release_lookup_get("doi_example".to_string())); + println!( + "{:?} (X-Span-ID: {:?})", + result, + client + .context() + .x_span_id + .clone() + .unwrap_or(String::from("<none>")) + ); + } + + Some("ReleasePost") => { + let result = core.run(client.release_post(None)); + println!( + "{:?} (X-Span-ID: {:?})", + result, + client + .context() + .x_span_id + .clone() + .unwrap_or(String::from("<none>")) + ); + } + + Some("WorkIdGet") => { + let result = core.run(client.work_id_get("id_example".to_string())); + println!( + "{:?} (X-Span-ID: {:?})", + result, + client + .context() + .x_span_id + .clone() + .unwrap_or(String::from("<none>")) + ); + } + + Some("WorkPost") => { + let result = core.run(client.work_post(None)); + println!( + "{:?} (X-Span-ID: {:?})", + result, + client + .context() + .x_span_id + .clone() + .unwrap_or(String::from("<none>")) + ); + } + + _ => panic!("Invalid operation provided"), + } +} |