当前位置: 首页>>代码示例>>Python>>正文


Python TemplateParser.get_resource_basic_info方法代码示例

本文整理汇总了Python中wirecloud.commons.utils.template.TemplateParser.get_resource_basic_info方法的典型用法代码示例。如果您正苦于以下问题:Python TemplateParser.get_resource_basic_info方法的具体用法?Python TemplateParser.get_resource_basic_info怎么用?Python TemplateParser.get_resource_basic_info使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在wirecloud.commons.utils.template.TemplateParser的用法示例。


在下文中一共展示了TemplateParser.get_resource_basic_info方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: _parse_basic_info

# 需要导入模块: from wirecloud.commons.utils.template import TemplateParser [as 别名]
# 或者: from wirecloud.commons.utils.template.TemplateParser import get_resource_basic_info [as 别名]
    def _parse_basic_info(self, service_uri):

        count = 0

        for t in self._graph.predicate_objects(service_uri):
            count = count + 1

        if count < 3:
            self._info['part_ref'] = True
            return

        self._info['part_ref'] = False
        vendor = self._get_field(USDL, service_uri, 'hasProvider', id_=True)[0]
        self._info['vendor'] = self._get_field(FOAF, vendor, 'name')[0]

        # provider vCard
        vcard = self._get_field(VCARD, vendor, 'adr', id_=True)[0]

        if vcard != '':
            self._info['vcard'] = {
                'BEGIN': [{
                    'properties': {},
                    'value':'VCARD',
                }],
                'FN': [{
                    'properties': {},
                    'value': self._info['vendor']
                }],
                'ADR': [{
                    'properties': {},
                    'value': self._get_field(VCARD, vcard, 'street-address')[0] + ';' + self._get_field(VCARD, vcard, 'postal-code')[0] + ';' + self._get_field(VCARD, vcard, 'locality')[0] + ';' + self._get_field(VCARD, vcard, 'country-name')[0]
                }],
                'TEL': [{
                    'properties': {},
                    'value': self._get_field(VCARD, vcard, 'tel')[0]
                }],
                'EMAIL': [{
                    'properties': {},
                    'value': self._get_field(VCARD, vcard, 'email')[0]
                }],
                'END': [{
                    'properties': {},
                    'value': "VCARD"
                }]
            }

        self._info['name'] = self._get_field(DCTERMS, service_uri, 'title')[0]

        display_name = None
        artefact = self._get_field(USDL, service_uri, 'utilizedResource', id_=True)[0]
        uri_template = self._get_field(BLUEPRINT, artefact, 'location')[0]
        version = self._get_field(USDL, service_uri, 'versionInfo')[0]
        # if the document does no have a uri_template is not a widget or operator
        if uri_template == '':
            self._info['type'] = 'other'
        else:
            # To know if is a widget an operator or another kind of service using an artefact
            # is necesary to download the technical description

            opener = urllib2.build_opener()
            headers = {"Accept": "text/plain; application/rdf+xml; text/turtle; text/n3"}
            request = MethodRequest('GET', uri_template.encode('utf-8'), '', headers)
            try:
                response = opener.open(request)
                if response.code != 200:
                    self._info['type'] = 'other'
                else:
                    content = response.read()
                    parser = TemplateParser(content)
                    technical_info = parser.get_resource_basic_info()
                    self._info['type'] = technical_info['type']
                    display_name = technical_info['display_name']
                    version = technical_info['version']
                    self._info['name'] = technical_info['name']
                    # if the service is a mashup it may has parts
                    if self._info['type'] == 'mashup':
                        service_parts = self._get_field(USDL, service_uri, 'hasPartMandatory', id_=True)

                        self._info['parts'] = []
                        for part in service_parts:
                            part_info = {}
                            part_info['name'] = self._get_field(DCTERMS, part, 'title')[0]
                            part_info['uri'] = unicode(part)
                            self._info['parts'].append(part_info)
            except HTTPError:
                self._info['type'] = 'other'

        if self._info['type'] == 'other':
            display_name = self._info['name']

        self._info.update({
            'shortDescription': self._get_field(DCTERMS, service_uri, 'abstract')[0],
            'longDescription': self._get_field(DCTERMS, service_uri, 'description')[0],
            'uriImage': self._get_field(FOAF, service_uri, 'depiction')[0],
            'version': version,
            'uriTemplate': uri_template,
            'page': self._get_field(FOAF, service_uri, 'page')[0],
            'displayName': display_name,
        })
开发者ID:fispace,项目名称:wirecloud,代码行数:101,代码来源:usdlParser.py


注:本文中的wirecloud.commons.utils.template.TemplateParser.get_resource_basic_info方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。