8 个版本

0.0.8 2023年10月31日
0.0.7 2023年10月22日

#20 in #access-token

Download history 1/week @ 2024-03-16 17/week @ 2024-03-30 16/week @ 2024-04-06 4/week @ 2024-05-18 1/week @ 2024-05-25

每月62次 下载
autogpt 中使用

MIT 许可证

48KB
500 代码行

Nylas Rust SDK

Rust License

💌 Nylas 邮件和日历 API 的 Rust 客户端库。

概述

这个 Nylas Rust SDK 是一个库,为 Rust 开发者提供了对 Nylas 邮件和日历 API 的轻松访问。Nylas 是一个强大的平台,可以将电子邮件、日历和联系人功能集成到应用程序中。

🌟 主要功能:

  • 检索电子邮件消息、线程和线程。
  • 访问事件和日历信息。
  • 与文件夹、标签和标签交互。
  • 管理账户和账户详情。
  • 利用强大的搜索和过滤功能。
  • 等等!

🚀 这个客户端库使您能够将 Nylas API 无缝集成到您的 Rust 应用程序中。

安装

要将 Nylas Rust SDK 包含到您的项目中,请在您的 Cargo.toml 文件中将它作为依赖项添加

[dependencies]
nylas = "0.0.7"
tokio = "1.33.0"

您可以在 Crates.io 上找到最新版本。

使用方法

🔐 身份验证:首先设置身份验证并获得访问令牌。

use nylas::client::Nylas;

#[tokio::main]
async fn main() {
    let client_id = "YOUR_CLIENT_ID";
    let client_secret = "YOUR_CLIENT_SECRET";

    // Initialize the Nylas client with client ID and secret
    let mut nylas = Nylas::new(client_id, client_secret, None).await.unwrap();

    // Define authentication parameters
    let redirect_uri = "https://127.0.0.1:3000";
    let login_hint = Some("[email protected]");
    let state = Some("unique_identifier");
    let scopes = Some("email,calendar,contacts");

    // Generate an authentication URL
    match nylas.authentication_url(redirect_uri, login_hint, state, scopes) {
        Ok(auth_url) => println!("Authentication URL: {}", auth_url),
        Err(error) => eprintln!("Error: {}", error),
    }

    // Set the access token exchanged
    let access_token = "YOUR_ACCESS_TOKEN";
    nylas = Nylas::new(client_id, client_secret, Some(access_token))
        .await
        .unwrap();
}

📧 检索所有消息:从 Nylas API 获取所有消息。

// ...

// Call the all method to retrieve all messages
let messages = nylas.messages().all().await;

match messages {
    Ok(messages) => {
        for message in messages {
            // Process each message
            println!("Message To: {:?}", message.to);
        }
    }
    Err(err) => {
        // Handle the error
        eprintln!("Error: {}", err);
    }
}

🔍 搜索消息:根据查询搜索消息。

// ...

// Call the `search` method to search for messages
let query = "[email protected]";
let limit = Some(1);
let offset = Some(0);
let result = nylas.messages().search(query, limit, offset).await;

match result {
    Ok(messages) => {
        for message in messages {
            // Process each searched message
            println!("Searched Message: {:?}", message);
        }
    }
    Err(err) => {
        // Handle the error
        eprintln!("Error: {}", err);
    }
}

🔍 过滤消息:根据指定的标准过滤消息,可选的视图参数。

// ...

// Define filter parameters as a HashMap
let mut filter = HashMap::new();
filter.insert("to", "[email protected]");

// Call the `where_` method with filter and view parameters
let messages = nylas.messages().where_(Some(filter), Some(View::Expanded)).await;

match messages {
    Ok(messages) => {
        for message in messages {
            // Process each message
            println!("Message ID: {}", message.id);
            // Access other fields as necessary
        }
    }
    Err(err) => {
        // Handle the error
        eprintln!("Error: {}", err);
    }
}

📨 检索第一条消息:获取 Nylas API 中最新的消息。

// ...

let message_result = nylas.messages().first().await;

match message_result {
    Ok(Some(message)) => {
        // Process the first message
        println!("First Message: {:?}", message);
    }
    Ok(None) => {
        // Handle the case when there are no messages
        println!("No messages found.");
    }
    Err(err) => {
        // Handle the error
        eprintln!("Error: {}", err);
    }
}

🔍 通过 ID 检索特定消息:通过其 ID 获取特定消息。

// ...

let message_id = "YOUR_MESSAGE_ID";
let message_result = nylas.messages().get(message_id, None).await;

match message_result {
    Ok(Some(message)) => {
        // Process the retrieved message
        println!("Message ID: {:?}", message.id);
        // In expanded view mode, you can access message.headers, etc.
    }
    Ok(None) => {
        // Handle the case when the message is not found
        println!("Message not found.");
    }
    Err(err) => {
        // Handle the error
        eprintln!("Error: {}", err);
    }
}

探索 示例 文件夹以了解更多使用场景。

文档

有关详细文档,包括可用函数和结构,请参阅 官方文档

贡献

我们欢迎开源社区的贡献!如果您想为 Nylas Rust 客户端做出贡献,请阅读我们的 贡献指南

许可证

本项目受 MIT 许可证 的许可。

依赖项

~3–19MB
~245K SLoC