Beispiel #1
0
def quote_json(request, sha1=None):
    """ Lookup context from POSTed quote and url
    Save resulting json file to Amazon S3

    Reads should be done from amazon S3:
    Example:  http://read.neotext.net/quote/sha1/v0.02/sha1_hash
    """
    ACCEPT_READ_REQUESTS = True
    data_dict = {}  # quote context data
    data = {}
    if len(request.POST) == 0:
        if not ACCEPT_READ_REQUESTS:
            return HttpResponse(status=401) # bad request
        else:
            if sha1:
                data_dict = get_quote_dict_from_sha(sha1)

                if data_dict: # test
                    data = json.dumps(data_dict)
                    return HttpResponse(data, content_type='application/json', \
                        status=201) #201=created
                else:
                    raise Http404
    else:
        citing_quote = request.POST.get('citing_quote','')
        citing_quote = citing_quote.strip()
        citing_url = request.POST.get('citing_url','')
        cited_url = request.POST.get('cited_url', '')

        if len(citing_quote) == 0:
            return HttpResponse(status=400) # bad request

        if ( not(is_url(citing_url)) or not(is_url(cited_url)) ):
            return HttpResponse(status=400) # bad request

        #Create Quote Record, By Downloading cited URL
        q = QuoteLookup(citing_quote, citing_url, cited_url)
        data_dict = q.dict()

        if 'error' in data_dict:
            raise Http404

        # Save result to database
        try:
            quote = Quote(**data_dict)
            quote.save()

        except (IntegrityError, DatabaseError, ProgrammingError) as e:
            raise
            return HttpResponse(status=409) # conflict

        filename = ''.join([data_dict['sha1'],'.json'])
        local_filename = ''.join([JSON_FILE_PATH, filename])
        data = q.json()

        with open(local_filename, 'w') as outfile:
            json.dump(data, outfile, indent=4, ensure_ascii=False)

        save_json_to_cloud(filename, local_filename)

    return HttpResponse(data, \
        content_type='application/json', status=201) # 201=created
Beispiel #2
0
def quote_json(request, sha1=None):
    """ Lookup context from POSTed quote and url
    Save resulting json file to Amazon S3

    Reads should be done from amazon S3:
    Example:  http://read.neotext.net/quote/sha1/v0.02/sha1_hash
    """
    ACCEPT_READ_REQUESTS = True
    data_dict = {}  # quote context data
    data = {}
    if len(request.POST) == 0:
        if not ACCEPT_READ_REQUESTS:
            return HttpResponse(status=401) # bad request
        else:
            if sha1:
                data_dict = get_quote_dict_from_sha(sha1)

                if data_dict: # test
                    data = json.dumps(data_dict)
                    return HttpResponse(data, content_type='application/json', \
                        status=201) #201=created
                else:
                    raise Http404
    else:
        citing_quote = request.POST.get('citing_quote','')
        citing_quote = citing_quote.strip()
        citing_url = request.POST.get('citing_url','')
        cited_url = request.POST.get('cited_url', '')

        if len(citing_quote) == 0:
            return HttpResponse(status=400) # bad request

        if ( not(is_url(citing_url)) or not(is_url(cited_url)) ):
            return HttpResponse(status=400) # bad request

        #Create Quote Record, By Downloading cited URL
        q = QuoteLookup(citing_quote, citing_url, cited_url)
        data_dict = q.dict()

        if 'error' in data_dict:
            raise Http404

        # Save result to database
        try:
            quote = Quote(**data_dict)
            quote.save()

        except (IntegrityError, DatabaseError, ProgrammingError) as e:
            raise
            return HttpResponse(status=409) # conflict

        filename = ''.join([data_dict['sha1'],'.json'])
        local_filename = ''.join([JSON_FILE_PATH, filename])
        data = q.json()

        with open(local_filename, 'w') as outfile:
            json.dump(data, outfile, indent=4, ensure_ascii=False)

        save_json_to_cloud(filename, local_filename)

    return HttpResponse(data, \
        content_type='application/json', status=201) # 201=created