Created
March 11, 2019 16:41
-
-
Save craigderington/6f3ef8e16ac69bbefe92da256a39bf76 to your computer and use it in GitHub Desktop.
A small excerpt from MDI Data API
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@app.route('/api/v1.0/sms/<string:phone_number>', methods=['GET']) | |
def get_sms_data(phone_number): | |
""" | |
Append data to Mobile Number | |
Return the Person obj by cell phone number | |
:param: string: phone_number | |
:return: obj(Person), type(json) | |
""" | |
geo, carrier, time_zone, city_geocode = range(4) | |
try: | |
phone = phonenumbers.parse('+1' + phone_number, None) | |
if phone: | |
# check the phone number geocoder | |
geo = geocode_phone_number(str(phone.national_number)) | |
if geo: | |
carrier = geo['carrier'] | |
time_zone = geo['timezone'] | |
city_geocode = geo['geocode'] | |
try: | |
data = db_session.query(IPData).filter( | |
IPData.cell_phone == phone.national_number | |
).first() | |
if data: | |
# return a successful response | |
return jsonify({ | |
'created_date': data.created_date, | |
'sms_match': '+1' + str(data.cell_phone), | |
'verified': True, | |
'last_seen': data.last_seen, | |
'ip': data.ip, | |
'person': { | |
'first_name': data.first_name, | |
'last_name': data.last_name, | |
'address1': data.address1, | |
'address2': data.address2, | |
'city': data.city, | |
'state': data.state.upper(), | |
'zip_code': data.zip_code, | |
'home_phone': data.home_phone, | |
'cell_phone': data.cell_phone, | |
'birth_year': data.birth_year, | |
'credit_range': data.credit_range, | |
'income_range': data.income_range, | |
'home_owner_renter': data.home_owner_renter | |
}, | |
'geo': { | |
'latitude': data.latitude, | |
'longitude': data.longitude, | |
'time_zone': data.time_zone, | |
'metro_code': data.metro_code, | |
'country_name': data.country_name, | |
'country_code': data.country_code, | |
'country_code3': data.country_code3, | |
'dma_code': data.dma_code, | |
'area_code': data.area_code, | |
'region': data.region, | |
'region_name': data.region_name | |
}, | |
'auto': { | |
'car_year': data.car_year, | |
'car_make': data.car_make, | |
'car_model': data.car_model, | |
'ppm_type': data.ppm_type, | |
'ppm_indicator': data.ppm_indicator, | |
'ppm_segment': data.ppm_segment, | |
'auto_trans_date': data.auto_trans_date, | |
'auto_purchase_type': data.auto_purchase_type | |
}, | |
'phone_network': { | |
'number': '+1' + str(phone.national_number), | |
'carrier': carrier, | |
'timezone': time_zone, | |
'city': city_geocode | |
} | |
}), 200 | |
# phone number not found | |
else: | |
resp = {"Number Not Found": '+1' + str(phone.national_number), 'GeoData': geo} | |
data = json.dumps(resp) | |
return Response(data, status=200, mimetype='application/json') | |
except exc.SQLAlchemyError as db_err: | |
resp = {"Database Error": str(db_err)} | |
data = json.dumps(resp) | |
return Response(data, status=500, mimetype='application/json') | |
# phone number parser returned False | |
else: | |
resp = {"Unidentifiable Phone Number:": str(phone_number)} | |
data = json.dumps(resp) | |
return Response(data, status=406, mimetype='application/json') | |
except phonenumbers.NumberParseException as npe: | |
resp = {"Invalid Phone Number Format": str(npe)} | |
data = json.dumps(resp) | |
return Response(data, status=400, mimetype='application/json') |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment