# Migamake Cloudflare API
This crate is a wrapper for the [Cloudflare API](https://api.cloudflare.com/). It includes support for 3 endpoints -
* List Zone
* Create a DNS Record
* Delete a DNS Record
This crate uses API token for authentication. The token with appropriate permissions can be created on the [cloudflare dashboard](https://dash.cloudflare.com/profile/api-tokens). You can read more about [API Tokens](https://api.cloudflare.com/#getting-started-requests). From this document -
> API Tokens provide a new way to authenticate with the Cloudflare API. They allow for scoped and permissioned access to resources and use the RFC compliant Authorization Bearer Token Header.
# Installing
Add this library to an existing project -
```
cargo add migamake-api-cloudflare
```
# Building
Clone the repository and build the project -
```
cargo build
```
# Documentation
To view the documentation locally run -
```
cargo doc --no-deps --open
```
# Running Tests
To run the unit tests -
```
cargo test --lib
```
To run all the tests including the integration tests -
( expects enviornment variables CLOUDFLARE_API_KEY, CLOUDFLARE_DOMAIN and CLOUDFLARE_ZONE )
```
cargo test
```
# Usage
This example demonstrates the usage of the library. The example creates a TXT record.
[dependencies]
migamake-api-cloudflare = { version = "0.1"}
use migamake_api_cloudflare::{Cloudflare, dns};
fn main() {
let domain = "example.com".into();
let zoneid = "some id";
// initializes the object using an environment variable CLOUDFLARE_API_KEY
// or the api key could be passed to the default method
// let cloudflare = Cloudflare::default(Some("api-key").into());
let cloudflare = Cloudflare::default(None);
let mut txt_dns_record = dns::TXTRecord::new();
txt_dns_record.name = domain;
txt_dns_record.content = "create a txt record".into();
let response = cloudflare.create_dns_record(txt_dns_record, &zoneid);
let res = response.unwrap();
if res.success {
println!("{}", "Record created");
}
else{
println!("{:?}", res.errors);
}
}