photokit 0.1.0

Safe Rust bindings for Apple's Photos framework — photo library access on macOS
Documentation
#![allow(missing_docs)]

use core::ffi::{c_char, c_void};

extern "C" {
    pub fn ph_string_free(string: *mut c_char);

    pub fn ph_authorization_status() -> i32;
    pub fn ph_request_authorization(out_error: *mut *mut c_char) -> i32;

    pub fn ph_photo_library_shared() -> *mut c_void;
    pub fn ph_photo_library_release(library: *mut c_void);
    pub fn ph_photo_library_fetch_asset_collections_json(
        fetch_options_json: *const c_char,
        out_error: *mut *mut c_char,
    ) -> *mut c_char;
    pub fn ph_photo_library_fetch_assets_json(
        fetch_options_json: *const c_char,
        out_error: *mut *mut c_char,
    ) -> *mut c_char;
    pub fn ph_photo_library_register_change_observer(
        library: *mut c_void,
        callback: ChangeObserverCallback,
        user_info: *mut c_void,
        out_error: *mut *mut c_char,
    ) -> *mut c_void;
    pub fn ph_photo_library_unregister_change_observer(observer: *mut c_void);

    pub fn ph_asset_resources_json(
        asset_identifier: *const c_char,
        out_error: *mut *mut c_char,
    ) -> *mut c_char;

    pub fn ph_image_manager_default() -> *mut c_void;
    pub fn ph_caching_image_manager_new() -> *mut c_void;
    pub fn ph_image_manager_release(manager: *mut c_void);
    pub fn ph_image_manager_request_image(
        manager: *mut c_void,
        asset_identifier: *const c_char,
        request_json: *const c_char,
        out_error: *mut *mut c_char,
    ) -> *mut c_void;
    pub fn ph_image_manager_request_image_data(
        manager: *mut c_void,
        asset_identifier: *const c_char,
        out_error: *mut *mut c_char,
    ) -> *mut c_void;
    pub fn ph_image_manager_request_live_photo(
        manager: *mut c_void,
        asset_identifier: *const c_char,
        request_json: *const c_char,
        out_error: *mut *mut c_char,
    ) -> *mut c_void;
    pub fn ph_image_request_wait_json(
        request: *mut c_void,
        timeout_ms: u64,
        out_error: *mut *mut c_char,
    ) -> *mut c_char;
    pub fn ph_image_request_cancel(request: *mut c_void);
    pub fn ph_image_request_release(request: *mut c_void);

    pub fn ph_caching_image_manager_start_caching(
        manager: *mut c_void,
        asset_identifiers_json: *const c_char,
        request_json: *const c_char,
        out_error: *mut *mut c_char,
    ) -> i32;
    pub fn ph_caching_image_manager_stop_caching(
        manager: *mut c_void,
        asset_identifiers_json: *const c_char,
        request_json: *const c_char,
        out_error: *mut *mut c_char,
    ) -> i32;
    pub fn ph_caching_image_manager_stop_caching_all(manager: *mut c_void);
}

pub type ChangeObserverCallback = unsafe extern "C" fn(user_info: *mut c_void);

pub mod status {
    pub const OK: i32 = 0;
}