prax 0.1.1

a web penetration proxy hosted in neovim
Documentation
use mlua::{FromLua, UserData};

mod attr;
mod err;
mod filter;
mod load;
mod query;
mod sub;

mod interp;

#[cfg(test)]
mod test;

pub use err::ConfError;
pub use query::Query;

use crate::Filter;

use self::interp::Interp;

pub use sub::{Func, Subst};

#[derive(Default, Clone, Debug)]
pub struct Proxy {
    pub targets: Vec<Target>,
    pub focus: bool,
}

#[derive(FromLua, Debug, Clone)]
pub struct Target {
    pub hostname: String,
    pub req: Vec<Rule>,
    pub resp: Vec<Rule>,
}

#[derive(FromLua, Debug, Clone)]
pub enum Rule {
    Intercept,
    Dump,
    Set(Attr, String),
    Subst(Attr, Subst),
}

#[derive(FromLua, Debug, Clone)]
pub enum Attr {
    Method,
    Status,
    Path,
    Query(String),
    Header(String),
    Body,
}

#[derive(Default)]
pub struct Config<F: Filter + Sync> {
    proxy: Proxy,
    interp: Interp,
    intercept: F,
}

impl UserData for Rule {}
impl UserData for Attr {}