Commit Graph

316 Commits

Author SHA1 Message Date
Dirkjan Ochtman d34c94ee9f Make Transaction trait more flexible
Instead of separate types implementing the `Transaction` trait,
here we implement `Transaction` for a command type.

The definition of the `Transaction` trait ensures that:

* Implementations for commands with a particular extension
  must be explicitly defined (that is, you can't just call
  `transact()` with a random combination of a command type
  and an extension type).
* The combination of the command type and the extension type
  (via the `Transaction` impl) defines the response type
  (both the command response and the extension response).

This definition means that:

* `Transaction` implementations for commands defined within
  the epp-client crate that want to use an extension defined
  within the crate must have an impl local to the crate.
* `Transaction` impls defined for commands foreign to the
  epp-client crate as well as impls defined with extensions
  foreign to the crate can have an impl in their defining crate.
2021-12-13 00:19:03 +08:00
Dirkjan Ochtman 38d4391e43 Remove overly duplicative doctests 2021-12-13 00:19:03 +08:00
Dirkjan Ochtman 50c21a7037 Rename EppRequest to Transaction 2021-12-13 00:19:03 +08:00
Dirkjan Ochtman 7039fdb7d6 Move rgp module back into extensions/rgp.rs 2021-12-09 17:05:06 +08:00
Dirkjan Ochtman ce30f1599f Use different type wrappers instead of single EppObject 2021-12-09 17:05:06 +08:00
Dirkjan Ochtman 57d60807d8 Switch from log to tracing 2021-12-09 16:15:34 +08:00
Dirkjan Ochtman 34ee9de0ec Use explicit imports for log macros 2021-12-09 16:15:34 +08:00
Dirkjan Ochtman 9c694a450a Remove unused dependency env_logger 2021-12-09 16:15:34 +08:00
Dirkjan Ochtman b5b17e5b3f Inline rgp module 2021-12-08 16:04:56 +08:00
Nicholas Rempel 6d1c749b67 Use full definitions for all transfer response models 2021-12-08 15:28:19 +08:00
Nicholas Rempel a4d6cf1c57 Make transfer exDate optional 2021-12-04 03:14:53 +08:00
Nicholas Rempel fe47e27c99 Allow transfer request without period 2021-12-04 03:13:43 +08:00
Nicholas Rempel 26579600d0 rgp:infData should allow multiple rgp:rgpStatus 2021-12-04 03:05:18 +08:00
Nicholas Rempel 5261a733be Update DomainInfo mapping to reflect RFC 2021-12-04 02:58:51 +08:00
Ritesh Chitlangi 9b6522b8b2 fix doctest in consolidate.rs 2021-12-04 02:38:09 +08:00
Nicholas Rempel a620fc6598 Add tests for consolidate extension 2021-12-04 02:16:38 +08:00
Nicholas Rempel 9e0627dcc5 Add consolidate extension model 2021-12-04 02:16:38 +08:00
Nicholas Rempel cf446f58c7 Update Login::new to take ownership of Option ext_uris 2021-12-04 02:13:09 +08:00
Nicholas Rempel 0b42579484 Remove credentials from Client and Connection and remove login, logout, and generate_client_tr_id 2021-12-04 02:13:09 +08:00
Nicholas Rempel c9135754e5 Fix poll model 2021-12-03 12:26:18 +08:00
Dirkjan Ochtman edb2a2627d Remove Hello and Greeting type aliases 2021-12-03 12:11:22 +08:00
Dirkjan Ochtman 140f6830a9 Rename CommandWithExtension to Command 2021-12-03 12:11:22 +08:00
Dirkjan Ochtman 8f43800a3d Remove unused Command type 2021-12-03 12:11:22 +08:00
Dirkjan Ochtman 34828032ac Remove unnecessary type alias 2021-12-03 12:11:22 +08:00
Dirkjan Ochtman 37feb5c2c4 Remove EppObject wrapper where unnecessary
This was being used in a few places where it was unnecessary.
Interestingly, it seemed that the deserialization logic in
`Request::deserialize_response()` was nesting `EppObject`s without
actually causing an error.
2021-12-03 12:11:22 +08:00
Dirkjan Ochtman 627b7d3e23 Rename ResponseWithExtension to just Response
Since there is no longer a different type that has no extension.
2021-12-03 12:11:22 +08:00
Dirkjan Ochtman 340cc9c90a Remove Command prefix from Response types 2021-12-03 12:11:22 +08:00
Dirkjan Ochtman 91070576cd Remove EppCommandResponseError alias
This is a direct alias for EppCommandResponse. It is documented
as marking an error state, but type aliases aren't a great tool
for that because the type system doesn't distinguish aliased types;
if we want to do that seriously it should be a newtype wrapper.
2021-12-03 12:11:22 +08:00
Dirkjan Ochtman f6ec331227 Remove unused CommandResponse alias 2021-12-03 12:11:22 +08:00
Nicholas Rempel 0a0e6ac9d5 Add tests for namestore extension object 2021-12-03 11:52:54 +08:00
Nicholas Rempel 2e0165a839 Add namestore extension model 2021-12-03 11:52:54 +08:00
Nicholas Rempel 02cb2c1c26 Move rgp test xml into extensions directory 2021-12-03 11:52:54 +08:00
Nicholas Rempel f3e8447c0d Move rgp into extensions directory 2021-12-03 11:52:54 +08:00
Dirkjan Ochtman 716412bbcf Simplify XMLNS constant names to reduce stuttering
Since these are mostly used within the relevant modules, there is not
much point in having a name that replicates the module path.
2021-12-02 21:09:25 +08:00
Dirkjan Ochtman ef25041cce Use inline modules for intermediate layer
(Skip `connection` since it is dissolved in #29.)
2021-12-02 21:09:25 +08:00
Dirkjan Ochtman 9f41f4263e Use country type from celes 2021-12-02 21:01:44 +08:00
Dirkjan Ochtman 609c327a95 Rename EppClientConnection to RegistryConfig
This type represents configuration to build a connection for a
particular registry, so this seems like a better name.
2021-12-02 19:18:22 +08:00
Dirkjan Ochtman ac50679071 Hoist client and registry modules up to top level 2021-12-02 19:18:22 +08:00
Dirkjan Ochtman b9efd46170 Inline trivial single-use function
Also avoids allocating an extra copy of the host String.
2021-12-02 19:18:22 +08:00
Dirkjan Ochtman d1cf43af46 Move client certificate setup into epp_connect() 2021-12-02 19:18:22 +08:00
Dirkjan Ochtman 7ff8547840 Inline extraction of certificate chain & private key
Since both are keying off of the `tls_files` fields, it seems
to make sense to handle both together.
2021-12-02 19:18:22 +08:00
Dirkjan Ochtman 8839eb4a11 Keep struct definitions and impl blocks together 2021-12-02 19:18:22 +08:00
Dirkjan Ochtman cbd9fd84aa Improve error handling in client certificate handling
Yield errors instead of panicking. Avoid unnecessary allocations/cloning.
2021-12-02 19:18:22 +08:00
Dirkjan Ochtman af7911cbc3 Inline single-use function
Reuse Vec buffer allocation for String return value.
2021-12-02 19:18:22 +08:00
Dirkjan Ochtman d8bcf690a4 Return error instead of panicking on unexpected EOF 2021-12-02 19:18:22 +08:00
Dirkjan Ochtman 48ec1e03ce Initialize buffer upfront to avoid unnecessary copies 2021-12-02 19:18:22 +08:00
Dirkjan Ochtman 59151df029 Use Vec instead of BytesMut
There doesn't seem to be any particular advantage to using BytesMut here.
2021-12-02 19:18:22 +08:00
Dirkjan Ochtman f30015ad06 Inline trivial single-use function 2021-12-02 19:18:22 +08:00
Dirkjan Ochtman 0ca42405b9 Stop splitting stream in halves
I'm not sure why this was done, but it doesn't seem to provide any
value in the current setup.
2021-12-02 19:18:22 +08:00
Ritesh Chitlangi df4f8c8c0a make cache specific to commit link 2021-12-02 18:34:13 +08:00