123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- # -*- coding: utf-8 -*-
- # !/usr/bin/env python
- import base64
- import hashlib
- import hmac
- import logging
- import time
- from urllib import quote
- from mongoengine import StringField, IntField
- from apps.web.core.db import Searchable
- logger = logging.getLogger(__name__)
- class FengTuTechnologyNorther(Searchable):
- northPort = StringField(verbose_name="平台的 域名端口 推送数据给对方平台的时候 服务器的地址", default="")
- appId = StringField(vebose_name="App key,由丰图提供")
- appSecret = StringField(vebose_name="签名密钥 可以理解为 我方密码")
- northToken = StringField(vebose_name="northToken 通过getToken接口获取 ") # 我们像对方平台获取到的token
- northTokenExpiredTime = IntField(verbose_name=u"northToken的过期时间", default=time.time)
- northAppId = StringField(vebose_name="平台ID,由我们提供")
- meta = {
- "collection": "feng_tu_norther",
- "db_alias": "default"
- }
- def get_sig(self, ts):
- """
- 生成签名字符串
- :return:
- """
- payload = {
- 'appid' : str(self.appId),
- 'timestamp' : str(ts)
- }
- raw = [(k, payload[k]) for k in sorted(payload.keys())]
- s = str('&'.join('='.join(kv) for kv in raw if kv[1]))
- sigSecret = str(self.appSecret)
- sigDate = hmac.new(sigSecret,s, hashlib.md5).digest()
- sig = base64.b64encode(sigDate)
- return quote(sig)
- def join_url(self,path):
- return "{ipPort}/{path}".format(
- ipPort=self.northPort,
- path=path
- )
- def get_token_data(self):
- """
- 获取token的载数据 身份验证以平台为维度获取 那么token的范围也以 平台为准 即 northOperatorID
- """
- return {
- "northAppId": self.northAppId,
- }
|