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();

    /// Create SQL statement
    let mut statement = Message::get(&db)?;

    /// Execute statement
    let messages = statement
        .query_map([], |row| Ok(Message::from_row(row)))
        .unwrap();

    /// Iterate over each row
    for message in messages {
        let mut msg = Message::extract(message)?;

        /// Deserialize message body
        msg.generate_text(&db);

        /// Emit debug info for each message
        println!("{:#?}", msg)
    }

    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.