Пример #1
0
def earth2mars(lat, log):
    """
    地球转火星
    :param lat: 北纬
    :param log: 东经
    """
    return redis_encode_batch('earth2mars', lat, log)
Пример #2
0
def encode(push_alert, push_custom_payload, compile_type, bundle_id, device_token):
    """
    水果推送协议编码
    :param push_alert: 水果推送标题
    """
    if not (push_alert and isinstance(push_alert, str)):
        raise ValueError('alert not str: %s' % type(push_alert))
    if not (push_custom_payload and isinstance(push_custom_payload, dict)):
        raise ValueError('payload not dict: %s' % type(push_custom_payload))

    # payload = {
    #     'aps': {
    #         'alert': push_alert,
    #         'badge': 1,
    #         'sound': 'Voicemail.caf'
    #     }
    # }
    payload = {
        'aps': {
            'content-available': 1,
            'data': push_alert,
        }
    }
    payload.update(push_custom_payload)
    payload = msgpack.packb(payload, use_bin_type=True)

    return redis_encode_batch(compile_type, bundle_id, device_token, payload)
Пример #3
0
def save_memcache(pid, lg, la, ts, from_, radius, addr, token, cmd, battery=0):
    logger.debug('mc gps: {0}, {1}, {2}, {3}, {4}'.format(
        pid, lg, la, ts, from_))
    if lg is None:
        return
    if not isinstance(lg, numbers.Real) and not isinstance(la, numbers.Real):
        return
    if not isinstance(ts, int):
        logger.warn('ts invalid: {0}'.format(ts))
        return
    if not isinstance(from_, int):
        logger.warn('from_ invalid: {0}'.format(from_))
        return
    if not isinstance(radius, int):
        logger.warn('radius invalid: {0}'.format(radius))
        return
    if not (isinstance(addr, str) and isinstance(token, (int, long))
            and isinstance(cmd, str)):
        logger.warn('args invalid: {0}, {1}'.format(token, cmd))
        return

    lg = conv_raw(lg)
    la = conv_raw(la)

    return ':'.join(
        ('gps_loc', pid)), redis_encode_batch(lg, la, ts, from_, radius,
                                              battery, token, cmd, addr)
Пример #4
0
def encode(*files):
    """
    支持多个文件名
    带有文件后缀
    :param files: 带后缀的文件名
    """
    return redis_encode_batch(*files)
Пример #5
0
def zone_event(pid, lat, log, ts, road, token, battery, low_power, *wifis):
    """
    投递定位事件
    需要注意火星坐标问题,该函数默认为火星坐标
    :param battery: 电池电量
    :param token: 定位事件token
    :param log:
    :param lat:
    :param pid: 设备id
    :param ts: 定位事件时间,int
    :param road: 道路名
    :param low_power: 是否低电量
    :param wifis: wifi列表
    """
    if not (pid and isinstance(pid, str)):
        raise ValueError('pid not str: %s' % type(pid))
    if not (lat and isinstance(lat, float) and log and isinstance(log, float)):
        raise ValueError('lat or log not float: %s, %s' %
                         (type(lat), type(log)))
    if not (ts and isinstance(ts, (int, long, float))):
        raise ValueError('ts not int: %s' % (type(ts)))
    if not isinstance(road, str):
        raise ValueError('road not str: %s' % type(road))
    if not (token and isinstance(token, (int, long))):
        raise ValueError('token not int: %s' % type(token))

    return redis_encode_batch('ze', pid, lat, log, ts, road, token, battery,
                              low_power, *wifis)
Пример #6
0
def encode(api_key, target_id, push_payload):
    """
    长连接推送协议编码
    :param api_key: 开发者帐号
    :param target_id: 目标设备id
    :param push_payload:
    """
    return redis_encode_batch(api_key, target_id, push_payload)
Пример #7
0
def cdma_bs_fix(bs_lat, bs_log, an_lat, an_log):
    """
    cdma基站修正
    :param bs_lat:
    :param bs_log:
    :param an_lat:
    :param an_log:
    :return:
    """
    return redis_encode_batch('cdma_bs_fix', bs_lat, bs_log, an_lat, an_log)
Пример #8
0
def encode(tid, uid, sms_body):
    """

    :param tid:
    :param uid:
    :param sms_body:
    :return:
    """
    if 20 != len(tid):
        raise ValueError('term_id invalid: %s' % tid)
    if len(sms_body) > 140:
        raise ValueError('sms_body too long: %r' % sms_body)
    return redis_encode_batch(tid, uid, sms_body)
Пример #9
0
def encode(lang, mobile, ts, account, typ, delay=600):
    """
    合并短信编码
    :param lang: 翻译语言
    :param mobile:
    :param ts:
    :param account: 通过帐号判定使用谁家的短信通道
    :param typ:
    :param delay:
    :return:
    """
    if not (ts and isinstance(ts, int)):
        raise ValueError('ts not time')
    if not (delay and isinstance(delay, int)):
        raise ValueError('delay not int')
    #帐号默认为空,新增参数,兼容之前无帐号调用
    return redis_encode_batch(lang, mobile, ts, account, typ, delay)
Пример #10
0
def encode(cmd, expire, lvl_fn, lvl_body=None):
    """
    leveldb请求编码
    :param cmd: 执行动作,get/put/snapshot
    :param expire: 文件有效期,0表示长期有效,单位秒
    :param lvl_fn: 文件名
    :param lvl_body: 文件体
    """
    if cmd not in ('get', 'put', 'snapshot', 'delete'):
        raise ValueError('cmd invalid: {0}'.format(cmd))
    if not isinstance(expire, int):
        raise ValueError('expire not int, but %s' % type(expire))
    if not isinstance(lvl_fn, str):
        raise ValueError('lvl_fn invalid: {0}'.format(lvl_fn))
    if not (lvl_body is None or isinstance(lvl_body, str)):
        raise ValueError('lvl_body invalid: {0}'.format(lvl_body))

    return redis_encode_batch(cmd, expire, lvl_fn, lvl_body or '')
Пример #11
0
def resolve(cmd, expire, fn, value=None):
    """
    过期策略:暂时不计较expire的具体值,统一按1天处理
    """
    global lvl_db_map

    now = datetime.now()
    _clear_yesterday(now)

    func = globals().get(cmd)
    if not func:
        #只支持get/put/snapshot
        return redis_encode_batch()

    cur_root = path.expanduser('~/leveldb_files' if 0 == expire else _root_date(now))
    if cur_root not in lvl_db_map:
        lvl_db_map.update({cur_root: plyvel.DB(cur_root, create_if_missing=True)})

    return func(lvl_db_map.get(cur_root), fn, value)
Пример #12
0
def zone_batch(pid, *zones):
    """
    需要注意火星坐标的问题,该打包函数不负责坐标系转换
    批量设置安全区

    :param zones: {
        'lat': 0,
        'log': 1,
        'radius': 2,
        'name': 'xx',
    }
    """
    params = ['zb', pid]
    for z in zones:
        params.append(z.get('lat'))
        params.append(z.get('log'))
        params.append(z.get('radius'))
        params.append(z.get('name'))
    return redis_encode_batch(*params)
Пример #13
0
def handle_req(req):
    queue_push(apns_conf, *req.args)
    req.write(redis_encode_batch(1))
    req.finish()