README.md

# TokenRefresher

TokenRefresher is a library to manage and refresh tokens for multiple providers based on their expiration configuration.

## Installation

Add `token_refresher` to your list of dependencies in `mix.exs`:

```elixir
def deps do
  [
    {:token_refresher, "~> 0.1.0"}
  ]
end
```

## Configuration

Configure the providers in your application configuration:

```elixir
config :token_refresher, :providers, [
  {MyApp.Provider1, 3600},
  {MyApp.Provider2, 7200}
]
```

## Usage

Implement the TokenRefresher.Provider behaviour in your provider modules:

```elixir
defmodule MyApp.Provider1 do
  @behaviour TokenRefresher.Provider

  @impl true
  def fetch_token do
    # Logic to fetch the token
    {:ok, "new_token"}
  end
end
```

Start the application:

```elixir
defmodule MyApp.Application do
  use Application

  def start(_type, _args) do
    children = [
      TokenRefresher
    ]

    opts = [strategy: :one_for_one, name: MyApp.Supervisor]
    Supervisor.start_link(children, opts)
  end
end
```

Now TokenRefresher will periodically refresh tokens for the configured providers.