本文整理汇总了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,
})