Esempio n. 1
0
def delete(id):
    require.logged_in()
    entity = obj_or_404(Entity.by_user_and_id(request.user, id))
    publish(entity_queue, 'entity.delete', entity)
    entity.delete()
    db.session.commit()
    return jsonify({'status': 'gone'}, status=410)
Esempio n. 2
0
def delete(id):
    require.logged_in()
    entity = obj_or_404(Entity.by_user_and_id(request.user, id))
    publish(entity_queue, "entity.delete", entity)
    entity.delete()
    db.session.commit()
    return jsonify({"status": "gone"}, status=410)
Esempio n. 3
0
def update(id):
    require.logged_in()
    entity = obj_or_404(Entity.by_user_and_id(request.user, id))
    data = {"old": entity.to_dict()}
    entity.update(request.form)
    db.session.commit()
    data["new"] = entity
    publish(entity_queue, "entity.update", data)
    return jsonify(entity)
Esempio n. 4
0
def update(id):
    require.logged_in()
    entity = obj_or_404(Entity.by_user_and_id(request.user, id))
    data = {'old': entity.to_dict()}
    entity.update(request.form)
    db.session.commit()
    data['new'] = entity
    publish(entity_queue, 'entity.update', data)
    return jsonify(entity)
Esempio n. 5
0
def match(frame, pattern, entity_ids):
    matches = []
    for k, v in itervalues(frame.get('data'), 'data'):
        rem = pattern.search(unicode(v))
        if rem is None:
            continue
        for entity_id in entity_ids:
            if not Match.exists(frame['urn'], entity_id):
                field = k.split('.', 1).pop()
                match = Match.create(frame['urn'], field, entity_id)
                log.info("match: %s", match)
                matches.append(match)

                routing_key = 'indexing.%s.%s' % (frame['service'], frame['event'])
                publish(indexing_queue, routing_key, frame)
    return matches
Esempio n. 6
0
def match(frame, pattern, entity_ids):
    matches = []
    for k, v in itervalues(frame.get('data'), 'data'):
        rem = pattern.search(unicode(v))
        if rem is None:
            continue
        for entity_id in entity_ids:
            if not Match.exists(frame['urn'], entity_id):
                field = k.split('.', 1).pop()
                match = Match.create(frame['urn'], field, entity_id)
                log.info("match: %s", match)
                matches.append(match)

                routing_key = 'indexing.%s.%s' % (frame['service'],
                                                  frame['event'])
                publish(indexing_queue, routing_key, frame)
    return matches
Esempio n. 7
0
def submit(service_key, event_key):
    if request.json is None:
        raise BadRequest('Data must be submitted as JSON.')

    service = obj_or_404(Service.by_key(service_key))
    require.service.publish(service)

    data = {
        'body': request.json,
        'headers': dict(request.headers.items())
    }

    if arg_bool('sync'):
        urn = generate_frame(service_key, event_key, data)
        return jsonify({'status': 'ok', 'urn': urn})
    else:
        routing_key = 'inbound.%s.%s' % (service_key, event_key)
        publish(inbound_queue, routing_key, data)
        return jsonify({'status': 'queued'})
Esempio n. 8
0
def generate_frame(service_key, event_key, data):
    service = Service.by_key(service_key)
    if service is None:
        raise NotFound('No such service: %s' % service_key)
    event = Event.by_key(service, event_key)
    if event is None:
        raise NotFound('No such event: %s' % event_key)

    frame = {
        'service': service_key,
        'event': event_key,
        'data': data.get('body')
    }
    headers = data.get('headers')
    frame.update({
        'source_url': parse_url(headers.get('X-Source-Location')),
        'details_url': parse_url(headers.get('X-Details-Location')),
        'hash': data_hash(frame),
        'action_at': parse_datetime(headers.get('X-Action-Time')),
        'submitted_at': datetime.utcnow()
    })

    if not frame['action_at']:
        frame['action_at'] = frame['submitted_at']
    else:
        frame['action_at'] = min(frame['action_at'], frame['submitted_at'])

    frame['urn'] = Frame.to_urn(frame)

    if Frame.by_hash(frame['hash']) is not None:
        raise BadRequest('Duplicate content, hash: %(hash)s' % frame)

    Frame.create(service, event, frame)
    store_frame(frame)
    db.session.commit()

    log.info("created: %(urn)s (%(hash)s)", frame)
    routing_key = 'matching.%s.%s' % (service_key, event_key)
    publish(matching_queue, routing_key, frame)
    routing_key = 'indexing.%s.%s' % (service_key, event_key)
    publish(indexing_queue, routing_key, frame)
    return frame['urn']
Esempio n. 9
0
def generate_frame(service_key, event_key, data):
    service = Service.by_key(service_key)
    if service is None:
        raise NotFound('No such service: %s' % service_key)
    event = Event.by_key(service, event_key)
    if event is None:
        raise NotFound('No such event: %s' % event_key)

    frame = {
        'service': service_key,
        'event': event_key,
        'data': data.get('body')
    }
    headers = data.get('headers')
    frame.update({
        'source_url': parse_url(headers.get('X-Source-Location')),
        'details_url': parse_url(headers.get('X-Details-Location')),
        'hash': data_hash(frame),
        'action_at': parse_datetime(headers.get('X-Action-Time')),
        'submitted_at': datetime.utcnow()
    })

    if not frame['action_at']:
        frame['action_at'] = frame['submitted_at']
    else:
        frame['action_at'] = min(frame['action_at'], frame['submitted_at'])

    frame['urn'] = Frame.to_urn(frame)

    if Frame.by_hash(frame['hash']) is not None:
        raise BadRequest('Duplicate content, hash: %(hash)s' % frame)

    Frame.create(service, event, frame)
    store_frame(frame)
    db.session.commit()

    log.info("created: %(urn)s (%(hash)s)", frame)
    routing_key = 'matching.%s.%s' % (service_key, event_key)
    publish(matching_queue, routing_key, frame)
    routing_key = 'indexing.%s.%s' % (service_key, event_key)
    publish(indexing_queue, routing_key, frame)
    return frame['urn']
Esempio n. 10
0
def create():
    require.logged_in()
    entity = Entity.create(request.form, request.user)
    db.session.commit()
    publish(entity_queue, "entity.create", entity)
    return jsonify(entity)
Esempio n. 11
0
def create():
    require.logged_in()
    entity = Entity.create(request.form, request.user)
    db.session.commit()
    publish(entity_queue, 'entity.create', entity)
    return jsonify(entity)