Пример #1
0
def set_criteria_by_ticketkey_host(ticket_key, host):
    
    #
    # [Validation]
    #    1. must be content-type is applicaiton/json
    #    2. JSON must be parsed successfully
    #    3. validate JSON string
    #    4. save to DB
    #    5. purge cache
    #    6. enqueue
    #
    
    # 1.
    if request.headers['Content-Type'] != 'application/json':
        current_app.logger.warn("received Content-Type %s" % request.headers['Content-Type'])
        return response.bad_request("please send application/json")

    # 2.
    # http://flask.pocoo.org/docs/0.10/api/#flask.Request.get_json
    try:
        data = request.get_json()
    except Exception as ex:
        current_app.logger.warn("couldn't parse JSON %s" % ex)
        return response.bad_request("invalid JSON format")

    # 3.
    try:
        criteria = CriteriaData(**data).get_json()
    except Exception as ex:
        current_app.logger.error(ex)
        return response.bad_request(ex.message)

    # 4.
    table = DataTable(region_name=current_app.config['DYNAMODB_REGION'],
                      table_name=current_app.config['CRITERIA_TABLE'],
                      logger=current_app.logger)
    result = table.save(criteria, TicketKey=ticket_key, Host=host)

    # 5.
    cache.delete_memoized(get_all_criteria)
    cache.delete_memoized(get_criteria_by_ticketkey, ticket_key)
    cache.delete_memoized(get_criteria_by_ticketkey_host, ticket_key, host)

    # 6.
    queue = Queue(region_name=current_app.config['SQS_REGION'],
                  queue_name=current_app.config['SQS_NAME'],
                  logger=current_app.logger)
    queue.push({'TicketKey': ticket_key, 'Host': host})

    return response.created()
Пример #2
0
def set_result_by_ticketkey_host(ticket_key, host):

    #
    # [Validation]
    #    1. must be content-type is applicaiton/json
    #    2. JSON must be parsed successfully
    #    3. validate JSON string
    #    4. save to DB
    #    5. purge cache
    #

    # 1.
    if request.headers['Content-Type'] != 'application/json':
        return response.bad_request("please send application/json")

    # 2.
    # http://flask.pocoo.org/docs/0.10/api/#flask.Request.get_json
    try:
        data = request.get_json()
    except Exception as ex:
        current_app.logger.error(ex)
        return response.bad_request("invalid JSON format")

    # 3.
    try:
        result = ResultData(**data).get_json()
    except Exception as ex:
        current_app.logger.error(ex)
        return response.bad_request(ex.message)

    # 4.
    dao = DataTable(region_name=current_app.config['DYNAMODB_REGION'],
                    table_name=current_app.config['RESULT_TABLE'],
                    logger=current_app.logger)
    dao.save(result, TicketKey=ticket_key, Host=host)

    # 5.
    cache.delete_memoized(get_all_result)
    cache.delete_memoized(get_result_by_ticketkey, ticket_key)
    cache.delete_memoized(get_result_by_ticketkey_host, ticket_key, host)

    return response.created()