Skip to content

Instantly share code, notes, and snippets.

@craigderington
Created March 11, 2019 16:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save craigderington/6f3ef8e16ac69bbefe92da256a39bf76 to your computer and use it in GitHub Desktop.
Save craigderington/6f3ef8e16ac69bbefe92da256a39bf76 to your computer and use it in GitHub Desktop.
A small excerpt from MDI Data API
@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