Beispiel #1
0
def index(service_key):
    service = obj_or_404(Service.by_key(service_key))
    require.service.view(service)
    q = Event.all().filter_by(service=service)
    result = {'count': q.count()}
    q = q.limit(get_limit())
    q = q.offset(get_offset())
    result['results'] = q
    return jsonify(result, refs=True)
Beispiel #2
0
def install(filename):
    """ Load or update a service configuration form a JSON configuration. """
    with open(filename, 'rb') as fh:
        data = json.load(fh)
        service = Service.by_key(data.get('key'))
        if service is None:
            service = Service.create(data)
        else:
            service.update(data)
        events = []
        for event_data in data.get('events', []):
            event_data['service'] = service
            event = Event.by_key(service, event_data['key'])
            if event is None:
                event = Event.create(event_data)
            else:
                event.update(event_data)
            events.append(event)
        service.events = events
        service.editors = []
        for editor_id in data.get('editors', [1]):
            user = User.by_id(editor_id)
            service.editors.append(user)
        db.session.commit()
Beispiel #3
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']
Beispiel #4
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']