Skip to content

HashiramaSenjuhari/gates

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

76 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Gates

Gates is a lightweight and efficient web framework in Rust designed for handling HTTP requests with built-in gatekeeping middleware.

Features

  • Supports GET, POST, PUT, DELETE, SSE endpoints
  • Websocket
  • Gatekeeping middleware for request handling
  • Response handling with status codes, messages, and redirections

Installation

Add nous as a dependency in your Cargo.toml:

[dependencies]
nous = "0.1.0-beta"

Usage

Defining Routes

WebSocket

#[gates_dope("/billionairegreathari")]
fn b(b: &mut GatesDope) {
    b.send("billionairegreathariprasath".into());
    match b.read().unwrap() {
        Message::Text(b) => {
            println!("{}", b);
        }
        _ => {}
    }
}
// POST request handler
#[gates(post = "/billionaire", gatekeeper = billionairehari)]
fn basicb(b: &GatesRequest) -> GateKeeperResponse {
    println!("{}", b.body);
    GateResponse::response(GatesResponse::new().status(200).message(""))
}

Middleware Example

Middleware functions can intercept requests before they reach handlers.

fn billionairehari(billionaire: &GatesRequest) -> GateKeeperResponse {
    let path = billionaire.path;
    GateKeeper::next()
    GateKeeper::redirect(307, "/billionaires")
    GateKeeper::response(
        GatesResponse::new()
            .content_type("")
            .status(404)
            .message("billionairegreatharigreat"),
    )
}

Supported Endpoints

// GET
#[gates(get = "/billionaire", gatekeeper = billionairehari)]
fn basicg(b: &GatesRequest) -> GateKeeperResponse {
    println!("{}", b.body);
    GateResponse::response(GatesResponse::new().status(200).message(""))
}

// DELETE
#[gates(delete = "/billionaire", gatekeeper = billionairehari)]
fn basicd(b: &GatesRequest) -> GateKeeperResponse {
    println!("{}", b.body);
    GateResponse::response(GatesResponse::new().status(200).message(""))
}

// PUT
#[gates(put = "/billionaire", gatekeeper = billionairehari)]
fn basicp(b: &GatesRequest) -> GateKeeperResponse {
    println!("{}", b.body);
    GateResponse::response(GatesResponse::new().status(200).message(""))
}

SSE (Server-Sent Events)

#[gates(sse = "/billionaire", gatekeeper = billionairehari)]
fn basics(b: &GatesRequest) -> GateKeeperResponse {
    println!("{}", b.body);
    GateResponse::response(GatesResponse::new().status(200).message(""))
}

Running the Server

Compile and run the project with:

cargo run

License

This project is licensed under the MIT License.

About

http framework for exploration

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors