README.md

[![Discord](https://img.shields.io/discord/823720615965622323.svg?style=for-the-badge)](https://discord.gg/UDNcTrBagN)
[![Twitter](https://img.shields.io/badge/Twitter-1DA1F2?style=for-the-badge&logo=twitter&logoColor=white)](https://twitter.com/vkxni)
[![MIT License](https://img.shields.io/badge/license-MIT-blue.svg?style=for-the-badge)](https://github.com/alelievr/Mixture/blob/master/LICENSE)

# <p align="center">ClashOfClans.ex

<p align="center">A <strong>functional</strong> Clash of Clans APi Wrapper written in pure Elixir.</p>

<p align="center">
<img src="coc.ex_logo.png"  alt="clashofclans.ex" width="300" height="300"/></a>
<p>

```elixir
defmodule Example do
  alias Clashofclans.Base.Players

  def playername(playertag) do
    Players.playername(playertag)
  end
end

# returns the name of the player
Example.playername("your-tag-here") 
```

---

## Getting started
*Please only use the latest version of the package - we do not offer support for any lower or outdated versions.*
> #### Installing

[https://hex.pm/packages/clashofclans](https://hex.pm/packages/clashofclans)    
```elixir
def deps do
    [{:clashofclans, "~> 1.3.0"}]
end
```

```
$ mix deps.get
```

> #### Configuration
Since we (currently) only support authentication through APi tokens, you will need to get one from the [Clash of Clans API](https://developer.clashofclans.com/#/account) website. Once you have your token, you can add it to your `config/config.exs` file like so:

`config/config.exs`
```elixir
# Without sourcing
import Config

config :clashofclans, api_key: System.get_env("API_KEY")
``` 

`config/config.exs`
```elixir
# With sourcing
import Config

config :clashofclans, api_key: "super-secret-api-key-here"
``` 
**With this method you have to run `source .env` before running/building your application.**

*Note:* If you want to use a custom ENV environment on runtime, then use a custom library like [https://hex.pm/packages/dotenv_parser](https://hex.pm/packages/dotenv_parser).

`.env` example
```
export API_KEY="super-secret-api-key-here"
```
You can directly pass in the APi key if you use a custom/runtime environment, but
make  sure the `.env` is in your root directory.

> ### Queries, functions, modules

#### 1.) Modules
- [x] Clan
- [x] Player
- [x] Leagues 
- [x] Gold pass
- [x] Verification
- [ ] Locations
- [ ] Mail Authentication
- [ ] Error Handling

#### 2.) Functions

> Base

`Base.Players/1` 
- playername(playertag)
- townhall(playertag)
- xp(playertag)
- trophies(playertag)
- highest_trophies(playertag)
- clanrole(playertag)
- donations(playertag)
- clanrole(playertag)
- warpreference(playertag)
- attackwins(playertag)
- defensewins(playertag)
- players_clanlevel(playertag)
- players_clanname(playertag)
- players_clantag(playertag)

`Base.Clans/1`
- clanname(clantag)
- clanlevel(clantag)
- clanpoints(clantag)
- clanlocation(clantag)
- clanlanguage(clantag)
- clantype(clantag)
- clandescription(clantag)

> Extended

`Extended.Players/1`
- townhallweapon(playertag)
- builderhalllevel(playertag)
- highest_versus_trophies(playertag)
- versus_trophies(playertag)
- versus_win_count(playertag)
- versuswins(playertag)
- barbariankinglevel(playertag)
- archerqueenlevel(playertag)
- grandwardenlevel(playertag)
- royalchampionlevel(playertag)
- battlemachinelevel(playertag)

`Extended.Clans/1`
- clanversustrophies(clantag)
- capital_state(clantag)
- capital_attacklog(clantag)
- capital_defense_reward(clantag)
- capital_endtime(clantag)
- capital_starttime(clantag)
- enemy_districts_destroyed(clantag)
- capital_totalloot(clantag)
- capital_totalattacks(clantag)
- public_warlog(clantag)
- warfrequency(clantag)
- warleague(clantag)
- warwins(clantag)
- warwinstreak(clantag)
- clanmember_list(clantag)
- clanmember_count(clantag)
- required_th_level(clantag)
- required_trophies(clantag)
- required_versus_trophies(clantag)
 
> Utils
`Players.LegendLeague/1`
 
- best_legend_season(playertag)
- current_legend_season(playertag)
- legend_trophies(playertag)
- previous_legend_season_rank(playertag)
- previous_legend_season_trophies(playertag)
- previous_legend_season_id(playertag)

`Players.Verification/2`
- verifyplayer(playertag, token)

`Leagues/0`
- legend_league
- titan_league_three
- titan_league_two
- titan_league_one
- champion_league_three
- champion_league_two
- champion_league_one
- master_league_three
- master_league_two
- master_league_one
- crystal_league_three
- crystal_league_two
- crystal_league_one
- gold_league_three
- gold_league_two
- gold_league_one
- silver_league_three
- silver_league_two
- silver_league_one
- bronze_league_three
- bronze_league_two
- bronze_league_one
- unranked

`GoldPass/0`
- goldpass_starttime
- goldpass_endtime

---

© vKxni 2022, [MIT Licence](/LICENSE), by [@vKxni](https://github.com/vKxni).