#!/usr/bin/env python
# -*- coding: utf-8 -*-

import requests
import json
from url import Url


class PostInsight() :

    token = ""
    type = ""
    link = ""
    comment = ""
    created_time = ""
    message = ""
    data = {}
    insight_map = {}

    def __init__(self,token):
        self.token = token.getToken()
        #print "Insight"

    def setContentInsight(self,content_id):

        url ='https://graph.facebook.com/v2.5/%s?fields=message,created_time,link,comments.limit(5),type,insights{values}'%content_id
        txt = requests.get(url + self.token).text
        #print url + self.token
        self.data = json.loads(txt)
        self.setContentType(self.data)
        self.setContentComment(self.data)
        self.setLinkUrl(self.data)
        #print self.data
        try:
            for i in self.data['insights']['data']:
                name = i['id'].split("/")[2]
                values = i['values'][0]
                self.insight_map[name]= values
        except:
            return

    def getContentInsightByKey(self, key):
        #subkey is double only

        sub_key_list = key.split(',')
        try:
            if len(sub_key_list) == 2:
                ret = self.insight_map[sub_key_list[0]]['value'][sub_key_list[1]]
            else :
                ret = self.insight_map[sub_key_list[0]]['value']
        except:
            return 0

        if ret == {} :
            return 0

        return ret


    def getContentInsightAll(self):
        return self.insight_map


    def setContentCreated_time(self, data):
        try:
            self.created_time = data['created_time']
        except:
            self.created_time = ""

    def setContentMessage(self, data):
        try:
            self.message = data['created_time']
        except:
            self.message = ""

    def setContentType(self, data):
        try:
            self.type = data['type']
        except:
            self.type = ""

    def setContentComment(self, data):
        try:
            self.comment = Url().getText2bitly(data['comments']['data'][0]['message'])
            #print self.comment
        except:
            self.comment = ""

    def setLinkUrl(self, data):
        try:
            self.link = data['link']
            #print self.link
        except:
            self.link = ""

    def getLinkUrl(self):
        return self.link

    def getContentType(self):
        return self.type

    def getContentCommentUrl(self):
        return self.comment

    def getContentCreated_time(self):
        try:
            return self.created_time.replace('T'," ").replace('+0000',"")
        except:
            return ""

    def getContentMessage(self):
        try:
            return self.message.replace('\n'," ").replace('\r'," ").replace('\'',"")
        except:
            return ""