Skip to content

Commit cd61ae6

Browse files
committed
fixed query on GCM not returning results, fixed long-running proxy problem - Fiddler doesn't provide a https proxy so force proxying of https to go to http port 8888
1 parent 9c215b6 commit cd61ae6

File tree

5 files changed

+22
-10
lines changed

5 files changed

+22
-10
lines changed

elmclient/_gcm.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,10 @@ def _hook_beforequery(querydetails):
3838
if 'orderBy' in querydetails:
3939
del querydetails['orderBy']
4040
# make sure dcterms and oslc not in prefix
41-
if 'dcterms=' in querydetails.get('oslc.prefix',"") or 'oslc' in querydetails.get('oslc.prefix',""):
41+
if 'dcterms=' in querydetails.get('oslc.prefix',"") or 'oslc' in querydetails.get('oslc.prefix',"") or 'rdf' in querydetails.get('oslc.prefix',""):
4242
oldprefix = querydetails['oslc.prefix']
4343
prefixes = oldprefix.split(",")
44-
newprefixes = [p for p in prefixes if not p.startswith("dcterms=") and not p.startswith("oslc=")]
44+
newprefixes = [p for p in prefixes if not p.startswith("dcterms=") and not p.startswith("oslc=") and not p.startswith("rdf=")]
4545
querydetails['oslc.prefix'] = ",".join(newprefixes)
4646
newprefix = querydetails['oslc.prefix']
4747
return querydetails

elmclient/_rm.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -433,7 +433,7 @@ def _load_type_from_resource_shape(self, el, supershape=None):
433433
nameel = rdfxml.xml_find_element(shapedef, './oslc:ResourceShape/rdfs:label')
434434
name = nameel.text
435435
rdfuri = rdfxml.xmlrdf_get_resource_uri( shapedef, ".//owl:sameAs" )
436-
print( f"Registering shape {name=} {uri=} {rdfuri=}" )
436+
# print( f"Registering shape {name=} {uri=} {rdfuri=}" )
437437
self.register_shape( name, uri )
438438
logger.info( f"Opening shape {name} {uri}" )
439439
else:
@@ -466,7 +466,7 @@ def _load_type_from_resource_shape(self, el, supershape=None):
466466
continue
467467

468468
logger.info( f"Defining property {name}.{property_title} {propuri=} +++++++++++++++++++++++++++++++++++++++" )
469-
print( f"Defining property {name}.{property_title} {propuri=} {uri=} +++++++++++++++++++++++++++++++++++++++" )
469+
# print( f"Defining property {name}.{property_title} {propuri=} {uri=} +++++++++++++++++++++++++++++++++++++++" )
470470
# self.register_property(property_title,propuri, shape_uri=uri)
471471
self.register_property(property_title,propuri)
472472

elmclient/examples/dn_simple_modulestructure.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ def iterator():
188188
themodule_u = list(modules.keys())[0]
189189
print( f"{themodule_u=}" )
190190

191-
mod_x = c.execute_get_rdf_xml(themodule_u, cacheable=False, headers={'vvc.configuration': config_u,'DoorsRP-Request-Type':'public 2.0', 'OSLC-Core-Version': None, 'Configuration-Context': None}, intent="Retrieve the module RDF-XML to get the structure URI" ) # have to remove the OSLC-Core-Version and Configuration-Context headers, and provide vvc.configuration header
191+
mod_x = c.execute_get_rdf_xml(themodule_u, cacheable=False, headers={'vvc.configuration': config_u,'DoorsRP-Request-Type':'public 2.0', 'Referer': None, 'OSLC-Core-Version': None, 'Configuration-Context': None}, intent="Retrieve the module RDF-XML to get the structure URI" ) # have to remove the OSLC-Core-Version and Configuration-Context headers, and provide vvc.configuration header
192192

193193
print( f"{mod_x=}" )
194194

@@ -231,7 +231,7 @@ def iterator():
231231
if len(sys.argv)>1:
232232
# toinsert is already prepared
233233
# get the etag
234-
response, etag = c.execute_get_rdf_XML(structure_u, cacheable=False, headers={'vvc.configuration': config_u,'DoorsRP-Request-Type':'public 2.0', 'OSLC-Core-Version': None, 'Configuration-Context': None}, return_etag=True, intent="Retrieve module structure (XML)" ) # have to remove the OSLC-Core-Version and Configuration-Context headers, and provide vvc.configuration header
234+
response, etag = c.execute_get_rdf_xml(structure_u, cacheable=False, headers={'vvc.configuration': config_u,'DoorsRP-Request-Type':'public 2.0', 'OSLC-Core-Version': None, 'Configuration-Context': None}, return_etag=True, intent="Retrieve module structure (XML)" ) # have to remove the OSLC-Core-Version and Configuration-Context headers, and provide vvc.configuration header
235235
print( f"{etag=}" )
236236
# insert a reference to it in a hardcoded location
237237
firsthead_x = rdfxml.xml_find_elements(modstructure_x,'rm_modules:Binding/rm_modules:childBindings/rm_modules:Binding/rm_modules:childBindings')[0]

elmclient/oslcqueryapi.py

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -642,24 +642,34 @@ def _execute_vanilla_oslc_query(self, querycapabilityuri, query_params, orderby=
642642

643643
# check the first set of results to decide what mode we are in
644644
rdfs_member_es = rdfxml.xml_find_elements( result_xmls[0],'.//rdfs:member/*')
645+
# only RM returns rdfs:member with sub-tags
645646
logger.debug(f"rdfs_member_es={rdfs_member_es}")
646647
if len(rdfs_member_es) == 0:
648+
# non-RM
647649
rdfs_member_es = rdfxml.xml_find_elements( result_xmls[0], './/rdfs:member')
648650
logger.debug(f"rdfs_member_es1={rdfs_member_es}")
649651
if len(rdfs_member_es) == 0:
650-
rdfs_member_es = rdfxml.xml_find_elements( result_xmls[0], './/rdf:Description[@rdf:about]')
651-
if len(rdfs_member_es) == 0:
652+
# QM and GCM don't return rdfs:member like CM
653+
rdfs_member_es = rdfxml.xml_find_elements( result_xmls[0], './/rdf:Description/ldp:contains')
654+
# print( f"0 {rdfs_member_es=}" )
655+
if len(rdfs_member_es) != 0:
656+
# for GCM, one element holds all the ldp:contains pointing at each result
652657
gcmode = True
653-
rdfs_member_es = rdfxml.xml_find_elements( result_xmls[0], './/ldp:contains')
654658
logger.info(f"rdfs_member_es2={rdfs_member_es}")
659+
# print(f"rdfs_member_es2={rdfs_member_es}")
655660
else:
661+
# for QM, each result has a Description and there is no overall container like GCM
662+
rdfs_member_es = rdfxml.xml_find_elements( result_xmls[0], './/rdf:Description[@rdf:about]')
656663
qmmode = True
657664
logger.debug(f"rdfs_member_es3={rdfs_member_es}")
658665
else:
666+
# only CM has rdfs:member with no sub-tags
659667
cmmode = True
660668
else:
669+
# only RM returns rdfs:member with sub-tags
661670
rmmode = True
662671
logger.info(f"cmmode={cmmode} rmmode={rmmode} gcmode={gcmode} {qmmode=}")
672+
# print(f"cmmode={cmmode} rmmode={rmmode} gcmode={gcmode} {qmmode=}")
663673
logger.debug( f"{prefixes=}" )
664674
revprefixes = { v:k for k,v in prefixes.items()}
665675
# with select - build a dictionary
@@ -682,8 +692,10 @@ def _execute_vanilla_oslc_query(self, querycapabilityuri, query_params, orderby=
682692
rdfs_member_es = rdfxml.xml_find_elements( result_xml, './/ldp:contains')
683693
elif qmmode:
684694
rdfs_member_es = rdfxml.xml_find_elements( result_xml, './/rdf:Description[@rdf:about]/qm_rqm:orderIndex/..')
695+
# print( f"1 {rdfs_member_es=}" )
685696
if len(rdfs_member_es)==0:
686697
rdfs_member_es = rdfxml.xml_find_elements( result_xml, './/rdf:Description[@rdf:about]/dcterms:title/..')
698+
# print( f"2 {rdfs_member_es=}" )
687699

688700

689701
# process them

elmclient/server.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ def setupproxy(url,proxyport=PROXY_PORT):
9595
proxyurl = urlparts.scheme + "://" + urlparts.netloc
9696
# insert the proxy dictionary
9797
proxydict = {
98-
'https':'https://127.0.0.1:'+str(proxyport)
98+
'https':'http://127.0.0.1:'+str(proxyport) # NOTE the proxy URL is "http:" - Fiddler doesn't provide a https proxy by default so don't change this!
9999
,'http':'http://127.0.0.1:'+str(proxyport)
100100
}
101101
logger.info( f'Setting proxy to {proxydict}' )

0 commit comments

Comments
 (0)