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