pub struct RpcCrudGrouper { /* private fields */ }Expand description
Configurable grouper for RPC-style CRUD APIs.
Unlike REST APIs where the HTTP method determines the CRUD verb, RPC APIs encode the verb in the path or operation ID. This grouper uses configurable patterns to detect verbs and group endpoints by resource name.
§Example
use openapi_forge::{RpcCrudGrouper, RpcCrudVerb, RpcPattern};
let grouper = RpcCrudGrouper::new()
.pattern(RpcPattern::new(
RpcCrudVerb::Create,
"/create-{resource}",
"{0}",
))
.pattern(RpcPattern::new(
RpcCrudVerb::Delete,
"/delete-{resource}",
"{0}",
));Implementations§
Source§impl RpcCrudGrouper
impl RpcCrudGrouper
Sourcepub fn pattern(self, pat: RpcPattern) -> Self
pub fn pattern(self, pat: RpcPattern) -> Self
Add a pattern to this grouper. Patterns are tried in order; first match wins.
Sourcepub fn patterns(self, pats: Vec<RpcPattern>) -> Self
pub fn patterns(self, pats: Vec<RpcPattern>) -> Self
Add multiple patterns at once.
Sourcepub fn default_patterns() -> Self
pub fn default_patterns() -> Self
Create a grouper with default patterns for common RPC APIs.
Handles create-X, get-X, update-X, delete-X, list-X,
describe-X, add-X, remove-X patterns.
Sourcepub fn akeyless_patterns() -> Self
pub fn akeyless_patterns() -> Self
Create a grouper with Akeyless-specific patterns.
Handles all the Akeyless API naming conventions:
- Auth methods:
auth-method-create-X,create-auth-method-X - Targets:
target-create-X,create-X-target - Dynamic secrets:
dynamic-secret-create-X,create-dynamic-secret - Rotated secrets:
rotated-secret-create-X,create-rotated-secret - Gateway producers:
gateway-create-producer-X,gateway-update-producer-X - Static secrets:
create-secret,get-secret-value, etc. - Items:
describe-item,delete-item,list-items
Sourcepub fn group(&self, endpoints: &[Endpoint]) -> Vec<CrudGroup>
pub fn group(&self, endpoints: &[Endpoint]) -> Vec<CrudGroup>
Group the given endpoints into CRUD groups using the configured patterns.
Each endpoint’s path is tested against the patterns in order. The first matching pattern determines the verb and group name.
Sourcepub fn group_spec(&self, spec: &Spec) -> Vec<CrudGroup>
pub fn group_spec(&self, spec: &Spec) -> Vec<CrudGroup>
Group endpoints directly from a Spec.