Skip to content

Commit 4374fbd

Browse files
committed
Commit do código inicial.
1 parent 4c16617 commit 4374fbd

File tree

5 files changed

+176
-0
lines changed

5 files changed

+176
-0
lines changed

.travis.yml

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
language: python
2+
3+
python:
4+
- "2.6"
5+
- "2.7"
6+
- "3.2"
7+
- "3.3"
8+
- "pypy"
9+
10+
script:
11+
- python setup.py test

postmon.py

+72
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
# coding: utf-8
2+
import requests
3+
4+
BASE_URL = 'http://api.postmon.com.br/v1'
5+
6+
7+
class Cidade(object):
8+
9+
def __init__(self, nome, area_km2=None, codigo_ibge=None):
10+
self.nome = nome
11+
self.area_km2 = area_km2
12+
self.codigo_ibge = codigo_ibge
13+
14+
def __repr__(self):
15+
return '<postmon.Cidade %r>' % self.nome
16+
17+
def __str__(self):
18+
return self.nome
19+
20+
21+
class Estado(object):
22+
23+
def __init__(self, uf, nome=None, area_km2=None, codigo_ibge=None):
24+
self.uf = uf
25+
self.nome = nome
26+
self.area_km2 = area_km2
27+
self.codigo_ibge = codigo_ibge
28+
29+
def __repr__(self):
30+
return '<postmon.Estado %r>' % self.uf
31+
32+
def __str__(self):
33+
return self.uf
34+
35+
36+
class Endereco(object):
37+
38+
def __init__(self, **kwargs):
39+
self.cep = kwargs['cep']
40+
self.logradouro = kwargs.get('logradouro')
41+
self.bairro = kwargs.get('bairro')
42+
43+
estado_info = kwargs.get('estado_info', {})
44+
self.estado = Estado(kwargs['estado'],
45+
estado_info.get('nome'),
46+
estado_info.get('area_km2'),
47+
estado_info.get('codigo_ibge'))
48+
49+
cidade_info = kwargs.get('cidade_info', {})
50+
self.cidade = Cidade(kwargs['cidade'],
51+
cidade_info.get('area_km2'),
52+
cidade_info.get('codigo_ibge'))
53+
54+
def __repr__(self):
55+
return '<postmon.Endereco %r>' % self.cep
56+
57+
def __str__(self):
58+
return '%s, %s - %s, %s - CEP: %s' % (self.logradouro, self.bairro,
59+
self.cidade, self.estado,
60+
self.cep)
61+
62+
63+
def buscar_cep(cep):
64+
response = _GET('/cep/%s' % cep)
65+
response.raise_for_status()
66+
return Endereco(**response.json())
67+
68+
69+
def _GET(endpoint):
70+
url = '%s%s' % (BASE_URL, endpoint)
71+
response = requests.get(url)
72+
return response

setup.py

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
try:
2+
import multiprocessing
3+
except ImportError:
4+
pass
5+
6+
from setuptools import setup
7+
8+
9+
setup(
10+
name='postmon',
11+
version='0.1.1',
12+
description='Postmon service wrapper',
13+
url='http://github.com/PostmonAPI/postmon-python',
14+
15+
author='Iuri de Silvio',
16+
author_email='iurisilvio@gmail.com',
17+
license='MIT',
18+
19+
py_modules=['postmon'],
20+
21+
install_requires=[
22+
'requests>=1.0',
23+
],
24+
25+
classifiers=[
26+
'Development Status :: 3 - Alpha',
27+
'Intended Audience :: Developers',
28+
'License :: OSI Approved :: MIT License',
29+
'Natural Language :: Portuguese (Brazilian)',
30+
'Operating System :: OS Independent',
31+
'Programming Language :: Python :: 2',
32+
'Programming Language :: Python :: 3',
33+
'Topic :: Software Development :: Libraries :: Python Modules',
34+
],
35+
36+
tests_require=[
37+
'nose>=1.0',
38+
'httpretty',
39+
],
40+
test_suite='nose.collector',
41+
)

test_postmon.py

+45
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
import unittest
2+
import json
3+
4+
import httpretty
5+
import postmon
6+
7+
8+
response = {
9+
"bairro": "Bairro B",
10+
"cidade": "Cidade C",
11+
"cep": "11111111",
12+
"logradouro": "Logradouro L",
13+
"estado_info": {
14+
"area_km2": "999.999,001",
15+
"codigo_ibge": "35",
16+
"nome": "Estado E"
17+
},
18+
"cidade_info": {
19+
"area_km2": "1099,409",
20+
"codigo_ibge": "3549904"
21+
},
22+
"estado": "SP"
23+
}
24+
25+
26+
class TestValidCep(unittest.TestCase):
27+
28+
def setUp(self):
29+
httpretty.enable()
30+
url = '%s/cep/11111111' % postmon.BASE_URL
31+
httpretty.register_uri(httpretty.GET, url, body=json.dumps(response))
32+
self.endereco = postmon.buscar_cep('11111111')
33+
34+
def tearDown(self):
35+
httpretty.disable()
36+
httpretty.reset()
37+
38+
def test_cep(self):
39+
self.assertEqual('11111111', self.endereco.cep)
40+
41+
def test_logradouro(self):
42+
self.assertEqual('Logradouro L', self.endereco.logradouro)
43+
44+
def test_bairro(self):
45+
self.assertEqual('Bairro B', self.endereco.bairro)

tox.ini

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
[tox]
2+
envlist = py26,py27,py32,py33,pypy
3+
4+
[testenv]
5+
commands={envpython} setup.py install
6+
{envpython} setup.py test
7+
sitepackages=False

0 commit comments

Comments
 (0)