# Exemplos JavaScript - Recusar por GeoIP

Nega ou permite uma requisição com base no país do visitante, resolvido a partir de dados de GeoIP na rede global da Azion. Use esse padrão em uma função de firewall para impor restrições geográficas, bloqueando o tráfego de regiões específicas antes que ele chegue à sua aplicação. O código se baseia no código do país, acessado através de `event.request.metadata["geoip_country_code"]`, e a requisição é negada ou não por `event.deny()`.

```js
async function firewallHandler(event){
    // Access the country code through geoip
    let countryCode = event.request.metadata["geoip_country_code"]

    // Do some logic here
    // In this example, we are blocking access from Brazil
    if (countryCode === "BR"){
        event.deny();
    }

    // Then, if it comes from any other country,
    // the processing continues
    event.continue();
}

addEventListener("firewall", (event)=>event.waitUntil(firewallHandler(event)));
```

## Como funciona

A função escuta o evento `firewall` e executa seu handler assíncrono dentro de `event.waitUntil()`. Ela lê o país do visitante em `event.request.metadata["geoip_country_code"]` e, quando a requisição vem do Brasil, chama `event.deny()`, que retorna uma resposta 403 padrão e interrompe o processamento. Para requisições de qualquer outro país, `event.continue()` permite que a requisição prossiga normalmente até seu destino.

## Recursos relacionados

- [Exemplos em JavaScript](/pt-br/documentacao/devtools/javascript-exemplos/)
- [Runtime APIs](/pt-br/documentacao/produtos/applications/functions/runtime-apis/javascript/fetch-event/)

---