IronCoreLabs / IronCoreLabs/ironoxide
Combine UserOrGroup/PublicKey req/resp types in request layer
- Dominant language
- Rust
- Stars
- 12
- Forks
- 3
- Avg merge
- 5h 4m
- Merged PRs (30d)
- 3
Description
We have some identical or nearly identical types in the request layer that could be cleaned up and/or unified.
Note that
Examples:
In group_api/requests
```rust
#[derive(Deserialize, Debug)]
#[serde(rename_all = "camelCase")]
pub struct SuccessRes {
pub(crate) user_id: UserId,
}
#[derive(Deserialize, Debug)]
#[serde(rename_all = "camelCase")]
pub struct FailRes {
pub(crate) user_id: UserId,
pub(crate) error_message: String,
}
#[derive(Deserialize, Debug)]
#[serde(rename_all = "camelCase")]
pub struct GroupUserEditResponse {
pub(crate) succeeded_ids: Vec,
pub(crate) failed_ids: Vec,
}
```
In document_api/requests
```rust
#[derive(Deserialize, Debug)]
#[serde(rename_all = "camelCase")]
struct SuccessRes {
pub(crate) user_or_group: UserOrGroupRes,
}
#[derive(Deserialize, Debug)]
#[serde(rename_all = "camelCase")]
struct FailRes {
pub(crate) user_or_group: UserOrGroupRes,
pub(crate) error_message: String,
}
#[derive(Deserialize, Debug)]
#[serde(tag = "type", rename_all = "camelCase")]
enum UserOrGroupRes {
User { id: String },
Group { id: String },
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct AccessGrant {
pub(crate) user_or_group: UserOrGroupWithKey,
#[serde(flatten)]
pub(crate) encrypted_value: EncryptedOnceValue,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
#[serde(rename_all = "camelCase", tag = "type")]
pub enum UserOrGroupWithKey {
#[serde(rename_all = "camelCase")]
User {
id: String,
// optional because the resp on document create does not return a public key
master_public_key: Option,
},
#[serde(rename_all = "camelCase")]
Group {
id: String,
master_public_key: Option,
},
}
```
Notice that UserOrGroupWithKey's master_public_key is optional to support the response coming back from Document create. Document access revoke and other group apis may also be using similar types.
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.