diff options
Diffstat (limited to 'tests/server.py')
| -rwxr-xr-x | tests/server.py | 43 |
1 files changed, 39 insertions, 4 deletions
diff --git a/tests/server.py b/tests/server.py index c77d7f6..09410b2 100755 --- a/tests/server.py +++ b/tests/server.py @@ -64,10 +64,33 @@ for _n in range(600): "ibge": "3550308", "gia": "", "ddd": "11", "siafi": "7107", } +# Bands the API knows about. A 404 for a CEP inside one carries the owning +# municipality in "faixa"; a 404 outside every band omits the key entirely. +# cep_ini/cep_fim inside the object are the extreme CEPs that exist, which is +# why they differ from the band bounds: 25845000 is in the band, is the DNE's +# own start for Areal, and does not exist. +FAIXAS = [ + ("25845000", "25849999", { + "localidade": "Areal", "uf": "RJ", "estado": "Rio de Janeiro", + "regiao": "Sudeste", "ibge": "3300225", "cep_ini": "25845001", + "cep_fim": "25849899", "ceps": 118, + }), +] + HITS = {} LOCK = threading.Lock() +def not_found(cep=None): + body = {"erro": "cep_nao_encontrado", + "mensagem": "CEP não existe na base do DNE"} + for low, high, faixa in FAIXAS: + if cep is not None and low <= cep <= high: + body["faixa"] = faixa + break + return json.dumps(body, ensure_ascii=False) + + def bump(prefix): with LOCK: HITS[prefix] = HITS.get(prefix, 0) + 1 @@ -167,6 +190,20 @@ class Handler(BaseHTTPRequestHandler): if prefix == "escaped": self.send(200, json.dumps(DB["01001000"], ensure_ascii=True)) return + if prefix == "faixavazia": + self.send(404, json.dumps({ + "erro": "cep_nao_encontrado", + "mensagem": "CEP não existe na base do DNE", + "faixa": {}, + }, ensure_ascii=False)) + return + if prefix == "faixatexto": + self.send(404, json.dumps({ + "erro": "cep_nao_encontrado", + "mensagem": "CEP não existe na base do DNE", + "faixa": "Areal", + }, ensure_ascii=False)) + return if parts and parts[0] == "health": body = {"status": "ok", "dne": "26071", "ceps": 1596168, @@ -194,8 +231,7 @@ class Handler(BaseHTTPRequestHandler): return if not parts: - self.send(404, '{"erro":"cep_nao_encontrado",' - '"mensagem":"CEP não existe na base do DNE"}') + self.send(404, not_found()) return cep = parts[0] @@ -205,8 +241,7 @@ class Handler(BaseHTTPRequestHandler): return entry = DB.get(cep) if entry is None: - self.send(404, '{"erro":"cep_nao_encontrado",' - '"mensagem":"CEP não existe na base do DNE"}') + self.send(404, not_found(cep)) return self.send(200, json.dumps(entry, ensure_ascii=False)) |