Open
Description
Provider ID, opcode and auth type are represented in our contracts as unsigned integer. The interface converts the integer to the Rust native enumerations and return ProviderDoesNotExist
, OpcodeDoesNotExist
or AuthenticatorDoesNotExist
if the integer can not be mapped to one of the variant.
I see two problems with that:
- if the client is older than the service and does not contain the variant returned by the service in ListProviders, ListOpcodes or ListAuthenticators those operations would fail. That happened in Execute e2e tests with an old version of client parsec#445
- when ProviderID become dynamic this will just fail (related with Rename ProviderID #36)
- ProviderID should maybe not be an enum but a new type over an integer instead.
- Opcode and AuthType should maybe contain an
Unknown(u32)
variant to represent the one that the interface does not yet know. That would also be good as these enums are not exhaustive (new opcodes/auth types will always be added).