diff --git a/README.md b/README.md index 47e3cca..fdfb21a 100644 --- a/README.md +++ b/README.md @@ -5,10 +5,12 @@ ## Description -epp-client is a client library written in Rust for Internet domain registration and management for domain registrars. +epp-client is a client library written in Rust for Internet domain registration +and management for domain registrars. -It supports the following basic Domain, Contact, Host, and Message management calls, with plans to add more calls -and other EPP extensions in the future, and to eventually be RFC compliant with the EPP protocol. +It supports the following basic Domain, Contact, Host, and Message management +calls, with plans to add more calls and other EPP extensions in the future, and +to eventually be RFC compliant with the EPP protocol. - Domain Check - Domain Create @@ -44,45 +46,38 @@ Just add the following to your project's `Cargo.toml` epp-client = "0.2" ``` -## Prerequisites - -To use the library, you must have an `epp-client/epp-client.toml` config file with the relevant registry -credentials in your default user configuration directory on your OS. For Linux, this is the `XDG user directory`, -usually located at `$HOME/.config` or defined by the `XDG_CONFIG_HOME` environment variable. - -An example config looks like this: - -```toml -[registry.verisign] -host = 'epp.verisign-grs.com' -port = 700 -username = 'username' -password = 'password' -# service extensions -ext_uris = [] - -[registry.verisign.tls_files] -# the full client certificate chain in PEM format -cert_chain = '/path/to/certificate/chain/pemfile' -# the RSA private key for your certificate -key = '/path/to/private/key/pemfile' -``` - ## Operation -Once the config is set correctly, you can create a mut variable of type `EppClient` -with the domain registry +You can create a mut variable of type `EppClient` with the domain registry config. ```rust +use std::collections::HashMap; + +use epp_client::config::{EppClientConfig, EppClientConnection}; use epp_client::EppClient; use epp_client::epp::{EppDomainCheck, EppDomainCheckResponse}; use epp_client::epp::generate_client_tr_id; #[tokio::main] async fn main() { - // Create an instance of EppClient, specifying the name of the registry as in - // the config file - let mut client = match EppClient::new("verisign").await { + // Configure the client to connect to one of more registries + let mut registry: HashMap = HashMap::new(); + registry.insert( + "registry_name".to_owned(), + EppClientConnection { + host: "example.com".to_owned(), + port: 700, + username: "username".to_owned(), + password: "password".to_owned(), + ext_uris: None, + tls_files: None, + }, + ); + let config = EppClientConfig { registry }; + + // Create an instance of EppClient, passing the config and the + // registry you want to connect to + let mut client = match EppClient::new(&config, "registry_name").await { Ok(client) => client, Err(e) => panic!("Failed to create EppClient: {}", e) }; @@ -103,13 +98,48 @@ async fn main() { } ``` -The output would look similar to the following +The output would look similar to the following: ``` Domain: eppdev.com, Available: 1 Domain: eppdev.net, Available: 1 ``` +You may also choose to store your configuration in something like a toml file: + +```toml +[registry.verisign] +host = 'epp.verisign-grs.com' +port = 700 +username = 'username' +password = 'password' +# service extensions +ext_uris = [] + +[registry.verisign.tls_files] +# the full client certificate chain in PEM format +cert_chain = '/path/to/certificate/chain/pemfile' +# the RSA private key for your certificate +key = '/path/to/private/key/pemfile' +``` + + +```rust +use epp_client::config::{EppClientConfig}; + +#[tokio::main] +async fn main() { + // parse EppClientConfig from toml file + let config_path = Path::new("../secrets/epp-client.toml"); + let config: EppClientConfig = + toml::from_str(&fs::read_to_string(config_path).await.unwrap()).unwrap(); +} +``` + ## Request -Currently I don't have access to a registry's OT&E account to do extensive testing. I am using [hexonet's EPP Gateway](https://wiki.hexonet.net/wiki/EPP_Gateway) for testing, but access to a registry's OT&E account would be very helpful, so if anyone could help me out with one I would be very grateful! \ No newline at end of file +Currently I don't have access to a registry's OT&E account to do extensive +testing. I am using +[hexonet's EPP Gateway](https://wiki.hexonet.net/wiki/EPP_Gateway) for testing, +but access to a registry's OT&E account would be very helpful, so if anyone +could help me out with one I would be very grateful!