from iwla import IWLA
from iplugin import IPlugin

#
# Post analysis hook
# 
# Count TOP hits
#
# Plugin requirements :
#     None
#
# Conf values needed :
#     None
#
# Output files :
#     None
#
# Statistics creation :
#     None
#
# Statistics update :
# month_stats:
#    top_hits =>
#        uri
#
# Statistics deletion :
#     None
#

class IWLAPostAnalysisTopHits(IPlugin):
    def __init__(self, iwla):
        super(IWLAPostAnalysisTopHits, self).__init__(iwla)
        self.API_VERSION = 1

    def hook(self):
        stats = self.iwla.getCurrentVisists()
        month_stats = self.iwla.getMonthStats()
        
        top_hits = month_stats.get('top_hits', {})

        for (k, super_hit) in stats.items():
            if super_hit['robot']: continue
            for r in super_hit['requests'][::-1]:
                if not self.iwla.isValidForCurrentAnalysis(r):
                    break
                if not self.iwla.hasBeenViewed(r) or\
                        r['is_page']:
                    continue

                uri = r['extract_request']['extract_uri'].lower()
                uri = "%s%s" % (r.get('server_name', ''), uri)

                if not uri in top_hits.keys():
                    top_hits[uri] = 1
                else:
                    top_hits[uri] += 1

        month_stats['top_hits'] = top_hits