Skip to content
Snippets Groups Projects
PostmonServer.py 1.33 KiB
Newer Older
from bottle import route, run, error, response
from CepTracker import CepTracker
from requests import ConnectionError
import pymongo, json, re
def expired(record_date):
	from datetime import datetime, timedelta

	WEEKS = 26 #6 months

	now = datetime.now()

	return ( now - record_date['v_date'] >= timedelta(weeks=WEEKS))


def _get_info_from_correios(cep):
	tracker = CepTracker()
	info = tracker.track(cep)

	if len(info) == 0:
		raise ValueError()

	return info

Alê Borba's avatar
Alê Borba committed
def verifica_cep(cep):
	cep = cep.replace('-','')

	response.headers['Access-Control-Allow-Origin'] = '*'
Alê Borba's avatar
Alê Borba committed
		con = pymongo.MongoClient('localhost')
		db = con.postmon
		ceps = db.ceps
		result = ceps.find_one({'cep':cep}, fields={'_id':False})

		if not result or not result.has_key('v_date') or expired(result):
			try:
				for item in _get_info_from_correios(cep):
					ceps.update({'cep': item['cep']}, {'$set': item}, upsert=True)

			except ConnectionError:
				response.status = '503 Servico Temporariamente Indisponivel'

		result = ceps.find_one({'cep':cep}, fields={'_id':False,'v_date':False})
		response.headers['Cache-Control'] = 'public, max-age=2592000'

		response.status = '404 O CEP %s informado nao pode ser localizado' %cep
Alê Borba's avatar
Alê Borba committed

def _standalone(port=9876):
Alê Borba's avatar
Alê Borba committed
    run(host='localhost', port=port)