blurz 0.4.0

Bluetooth lib for Rust using blueZ/dbus
Documentation
extern crate blurz;

use std::error::Error;
use std::fs;
use std::fs::File;
use std::io::Write;
use std::path::Path;

use blurz::bluetooth_adapter::BluetoothAdapter as Adapter;
use blurz::bluetooth_device::BluetoothDevice as Device;
use blurz::bluetooth_obex::{
    BluetoothOBEXSession as OBEXSession, BluetoothOBEXTransfer as OBEXTransfer,
};
use blurz::bluetooth_session::BluetoothSession as Session;

fn test_obex_file_transfer() -> Result<(), Box<Error>> {
    let session = &Session::create_session(None)?;
    let adapter: Adapter = Adapter::init(session)?;
    let devices: Vec<String> = adapter.get_device_list()?;

    let filtered_devices = devices
        .iter()
        .filter(|&device_id| {
            let device = Device::new(session, device_id.to_string());
            device.is_ready_to_receive().unwrap()
        }).cloned()
        .collect::<Vec<String>>();

    let device_id: &str = &filtered_devices[0];
    let device = Device::new(session, device_id.to_string());

    let session = OBEXSession::new(session, &device)?;

    let mut empty_file = File::create("./test.png")?;
    empty_file.write_all(b"1111")?;

    let file_path = Path::new("./test.png").canonicalize()?;
    let file_str = file_path.to_str().unwrap();
    let transfer = OBEXTransfer::send_file(&session, file_str)?;
    transfer.wait_until_transfer_completed()?;

    session.remove_session()?;
    fs::remove_file(&file_path)?;
    Ok(())
}

fn main() {
    match test_obex_file_transfer() {
        Ok(_) => (),
        Err(e) => println!("{:?}", e),
    }
}