libraries/edge/opensearch/responsebysolr.py (46 lines of code) (raw):
import json
from edge.opensearch.response import Response
class ResponseBySolr(Response):
def __init__(self):
super(ResponseBySolr, self).__init__()
def generate(self, solrResponse):
self._populate(solrResponse)
return super(ResponseBySolr, self).generate()
def _populate(self, solrResponse):
#response.title = 'OCSI Dataset Search: '+searchText
#response.description = 'Search result for "'+searchText+'"'
#response.link = searchUrl
self._populateChannel(solrResponse)
if solrResponse is None:
self.variables.append(
{'namespace': 'openSearch', 'name': 'totalResults', 'value': 1}
)
self.variables.append(
{'namespace': 'openSearch', 'name': 'startIndex', 'value': 1}
)
self.variables.append(
{'namespace': 'openSearch', 'name': 'itemsPerPage', 'value': 1}
)
item = [
{'name': 'title', 'value': 'Error'},
{'name': 'description', 'value': 'error'}
]
self.items.append(item)
else:
#logging.debug(solrResponse)
solrJson = json.loads(solrResponse)
self.variables.append(
{'namespace': 'openSearch', 'name': 'totalResults', 'value': solrJson['response']['numFound']}
)
self.variables.append(
{'namespace': 'openSearch', 'name': 'startIndex', 'value': solrJson['response']['start']}
)
self.variables.append(
{'namespace': 'openSearch', 'name': 'itemsPerPage', 'value': solrJson['responseHeader']['params']['rows']}
)
for doc in solrJson['response']['docs']:
"""
item = [
{'name': 'title', 'value': doc['Dataset-LongName'][0]},
{'name': 'description', 'value': doc['Dataset-Description'][0]},
{'name': 'link', 'value': self._configuration.get('portal', 'datasetUrl')+'/'+doc['Dataset-ShortName'][0]}
]
"""
item = []
for docKey in list(doc.keys()):
item.append({'namespace': 'podaac', 'name': docKey, 'value': doc[docKey]})
self._populateItem(solrResponse, doc, item)
self.items.append(item)
def _populateChannel(self, solrResponse):
pass
def _populateItem(self, solrResponse, doc, item):
pass