rucksack-db 0.9.3

The rucksack encrypted database
Documentation
use serde::{Deserialize, Serialize};
use url::Url;

use crate::records::DecryptedRecord;

use super::firefox;

#[derive(Debug, Deserialize, Serialize)]
pub struct Record {
    pub name: String,
    pub url: String,
    pub username: String,
    pub password: String,
}

impl Record {
    pub fn to_decrypted(&self) -> DecryptedRecord {
        let ffr = firefox::new_with_password(
            self.url.clone(),
            self.username.clone(),
            self.password.clone(),
        );
        ffr.to_decrypted()
    }
}

pub fn from_decrypted(r: DecryptedRecord) -> Record {
    let url = r.metadata().url;
    let parsed = Url::parse(&url).unwrap();
    Record {
        name: parsed.host_str().unwrap().to_string(),
        url,
        username: r.user(),
        password: r.password(),
    }
}