Exemplo n.º 1
0
Arquivo: net.py Projeto: newagemusic/b
    def call_service(self):
        """调用远程服务"""
        try:
            encode_data = None
            if self.params is not None:
                if self.method == 'GET':
                    self.url += '?' + urlencode(self.params)
                    log_debug(self.url)

                elif self.method == 'POST':
                    encode_data = urlencode(self.params)

            opener = urllib2.build_opener()
            opener.addheaders = self.headers
            
            if self.cookie_jar is not None:
                opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(self.cookie_jar))

            res_obj = opener.open(self.url, data=encode_data, timeout=self.timeout)
            self.set_cookie = res_obj.info().getheader('Set-Cookie')
            self.res = res_obj.read()

            # encoding
            self.encoding = guess_json_utf(self.res)
            if self.encoding:
                self.res = self.res.decode(self.encoding)

            self.json = json.loads(self.res)
            self.ret  = self.json.get('ret')
            self.msg  = self.json.get('msg')
            self.data = self.json.get('data')
        except Exception, e:
            #log_error('[JSONService] url:%s, response:%s, expetion:%s' % (self.url, self.res, e))
            return False
Exemplo n.º 2
0
    def get_sign(post_body, app_master_secret):
        """生成加密签名
        :param post_body: json字符串的推送参数
        :param app_master_secret: 加密字符串
        :return:
        """

        method = 'POST'
        url = 'http://msg.umeng.com/api/send'
        log_debug(post_body)
        sign = md5('%s%s%s%s' % (method, url, post_body, app_master_secret))
        return sign
Exemplo n.º 3
0
    def get_sign(post_body, app_master_secret):
        """生成加密签名
        :param post_body: json字符串的推送参数
        :param app_master_secret: 加密字符串
        :return:
        """

        method = 'POST'
        url = 'http://msg.umeng.com/api/send'
        log_debug(post_body)
        sign = md5('%s%s%s%s' % (method, url, post_body, app_master_secret))
        return sign
Exemplo n.º 4
0
    def _send_msg(self, params):
        '''Push API for all kinds of message and notification,
           dict params restore all parameters'''
        try:
            api_post = urllib2.urlopen(data=urllib.urlencode(params),
                                       url=API_URL, timeout=5)
            if api_post:
                log_debug(api_post.read())

        except Exception, e:
            #print e, e.read()
            log_info("[JpushError] %s" % e)
Exemplo n.º 5
0
    def filter_notification(os, tag_arr_json, event_type, trans_id, text, title='The Shein', production_mode='true'):
        """标签推送
        :param os:
        :param tag_arr_json: [{"tag":"shein"},{"tag":"cart-list"},{"tag":"unpay-order"}]
        :param event_type:
        :param trans_id:
        :param text:
        :param title:
        :param production_mode:
        :return:
        """


        if os.lower() == 'android':
            appkey = current_app.config['UM_PUSH_AD_KEY']
            app_master_secret = current_app.config['UM_PUSH_AD_SECRET']

            body_info = {'ticker': 'The Shein',
                         'title': title,
                         'text': text,
                         'after_open': 'go_custom'}
            payload = {'body': body_info,
                       'display_type': 'notification',
                       'extra':{'event_type':event_type, 'trans_id':trans_id}
                       }

        else:
            appkey = current_app.config['UM_PUSH_IOS_KEY']
            app_master_secret = current_app.config['UM_PUSH_IOS_SECRET']

            payload = {'aps': {'alert': text},
                       'event_type':event_type, 'trans_id':trans_id
                       }


        timestamp = int(time.time())
        params = {'appkey': appkey,
                  'timestamp': timestamp,
                  'type': 'groupcast',
                  'filter':{"where":{"and":[{"or":tag_arr_json}]}},
                  'payload': payload,
                  "production_mode": production_mode,

                  }

        post_body = json.dumps(params)
        sign = UmPush.get_sign(post_body, app_master_secret)
        url = 'http://msg.umeng.com/api/send' + '?sign=' + sign

        r = requests.post(url, data=post_body)
        log_debug(r.text)
Exemplo n.º 6
0
    def alias_notification(alias, os, event_type, trans_id, text, title='The Shein', production_mode='true'):
        """别名推送
        :param os: 系统
        :param alias: 别名
        :param text:  推送内容
        :param title:  推送标题
        :production_mode: true 正式环境, false 测试环境
        :return:
        """
        if os.lower() == 'android':
            appkey = current_app.config['UM_PUSH_AD_KEY']
            app_master_secret = current_app.config['UM_PUSH_AD_SECRET']

            body_info = {'ticker': 'The Shein',
                         'title': title,
                         'text': text,
                         'after_open': 'go_custom'}
            payload = {'body': body_info,
                       'display_type': 'notification',
                       'extra':{'event_type':event_type, 'trans_id':trans_id}
                       }

        else:
            appkey = current_app.config['UM_PUSH_IOS_KEY']
            app_master_secret = current_app.config['UM_PUSH_IOS_SECRET']

            payload = {'aps': {'alert': text},
                       'event_type':event_type, 'trans_id':trans_id
                       }




        timestamp = int(time.time())
        params = {'appkey': appkey,
                  'timestamp': timestamp,
                  'type': 'customizedcast',
                  "alias": alias,
                  "alias_type": "shein",
                  'payload': payload,
                  "production_mode": production_mode

                  }
        post_body = json.dumps(params)
        sign = UmPush.get_sign(post_body, app_master_secret)
        url = 'http://msg.umeng.com/api/send' + '?sign=' + sign

        r = requests.post(url, data=post_body)
        log_debug(r.text)
Exemplo n.º 7
0
def push(data,user):
    log_debug("begin push(data,user)-->param:%s;user:%s;"%(data,user))
    param              = {}
    param["pushtoken"] = user.pushtoken
    param["uid"]   = user.uid
    param["os"]        = user.os
    param["version"]   = user.version
    
    aps_json           = json_encode({'aps':data})
    param              = json_encode({'param':param})
    _SERVICE_URL = current_app.config['SERVICE_URL']
    service_url        = _SERVICE_URL or "http://service.zzkko.com:5000"

    if user.os == 'android':
        service_url = service_url+'/push/android'
    elif user.os == 'iPhone OS':
        service_url = service_url+'/push/ios'

    call_asyn_api(service_url, {'aps_json':aps_json, 'param':param}, 'POST')
    log_debug("tpush(data,user) end。")
Exemplo n.º 8
0
    def __init__(self):
        """初始化函数"""

        self.cookie_name = 'zzkko_session'
        self.expire = 30*24*60*60

        g.session = g.get('session', {})

        self.session_new = False
        self.memcache_session_id = request.cookies.get(self.cookie_name, None)

        #log_debug('session:%s, memcache_session_id:%s' % (g.session, self.memcache_session_id))

        if not g.session and self.memcache_session_id:
            log_debug('[CacheInfo] get session:%s' % (self.memcache_session_id, ))
            try:
                g.session = current_app.cache.get(self.memcache_session_id)
                if g.session is None:
                    g.session = {}

            except Exception, e:
                log_error('[SessionManagerError] cache_id:%s, %s' % (self.memcache_session_id, e))
Exemplo n.º 9
0
    def __init__(self):
        """初始化函数"""

        self.cookie_name = 'zzkko_session'
        self.expire = 30 * 24 * 60 * 60

        g.session = g.get('session', {})

        self.session_new = False
        self.memcache_session_id = request.cookies.get(self.cookie_name, None)

        #log_debug('session:%s, memcache_session_id:%s' % (g.session, self.memcache_session_id))

        if not g.session and self.memcache_session_id:
            log_debug('[CacheInfo] get session:%s' %
                      (self.memcache_session_id, ))
            try:
                g.session = current_app.cache.get(self.memcache_session_id)
                if g.session is None:
                    g.session = {}

            except Exception, e:
                log_error('[SessionManagerError] cache_id:%s, %s' %
                          (self.memcache_session_id, e))
Exemplo n.º 10
0
    def filter_notification(os,
                            tag_arr_json,
                            event_type,
                            trans_id,
                            text,
                            title='The Shein',
                            production_mode='true'):
        """标签推送
        :param os:
        :param tag_arr_json: [{"tag":"shein"},{"tag":"cart-list"},{"tag":"unpay-order"}]
        :param event_type:
        :param trans_id:
        :param text:
        :param title:
        :param production_mode:
        :return:
        """

        if os.lower() == 'android':
            appkey = current_app.config['UM_PUSH_AD_KEY']
            app_master_secret = current_app.config['UM_PUSH_AD_SECRET']

            body_info = {
                'ticker': 'The Shein',
                'title': title,
                'text': text,
                'after_open': 'go_custom'
            }
            payload = {
                'body': body_info,
                'display_type': 'notification',
                'extra': {
                    'event_type': event_type,
                    'trans_id': trans_id
                }
            }

        else:
            appkey = current_app.config['UM_PUSH_IOS_KEY']
            app_master_secret = current_app.config['UM_PUSH_IOS_SECRET']

            payload = {
                'aps': {
                    'alert': text
                },
                'event_type': event_type,
                'trans_id': trans_id
            }

        timestamp = int(time.time())
        params = {
            'appkey': appkey,
            'timestamp': timestamp,
            'type': 'groupcast',
            'filter': {
                "where": {
                    "and": [{
                        "or": tag_arr_json
                    }]
                }
            },
            'payload': payload,
            "production_mode": production_mode,
        }

        post_body = json.dumps(params)
        sign = UmPush.get_sign(post_body, app_master_secret)
        url = 'http://msg.umeng.com/api/send' + '?sign=' + sign

        r = requests.post(url, data=post_body)
        log_debug(r.text)
Exemplo n.º 11
0
    def alias_notification(alias,
                           os,
                           event_type,
                           trans_id,
                           text,
                           title='The Shein',
                           production_mode='true'):
        """别名推送
        :param os: 系统
        :param alias: 别名
        :param text:  推送内容
        :param title:  推送标题
        :production_mode: true 正式环境, false 测试环境
        :return:
        """
        if os.lower() == 'android':
            appkey = current_app.config['UM_PUSH_AD_KEY']
            app_master_secret = current_app.config['UM_PUSH_AD_SECRET']

            body_info = {
                'ticker': 'The Shein',
                'title': title,
                'text': text,
                'after_open': 'go_custom'
            }
            payload = {
                'body': body_info,
                'display_type': 'notification',
                'extra': {
                    'event_type': event_type,
                    'trans_id': trans_id
                }
            }

        else:
            appkey = current_app.config['UM_PUSH_IOS_KEY']
            app_master_secret = current_app.config['UM_PUSH_IOS_SECRET']

            payload = {
                'aps': {
                    'alert': text
                },
                'event_type': event_type,
                'trans_id': trans_id
            }

        timestamp = int(time.time())
        params = {
            'appkey': appkey,
            'timestamp': timestamp,
            'type': 'customizedcast',
            "alias": alias,
            "alias_type": "shein",
            'payload': payload,
            "production_mode": production_mode
        }
        post_body = json.dumps(params)
        sign = UmPush.get_sign(post_body, app_master_secret)
        url = 'http://msg.umeng.com/api/send' + '?sign=' + sign

        r = requests.post(url, data=post_body)
        log_debug(r.text)