Skip to content
Snippets Groups Projects
correios_server.py 1.64 KiB
Newer Older
from bottle import route, run, error, response
from correios import CepTracker

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'):
			info = _get_info_from_correios(cep)
			map(lambda x: ceps.save(x), info)

		elif expired(result):
			info = _get_info_from_correios(cep)
			map(lambda x: ceps.update({'cep': x['cep']}, {'$set':x}), info)

		result = ceps.find_one({'cep':cep}, fields={'_id':False,'v_date':False})
		result = dict(status='404',
	        	      message='O CEP %s informado nao pode ser localizado' %cep)
	if not result.has_key('status'):
		tmp = {'status': '200',
Alê Borba's avatar
Alê Borba committed

def __return_error(code):
	print('error: %s' %code)
Alê Borba's avatar
Alê Borba committed

Alê Borba's avatar
Alê Borba committed

Alê Borba's avatar
Alê Borba committed
@error(404)
Alê Borba's avatar
Alê Borba committed
def error404(code):
	result_error = json.dumps({'status':'404', 'message': 'Not Found'})
Alê Borba's avatar
Alê Borba committed
	return result_error

Alê Borba's avatar
Alê Borba committed
@error(500)
def error500(code):
	result_error = json.dumps({'status':'500', 'message': 'Internal Server Error'})
Alê Borba's avatar
Alê Borba committed
	return result_error
def _standalone(port=9876):
    run(host='localhost', port=port)