def handle_foursquare_task(foursquare_task_object, sender):
    foursquare_client = FoursquareClient()
    twilio_client = TwilioClient()

    if not foursquare_task_object['query']:
        twilio_client.send_sms(settigns.TWILIO_NUMBER, sender, SMS_TEMPLATES['MALFORMED_QUERY']['foursquare'])
        return HttpResponseBadRequest("Query malformed")

    task_namespace = _get_task_namespace_object(foursquare_task_object['flags'])

    query_with_options = {'query':foursquare_task_object['query'], 'near':task_namespace.near[0]}
    venues = foursquare_client.query_foursquare_venues(query_with_options, task_namespace.depth[0])
    if venues:
        for venue in venues:
            contact = venue.get('contact')
            location = venue.get('location')
            if location.get('formattedAddress'):
                sms_body = SMS_TEMPLATES['QUERY_RESPONSE']['foursquare'].format(' '.join(location.get('formattedAddress', 'No Address')) + ', ' + contact.get('phone','No phone'))
                twilio_client.send_sms(settings.TWILIO_NUMBER, sender, sms_body)
            else:
                sms_body = SMS_TEMPLATES['QUERY_RESPONSE']['foursquare'].format(location.get('address','No Address') + ', at ' + location.get('crossStreet','No cross street') + ', ' + contact.get('phone','No phone'))
                twilio_client.send_sms(settings.TWILIO_NUMBER, sender, sms_body)
        return HttpResponse("Success")
    else:
        twilio_client.send_sms(settings.TWILIO_NUMBER, sender, SMS_TEMPLATES['NO_RESPONSE']['foursquare'])
        return HttpResponseNotFound("Nothing returned for that query")
def task(request):
    incoming_text = Text.objects.create(
        body = request.POST.get('Body', 'No message body').lower(),
        message_sid = request.POST.get('MessageSid'),
        from_number = request.POST.get('From'),
        to_number = request.POST.get('To'),
    )
    twilio_client = TwilioClient()
    # Split out the pre-flag text, this will indicate the task to accomplish and any required keywords
    parsed_task = _parse_task_parts(incoming_text)
    #Handle foursquare task
    if parsed_task['task_type'] == 'foursquare':
        return foursquare_wrapper.handle_foursquare_task(parsed_task, incoming_text.from_number)
    else:
        twilio_client.send_sms(settings.TWILIO_NUMBER, incoming_text.from_number, SMS_TEMPLATES['WRONG_TASK_TYPE'])
        return HttpResponseBadRequest("That task isn't supported yet. Just foursquare for now!")
    return HttpResponse('All branches should be handled, we shouldn\'t get here.')