# coding: utf-8

import urllib2
from refresh_config import host_list, url_list
import threading

threadLock = threading.Lock()


class Urltool(threading.Thread):
    def __init__(self, threadID, http_type, url, headers):
        threading.Thread.__init__(self)
        self.hostlist = host_list
        self.http_type = http_type
        self.url = url
        self.headers = headers
        self.threadID = threadID

    def generaterl(self):
        self.urls = []
        for host in self.hostlist:
            myurl = '%s://%s%s' % (self.http_type, host, self.url)
            request = urllib2.Request(myurl, headers={"Host": self.headers,
                                                    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36'})
            self.urls.append(request)
        return self.urls

    #    @property
    def run(self):
        print 'number of %s task starting.' % self.threadID
        self.generaterl()
        self.results = []
        for url in self.urls:
            try:
                response = urllib2.urlopen(url, timeout=3)
                # print response.url, response.code
                self.results.append([url.get_header('Host'), url.get_host(), response.url, response.code])

            # 状态码异常
            except urllib2.HTTPError, e:
                self.results.append([url.get_header('Host'), url.get_host(), e.geturl(), e.code])

            # 连接异常
            except urllib2.URLError, e:
                self.results.append([url.get_header('Host'), url.get_host(), e, 999])

            # 数据错误
            except urllib2.httplib.BadStatusLine, e:
                self.results.append([url.get_header('Host'), url.get_host(), e, 998])

            # 超时或其他
            except Exception, e:
                self.results.append([url.get_header('Host'), url.get_host(), e, 997])

        # return self.results
        threadLock.acquire()
        print self.results
        threadLock.release()


if __name__ == '__main__':
    for intid, url in enumerate(url_list):
        if url == 'www.test.com':
            task = Urltool(intid, 'http', '/func.php?uid=12026277&size=big&time=1452578235', url)
            task.start()
        else:
            task = Urltool(intid, 'http', '', url)
            task.start()
