IronCoreLabs / IronCoreLabs/ironoxide

Combine UserOrGroup/PublicKey req/resp types in request layer

Open
#5 0 comments 0 reactions 0 assignees View on GitHub
tech debt
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.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.