예제 #1
0
파일: api.py 프로젝트: oeg-upm/agora-gw
def add_descriptions():
    descriptions = request.data
    if not descriptions:
        reason = 'no description/s provided'
    else:
        try:
            g = deserialize(descriptions, request.content_type)
            ted = learn_descriptions_from(g)
            format = TURTLE if request_wants_turtle() else JSONLD
            ted_str = serialize_TED(ted, format, prefixes=R.fountain.prefixes)

            eco_node = URIRef(REPOSITORY_BASE + url_for('get_ted'))
            VTED.update(ted, _get_thing_graph, eco_node)

            own_base = unicode(request.url_root)
            ted_str = ted_str.decode('utf-8').replace(REPOSITORY_BASE + u'/',
                                                      own_base)
            response = make_response(ted_str)
            response.headers['Content-Type'] = format
            return response
        except ValueError as e:
            reason = e.message

    response = jsonify({'status': 'error', 'reason': reason})
    response.status_code = 400
    return response
예제 #2
0
    def update_description(self, td, mediatype=JSONLD, ted_path='/ted'):
        if not td:
            raise AttributeError('no description/s provided')

        g = deserialize(td, mediatype)
        ted = learn_descriptions_from(self.__repository, g)

        if self.__repository.base[-1] == '/':
            ted_path = ted_path.lstrip('/')

        eco_node = URIRef(self.__repository.base + ted_path)
        self.__VTED.update(ted, self._get_thing_graph, eco_node)

        return ted
예제 #3
0
파일: api.py 프로젝트: fserena/agora-gw
    def _learn_with_id(id):
        vocabulary = request.data
        try:
            g = deserialize(vocabulary, format=request.content_type)
            gw.add_extension(id, g)

            response = make_response()
            response.headers['Location'] = url_for('_get_extension', id=id, _external=True)
            response.status_code = 201
            return response
        except (AttributeError, DuplicateVocabulary, ValueError) as e:
            reason = e.message

        response = jsonify({'status': 'error', 'reason': reason})
        response.status_code = 400
        return response
예제 #4
0
파일: api.py 프로젝트: fserena/agora-gw
    def _learn_descriptions():
        descriptions = request.data
        try:
            own_base = unicode(request.url_root)
            canonical_base = gw.repository.base.rstrip('/') + u'/'
            descriptions = descriptions.decode('utf-8').replace(own_base, canonical_base)
            g = deserialize(descriptions, format=request.content_type)

            ted = gw.learn_descriptions(g, ted_path=url_for('_get_ted'))
            format = TURTLE if request_wants_turtle() else JSONLD
            ted_str = serialize_TED(ted, format, prefixes=gw.repository.fountain.prefixes)

            ted_str = ted_str.decode('utf-8').replace(canonical_base, own_base)
            response = make_response(ted_str)
            response.headers['Content-Type'] = format
            return response
        except (AttributeError, ValueError) as e:
            reason = e.message

        response = jsonify({'status': 'error', 'reason': reason})
        response.status_code = 400
        return response
예제 #5
0
파일: api.py 프로젝트: oeg-upm/agora-gw
def learn_with_id(id):
    vocabulary = request.data
    try:
        if vocabulary:
            g = deserialize(vocabulary, request.content_type)
            R.learn(g, ext_id=id)
            VTED.sync(force=True)
            response = make_response()
            response.headers['Location'] = url_for('get_extension',
                                                   id=id,
                                                   _external=True)
            response.status_code = 201
            return response
        else:
            reason = 'no vocabulary provided'
    except DuplicateVocabulary as e:
        reason = e.message
    except ValueError as e:
        reason = e.message

    response = jsonify({'status': 'error', 'reason': reason})
    response.status_code = 400
    return response