Pi Hole API

Rust library for interacting with the Pi Hole PHP API.

Example

Simple

```rust use piholeapi::{PiHoleAPIConfig, UnauthenticatedPiHoleAPI};

fn main() -> Result<(), Box> { let api = PiHoleAPIConfig::new("http://192.168.0.19".to_string());

let status = api.get_summary();
println!("{:?}", status);
Ok(())

}

```

Authentication

```rust use piholeapi::{AuthenticatedPiHoleAPI, PiHoleAPIConfigWithKey};

fn main() { // Replace the address and key with those of your Pi Hole let api = PiHoleAPIConfigWithKey::new( "http://192.168.0.100".tostring(), "0123456789abcedf0123456789abcedf0123456789abcedf0123456789abcedf".tostring(), );

match api.get_queries_count() {
    Ok(status) => println!("Total number of queries: {:?}", status),
    Err(e) => panic!("Request failed, check your address and api key: {:?}", e),
};

}

```

Limitations

Testing

The docker-compose file creates a Pi-Hole instance. You will need the API key of the instance to run the test. Store the key in the environment variable PI_HOLE_API_TEST_API_KEY.

Environmental variables PI_HOLE_API_TEST_TARGET_HTTP_ADDRESS and PI_HOLE_API_TEST_TARGET_DNS_ADDRESS should contain the http address (e.g. http://localhost) and the DNS IP:Port pair (e.g. 127.0.0.1:53).

An envrc example with these variables is available in .envrc-example.

Once the environmental variables are configured the tests can be run with cargo test.