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
