# Pokérust
[![Crates.io](https://img.shields.io/crates/v/pokerust?style=flat-square)](https://crates.io/crates/pokerust)
[![Crates.io](https://img.shields.io/crates/d/pokerust?style=flat-square)](https://crates.io/crates/pokerust)
[![Crates.io](https://img.shields.io/crates/l/pokerust?style=flat-square)](LICENSE)
Wrapper library for v2 with caching support.
## Documentation
Documentation for the crate can be found on
[docs.rs](https://docs.rs/pokerust) (WIP). For documentation of the API, see
.
## Basic Usage
Get an object from an API by id
```rust
use pokerust::{Berry, FromId};
fn main() {
let berry = Berry::from_id(1).unwrap();
}
```
or by name
```rust
use pokerust::{Berry, FromName};
fn main() {
let berry = Berry::from_name("cheri").unwrap();
}
```
API responses are automatically cached.
You can also fetch the resource lists:
```rust
let items = Item::list(5, 20)?; // ?offset=5&limit=20
// get the lists referenced in the next and previous fields
items.previous_list()?;
items.next_list()?;
// you can also just get the full list
let all_items = Item::full_list()?;
```
To get resources pointed to by `(Named)APIResource`, use `get()`:
```rust
let berry = Berry::from_name("cheri")?;
let berry_item = berry.item.get()?; // berry_item is an Item
```
This can be chained:
```rust
let marill = PokemonSpecies::from_name("marill")?;
let sea_incense = marill.evolution_chain.get()?.baby_trigger_item.unwrap().get()?;
```
The location of the pokeapi used can be changed by setting the
POKERUST_ENDPOINT environment variable. Defaults to the public instance at
. Please consult the pokeapi documentation and read
the fair use policy before using the public API instance.
## License
This software is licensed under the BSD 3-Clause "New" or "Revised" License.