cdns-rs 1.2.2

A native Sync/Async Rust implementation of client DNS resolver.
Documentation
/*-
 * cdns-rs - a simple sync/async DNS query library
 * 
 * Copyright (C) 2020  Aleksandr Morozov
 * 
 * Copyright (C) 2025 Aleksandr Morozov
 * 
 * The syslog-rs crate can be redistributed and/or modified
 * under the terms of either of the following licenses:
 *
 *   1. the Mozilla Public License Version 2.0 (the “MPL”) OR
 *                     
 *   2. EUROPEAN UNION PUBLIC LICENCE v. 1.2 EUPL © the European Union 2007, 2016
 */

/// This file contains the config file parsers.

use std::path::Path;

use async_trait::async_trait;


use crate::{a_sync::interface::UnifiedFs, error::*, internal_error_map};


pub trait ConfigParser<T>
{
    async fn parse_config<UFS: UnifiedFs>() -> CDnsResult<T>;

    fn get_file_path() -> &'static Path;

    fn is_default(&self) -> bool;
}

pub(super) async 
fn read_file<UFS: UnifiedFs>(path: &str) -> CDnsResult<String>
{
    let mut file = 
        UFS::open(path).await
            .map_err(|e| internal_error_map!(CDnsErrorType::InternalError, "{}", e))?;

    let mut file_content: String = String::new();

    UFS::read_to_string(&mut file, &mut file_content)
        .await
        .map_err(|e| internal_error_map!(CDnsErrorType::InternalError, "{}", e))?;

    return Ok(file_content);
}