10个版本

0.3.0 2024年2月14日
0.2.6 2023年8月21日
0.2.3 2023年1月23日
0.2.0 2022年12月13日
0.1.2 2022年11月24日

#890网络编程

每月41次下载

MIT许可证

165KB
4K SLoC

GoodCam设备代理

这个库简化了创建HTTP代理的过程,这些代理可以用于与各种网络中的GoodCam设备通信。GoodCam设备包含一个内置客户端,可以配置为自动连接到指定的代理。连接后,设备将等待传入的HTTP请求。代理只需将传入的HTTP请求转发到连接的设备。

依赖项

该库需要OpenSSL(版本1.0.1或更高)或LibreSSL(版本2.5或更高)。Ubuntu/Debian用户可以使用以下命令安装OpenSSL开发文件:

sudo apt-get install libssl-dev

Fedora用户可以使用以下命令安装它们:

sudo dnf install openssl-devel

使用示例

请参阅此存储库根目录下的examples目录,以获取一个现成的示例。

use gcdevproxy::{
    async_trait::async_trait,
    auth::BasicAuthorization,
    http::{Body, Request},
    ClientHandlerResult, DeviceHandlerResult, Error, RequestHandler,
};

struct MyRequestHandler;

#[async_trait]
impl RequestHandler for MyRequestHandler {
    async fn handle_device_request(
        &self,
        authorization: BasicAuthorization,
    ) -> Result<DeviceHandlerResult, Error> {
        ...
    }

    async fn handle_client_request(
        &self,
        request: Request<Body>,
    ) -> Result<ClientHandlerResult, Error> {
        ...
    }
}

let mut builder = ProxyBuilder::new();

builder
    .hostname(hostname)
    .http_bind_address(SocketAddr::from((Ipv4Addr::UNSPECIFIED, 8080)));

builder
    .build(MyRequestHandler)
    .await
    .unwrap()
    .await
    .unwrap();

与其他语言的绑定

该库提供了一个C API,也可以用于其他编程语言。有关详细信息,请参阅存储库根目录下的include文件夹。目前我们还提供了以下语言的包装库:

依赖项

~11–23MB
~370K SLoC