Skip to content

Commit

Permalink
📝 修订并新增一些文档注释
Browse files Browse the repository at this point in the history
  • Loading branch information
fu050409 committed Dec 23, 2023
1 parent 591bb02 commit 15aa216
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 6 deletions.
9 changes: 6 additions & 3 deletions src/api.rs
Original file line number Diff line number Diff line change
@@ -1,17 +1,20 @@
//! # Oblivion API 接口
//!
//! Oblivion 提供了直接进行 GET、POST、PUT 等请求的方法。
use serde_json::Value;

use crate::{exceptions::OblivionException, models::client::Response};

use super::sessions::Session;

/// 裸 Oblivion 请求模式
///
///
/// ```rust
/// use oblivion::api::request;
///
///
/// async fn run() {
/// request("get", "127.0.0.1:813/get", None, None, true).await.unwrap();
/// }
/// }
/// ```
pub async fn request(
method: &str,
Expand Down
11 changes: 9 additions & 2 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,27 @@
//! Oblivion 是浊莲为确保信息安全而开发的端到端加密协议,这是 Oblivion 的 Rust 实现。
//! 它在 Python 实现的基础上大大提高了 Oblivion 的安全性、稳定性和并发性。
//!
//! 由于 Oblivion 协议中要求的加密算法为 ECDHE 算法,它以高效安全密钥派生方法,使得它
//! 可以应用于信息派发和及时通讯。
//! 由于 Oblivion 协议中要求的加密算法为 ECDHE 算法,它以高效安全密钥派生方法,使得它可以应用于信息派发和及时通讯。
pub extern crate oblivion_codegen;
pub extern crate proc_macro;
pub mod api;
pub mod exceptions;
pub mod sessions;

/// # Oblivion 工具类
///
/// Oblivion 的工具类提供了密钥创建,数据加密解密与请求解析处理方法。
pub mod utils {
pub mod decryptor;
pub mod encryptor;
pub mod gear;
pub mod generator;
pub mod parser;
}

/// # Oblivion 模型
///
/// Oblivion 提供了所有前后端模型,包括数据包构建以及客户端和服务端的构建。
pub mod models {
pub mod client;
pub mod handler;
Expand Down
4 changes: 4 additions & 0 deletions src/sessions.rs
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
//! # Oblivion 窗口
use serde_json::Value;

use crate::{
exceptions::OblivionException,
models::client::{Request, Response},
};

/// ## Oblivion 窗口抽象类
///
/// 用于连接模型创建请求窗口。
pub struct Session;

impl Session {
Expand Down
22 changes: 21 additions & 1 deletion src/utils/parser.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
//! # Oblivion 解析器
//!
//! 用于对数据进行解析重构并存储。
use std::collections::HashMap;
use std::net::SocketAddr;
use std::str::FromStr;
Expand All @@ -6,6 +9,21 @@ use crate::exceptions::OblivionException;
use regex::Regex;
use serde_json::Value;

/// 数据包大小分析函数
///
/// `length`接受一个`Vec<u8>`的字节流,得到其不多于四位数的数据大小,如果数据超出预计范围,它将抛出一个异常。
///
/// 它最终返回的值是一个`Vec<u8>`,它由一个四位数以字符串转换而来。
///
/// ```rust
/// use oblivion::utils::parser::length;
///
/// let vec = b"fw4rg45245ygergeqwrgqwerg342rg342gjisdu".to_vec();
///
/// assert_eq!(b"0039".to_vec(), length(&vec).unwrap());
/// ```
///
/// 以上示例中的`vec`是一个长度为 39 的`Vec<u8>`,`length(&vec)`得到了`b"0039".to_vec()`。
pub fn length(bytes: &Vec<u8>) -> Result<Vec<u8>, OblivionException> {
let str_num = bytes.len().to_string();
if str_num.len() == 4 {
Expand Down Expand Up @@ -141,7 +159,9 @@ pub struct OblivionRequest {
impl OblivionRequest {
pub fn new(header: &str) -> Result<Self, OblivionException> {
let plain_text = header;
let re = Regex::new(r"(?P<method>\w+) (?P<olps>\S+) (?P<protocol>\w+)/(?P<version>\d+\.\d+)").unwrap();
let re =
Regex::new(r"(?P<method>\w+) (?P<olps>\S+) (?P<protocol>\w+)/(?P<version>\d+\.\d+)")
.unwrap();

if let Some(captures) = re.captures(header) {
let mut extracted_values: HashMap<&str, Option<&str>> = HashMap::new();
Expand Down

0 comments on commit 15aa216

Please sign in to comment.