Subversion Repositories SmartDukaan

Rev

Rev 14747 | Rev 14843 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
13572 kshitij.so 1
import time
14705 kshitij.so 2
import pymongo
14736 kshitij.so 3
import urllib2
4
import gzip
5
import StringIO
13572 kshitij.so 6
 
14705 kshitij.so 7
#TODO Need to add messy stuff to conf.
14708 kshitij.so 8
con=None
14736 kshitij.so 9
headers = { 
10
            'User-agent':'Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36',
11
            'Accept' : 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',      
12
            'Accept-Language' : 'en-US,en;q=0.8',                     
13
            'Accept-Charset' : 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
14
            'Connection':'keep-alive',
15
            'Accept-Encoding' : 'gzip,deflate,sdch'
16
        }
14803 kshitij.so 17
PROXY_URL = "http://192.161.160.203:8800/"
14747 kshitij.so 18
 
14705 kshitij.so 19
def get_mongo_connection(host='localhost', port=27017):
20
    global con
21
    if con is None:
22
        print "Establishing connection %s host and port %d" %(host,port)
23
        try:
24
            con = pymongo.MongoClient(host, port)
25
        except Exception, e:
26
            print e
27
            return None
28
    return con
29
 
13572 kshitij.so 30
def to_java_date(py_timestamp):
31
    try:
32
        java_date =  int(time.mktime(py_timestamp.timetuple())) * 1000 + py_timestamp.microsecond / 1000
33
        return java_date
34
    except:
14705 kshitij.so 35
        return None
36
 
37
def getCashBack(skuId, source_id, category_id, mc, mongoHost):
38
    if not bool(mc.get("category_cash_back")):
39
        populateCashBack(mc, mongoHost)
40
    itemCashBackMap = mc.get("item_cash_back")
41
    itemCashBack = itemCashBackMap.get(skuId)
42
    if itemCashBack is not None:
43
        return itemCashBack
44
    cashBackMap = mc.get("category_cash_back")
45
    sourceCashBack = cashBackMap.get(source_id)
46
    if sourceCashBack is not None and len(sourceCashBack) > 0:
47
        for cashBack in sourceCashBack:
48
            if cashBack.get(category_id) is None:
49
                continue
50
            else:
51
                return cashBack.get(category_id)
52
    else:
53
        return {}
54
 
55
def populateCashBack(mc, mongoHost):
56
    print "Populating cashback"
57
    cashBackMap = {}
58
    itemCashBackMap = {}
59
    cashBack = list(get_mongo_connection(host=mongoHost).Catalog.CategoryCashBack.find())
60
    for row in cashBack:
61
        temp_map = {}
62
        temp_list = []
63
        if cashBackMap.has_key(row['source_id']):
64
            arr = cashBackMap.get(row['source_id'])
65
            for val in arr:
66
                temp_list.append(val)
67
            temp_map[row['category_id']] = row
68
            temp_list.append(temp_map)
69
            cashBackMap[row['source_id']] = temp_list 
70
        else:
71
            temp_map[row['category_id']] = row
72
            temp_list.append(temp_map)
73
            cashBackMap[row['source_id']] = temp_list
74
    itemCashBack = list(get_mongo_connection(host=mongoHost).Catalog.ItemCashBack.find())
75
    for row in itemCashBack:
76
        if not itemCashBackMap.has_key(row['skuId']):
77
            itemCashBackMap[row['skuId']] = row
78
    mc.set("item_cash_back", itemCashBackMap, 24 * 60 * 60)
79
    mc.set("category_cash_back", cashBackMap, 24 * 60 * 60)
80
 
14736 kshitij.so 81
def ungzipResponse(r):
82
    headers = r.info()
83
    if headers.get('Content-Encoding')=='gzip':
84
        print "********************"
85
        print "Deflating gzip response"
86
        print "********************"
87
        url_f = StringIO.StringIO(r.read())
88
        gz = gzip.GzipFile(fileobj=url_f)
89
        html = gz.read()
90
        gz.close()
91
        return html
92
    return r.read()
93
 
94
 
95
def fetchResponseUsingProxy(url, headers=headers):
14738 kshitij.so 96
    proxy = urllib2.ProxyHandler({'http': PROXY_URL})
14736 kshitij.so 97
    opener = urllib2.build_opener(proxy)
98
    urllib2.install_opener(opener)
99
    req = urllib2.Request(url,headers=headers)
100
    response = urllib2.urlopen(req)
101
    response_data = ungzipResponse(response)
102
    response.close()
103
    return response_data
104