init bucketmeta struct

This commit is contained in:
weisd
2024-09-27 22:00:45 +08:00
parent b4a95d20e2
commit cbaea166c4
31 changed files with 275 additions and 235 deletions
+4 -3
View File
@@ -1,12 +1,13 @@
use std::{collections::HashSet, default};
use serde::{Deserialize, Serialize};
use std::collections::HashSet;
#[derive(Debug, Default)]
#[derive(Debug, Deserialize, Serialize, Default)]
pub struct ActionSet(HashSet<Action>);
impl ActionSet {}
// 定义Action枚举类型
#[derive(Debug, Clone, PartialEq, Eq, Default)]
#[derive(Debug, Clone, PartialEq, Eq, Deserialize, Serialize, Default, Hash)]
pub enum Action {
AbortMultipartUpload,
CreateBucket,
+4 -3
View File
@@ -1,3 +1,4 @@
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
use super::{
@@ -8,7 +9,7 @@ use super::{
resource::ResourceSet,
};
#[derive(Debug, Default)]
#[derive(Debug, Deserialize, Serialize, Default)]
pub struct BucketPolicyArgs {
account_name: String,
groups: Vec<String>,
@@ -19,7 +20,7 @@ pub struct BucketPolicyArgs {
object_name: String,
}
#[derive(Debug, Default)]
#[derive(Debug, Deserialize, Serialize, Default)]
pub struct BPStatement {
sid: String,
effect: Effect,
@@ -31,7 +32,7 @@ pub struct BPStatement {
conditions: Option<Functions>,
}
#[derive(Debug, Default)]
#[derive(Debug, Deserialize, Serialize, Default)]
pub struct BucketPolicy {
pub id: String,
pub version: String,
+16 -26
View File
@@ -1,10 +1,10 @@
use super::name::Name;
use serde::{Deserialize, Serialize};
use std::{
collections::{HashMap, HashSet},
fmt::{Debug, Display},
fmt::Debug,
};
use super::name::Name;
#[derive(Debug, Clone)]
pub struct Key {
name: String,
@@ -15,7 +15,7 @@ pub struct Key {
pub type ValueSet = HashSet<String>;
// 定义Function trait
pub trait Function {
pub trait FunctionApi {
// evaluate方法
fn evaluate(&self, values: &HashMap<Key, ValueSet>) -> bool;
@@ -32,34 +32,24 @@ pub trait Function {
fn to_map(&self) -> HashMap<Key, ValueSet>;
// clone方法
fn clone(&self) -> Box<dyn Function>;
fn clone(&self) -> Box<Function>;
}
impl Display for dyn Function {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{:?}", self.to_string())
}
}
// impl Debug for dyn Function {
// fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
// write!(f, "{:?}", self.to_string())
// }
// }
impl Debug for dyn Function {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{:?}", self.to_string())
}
#[derive(Debug, Deserialize, Serialize, Default)]
enum Function {
#[default]
Test,
}
// 定义Functions类型
pub struct Functions(Vec<Box<dyn Function>>);
impl Display for Functions {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "[")?;
for v in self.0.iter() {
write!(f, "{:?}", v.to_string())?;
}
write!(f, "]")
}
}
#[derive(Deserialize, Serialize, Default)]
pub struct Functions(Vec<Function>);
impl Debug for Functions {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+2 -1
View File
@@ -1,6 +1,7 @@
use serde::{Deserialize, Serialize};
use std::str::FromStr;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Deserialize, Serialize, Default)]
pub enum Effect {
#[default]
Allow,
+2 -1
View File
@@ -1,6 +1,7 @@
use serde::{Deserialize, Serialize};
use std::collections::HashSet;
#[derive(Debug, Clone, Default)]
#[derive(Debug, Clone, Deserialize, Serialize, Default)]
pub struct Principal {
aws: HashSet<String>,
}
+5 -4
View File
@@ -1,7 +1,8 @@
use std::{collections::HashSet, default};
use serde::{Deserialize, Serialize};
use std::collections::HashSet;
// 定义ResourceARNType枚举类型
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Default)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Deserialize, Serialize, Default)]
pub enum ResourceARNType {
#[default]
UnknownARN,
@@ -14,11 +15,11 @@ const RESOURCE_ARN_PREFIX: &str = "arn:aws:s3:::";
const RESOURCE_ARN_KMS_PREFIX: &str = "arn:rustfs:kms::::";
// 定义Resource结构体
#[derive(Debug, Default)]
#[derive(Debug, Deserialize, Serialize, Default, PartialEq, Eq, Hash)]
pub struct Resource {
pattern: String,
r#type: ResourceARNType,
}
#[derive(Debug, Default)]
#[derive(Debug, Deserialize, Serialize, Default)]
pub struct ResourceSet(HashSet<Resource>);