mirror of
https://github.com/kennethreitz-archive/callingme-service.git
synced 2026-06-05 07:16:12 +00:00
numbers and stuff
This commit is contained in:
+15
-1
@@ -5,6 +5,11 @@ from re import sub
|
||||
|
||||
import env
|
||||
import requests
|
||||
import phonenumbers
|
||||
from phonenumbers.geocoder import description_for_number
|
||||
from phonenumbers.geocoder import area_description_for_number
|
||||
|
||||
|
||||
|
||||
creds = env.prefix('opencnam_')
|
||||
session = requests.session()
|
||||
@@ -24,4 +29,13 @@ def phone(number):
|
||||
params = {'username': creds['user'], 'api_key': creds['key']}
|
||||
r = session.get(url, params=params)
|
||||
|
||||
return r.json or {}, r.status_code
|
||||
return r.json or {}, r.status_code
|
||||
|
||||
|
||||
def area_description(number):
|
||||
n = phonenumbers.parse(number, 'US')
|
||||
return area_description_for_number(n, 'en', region='US')
|
||||
|
||||
def description(number):
|
||||
n = phonenumbers.parse(number, 'US')
|
||||
return description_for_number(n, 'en', region='US')
|
||||
+31
-9
@@ -1,5 +1,7 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from datetime import datetime
|
||||
|
||||
from flask import Flask, jsonify, request, Response, redirect, url_for
|
||||
|
||||
from flask_heroku import Heroku
|
||||
@@ -8,7 +10,7 @@ from raven.contrib.flask import Sentry
|
||||
from flask.ext.celery import Celery
|
||||
|
||||
from .data import table
|
||||
from .cnam import phone, clean
|
||||
from . import cnam
|
||||
|
||||
app = Flask(__name__)
|
||||
|
||||
@@ -37,12 +39,17 @@ def describe_api():
|
||||
def update_number(number):
|
||||
namespace = 'numbers:{0}'.format(number)
|
||||
|
||||
p, status = phone(number)
|
||||
p, status = cnam.phone(number)
|
||||
table[namespace]['area_description'] = cnam.area_description(number)
|
||||
table[namespace]['description'] = cnam.description(number)
|
||||
table[namespace]['success'] = False
|
||||
table[namespace]['updated'] = False
|
||||
|
||||
if status == 200:
|
||||
table[namespace]['number'] = p['number']
|
||||
table[namespace]['cnam'] = p['cnam']
|
||||
table[namespace]['success'] = True
|
||||
|
||||
table[namespace]['updated'] = datetime.utcnow().isoformat()
|
||||
|
||||
|
||||
@app.route('/numbers/<number>')
|
||||
@@ -53,22 +60,37 @@ def number_info(number):
|
||||
return 'Invalid length.', 400
|
||||
|
||||
namespace = 'numbers:{0}'.format(number)
|
||||
|
||||
if 'force' in request.args:
|
||||
update_number(number)
|
||||
|
||||
t = table[namespace]
|
||||
if (not t.get('success')) or 'force' in request.args:
|
||||
t = update_number(number)
|
||||
j, s = phone(number)
|
||||
|
||||
if not t.get('success'):
|
||||
|
||||
update_number(number)
|
||||
|
||||
j, s = cnam.phone(number)
|
||||
j['number'] = number
|
||||
j['success'] = False
|
||||
j['cnam'] = None
|
||||
j['area_description'] = cnam.area_description(number)
|
||||
j['description'] = cnam.description(number)
|
||||
j['updated'] = False
|
||||
|
||||
return jsonify(number=j), s
|
||||
# return redirect(url_for('number_info', number=number))
|
||||
|
||||
else:
|
||||
|
||||
data = {
|
||||
'number': t['number'],
|
||||
'cnam': t['cnam'] or None
|
||||
'cnam': t['cnam'] or None,
|
||||
'success': t.get('success', False),
|
||||
'updated': t.get('updated', False)
|
||||
}
|
||||
data = dict(t.items())
|
||||
del data['id']
|
||||
|
||||
return jsonify(number=data)
|
||||
|
||||
|
||||
@@ -80,7 +102,7 @@ def area_exchange():
|
||||
|
||||
@app.route('/normalize')
|
||||
def normalize_number():
|
||||
number = clean(request.args.get('number'))
|
||||
number = cnam.clean(request.args.get('number'))
|
||||
|
||||
if number:
|
||||
return redirect(url_for('number_info', number=number))
|
||||
|
||||
Reference in New Issue
Block a user