Crate imessage_database

Source
Expand description

§imessage-database

This library provides interfaces to interact with iMessage Databases.

§Installation

This library is available on crates.io.

§Documentation

Documentation is available on docs.rs.

§Example

use imessage_database::{
    error::table::TableError,
    tables::{
        messages::Message,
        table::{get_connection, Table},
    },
    util::dirs::default_db_path,
};

fn iter_messages() -> Result<(), TableError> {
    // Create a read-only connection to an iMessage database
    let db = get_connection(&default_db_path()).unwrap();

    // Iterate over a stream of messages
    Message::stream(&db, |message_result| {
        match message_result {
            Ok(mut message) => {
                // Deserialize the message body
                message.generate_text(&db);

                // Emit debug info for each message
                println!("Message: {:#?}", message)
            },
            Err(e) => eprintln!("Error: {:?}", e),
        };

        // You can substitute your own closure error type
        Ok::<(), TableError>(())
    })?;

    Ok(())
}

Modules§

error
This module contains types of errors that can happen when parsing iMessage data.
message_types
iMessages can represent different kinds of data. This module defines types for those data.
tables
Representations of iMessage database tables as structs.
util
This module defines common utilities used across table queries.