Skip to main content

README.md

# Zambia Mobile Networks

Identify Zambian mobile networks (**Airtel**, **MTN**, **Zamtel**, **Zed Mobile**) from a phone number.

## Prefixes

| Network    | Local              | With country code (260)    |
|------------|--------------------|----------------------------|
| Airtel     | 097, 077, 057      | 26097, 26077, 26057        |
| MTN        | 096, 076, 056      | 26096, 26076, 26056        |
| Zamtel     | 095, 075, 055      | 26095, 26075, 26055        |
| Zed Mobile | 098, 078\*, 058\*  | 26098, 26078\*, 26058\*    |

\* `078`/`058` are reserved for Zed Mobile but not yet officially enabled by the network provider; they are detected pre-emptively.

## Installation

Add `zambia_mobile_networks` to your deps in `mix.exs`:

```elixir
def deps do
  [
    {:zambia_mobile_networks, "~> 0.1"}
  ]
end
```

## Usage

```elixir
ZambiaMobileNetworks.detect("0971234567")       # :airtel
ZambiaMobileNetworks.detect("260761234567")     # :mtn
ZambiaMobileNetworks.detect("+260 95 123 4567") # :zamtel
ZambiaMobileNetworks.detect("0911234567")       # nil

ZambiaMobileNetworks.supports?("0961234567", :mtn) # true
ZambiaMobileNetworks.label(:zamtel)                # "Zamtel"
ZambiaMobileNetworks.networks()                    # [:airtel, :mtn, :zamtel, :zed]

# Logos — bundled 200x200 PNG as a base64 data URI
ZambiaMobileNetworks.logo(:mtn)                    # "data:image/png;base64,..."
ZambiaMobileNetworks.logo(:mtn, "path/to/logo.png") # use your own (path or binary)
```

## Test

```bash
mix test
```

## License

This project is open-source and available under the terms of the [MIT License](LICENSE).