Esempio n. 1
0
class FileParser:
    def __init__(self, fileName):
        '''
        :param fileName:
        '''
        self.logger = Logger(logger="FileParser").getlog()
        try:
            self.config = ConfigParser()
            self.config.read(fileName, encoding='gbk')
            # self.config.read(fileName, encoding='utf8')
        except:
            self.logger.info(fileName)
            self.logger.exception('文件名不存在,请检查配置!')

    def get(self, section, option):
        '''
        :param section:
        :param option:
        :return:value
        '''
        res = self.config.get(section, option)
        if res.strip() == '':
            return False
        else:
            return res

    def set(self, section, option):
        return self.config.set(section, option)

    def get_sections(self):
        '''返回所有的sections'''
        return self.config.sections()
Esempio n. 2
0
File: Db.py Progetto: w1r2p1/creten
    def init(engineType, user, password, host, port, db, debug=False):
        Db.engineType = engineType
        Db.user = user
        Db.password = password
        Db.port = port
        Db.host = host
        Db.db = db

        log = Logger()

        if engineType == 'sqlite':
            engineConnStr = engineType + ':///' + db
            engineConnStrLog = engineConnStr
        else:
            engineConnStr = engineType + '://' + user + ':' + password + '@' + host + ':' + str(
                port) + '/' + db
            engineConnStrLog = engineType + '://' + user + '@' + host + ':' + str(
                port) + '/' + db

        log.info('Db connection: ' + engineConnStrLog)
        log.debug('Db connection full: ' + engineConnStr)

        engine = create_engine(engineConnStr, echo=debug)
        session_factory = sessionmaker(bind=engine)
        Db.Session = scoped_session(session_factory)

        Db.Base = declarative_base(bind=engine)
        Db.metadata = Db.Base.metadata
Esempio n. 3
0
 def verify_token(self, token):
     req = self.auth.query(token)
     Logger.info("code=%s, content=%s", req.status_code, req.content)
     if not req.ok:
         #Logger.error("verify user token failed!token=%s", token)
         print("query failed!%s" % req.json())
         return False
     return True
Esempio n. 4
0
 def login_test(self, mobile, pwd):
     # 尝试登录
     rtn = self.login(mobile, pwd, app_id=1001)
     if rtn is None:
         Logger.error("login failed!user=%s, pwd=%s", mobile, pwd)
         return
     login_user = rtn
     Logger.info(rtn)
Esempio n. 5
0
 def update(self, uid, token, refresh_token, appId=""):
     req = self.auth.update_token(uid, token, refresh_token, appId)
     Logger.info("code=%s, content=%s", req.status_code, req.json())
     if not req.ok:
         #Logger.error("update token failed!uid=%s, token=%s, refreshToken=%s, content=%s", uid, token, refresh_token, req.content)
         print("update_token failed!%s" % req.json())
         return None
     return req.json()
Esempio n. 6
0
 def logout(self, uid, token):
     req = self.auth.logout(token)
     Logger.info("code=%s, content=%s", req.status_code, req.json())
     if not req.ok:
         #Logger.error("user logout failed!token=%s, msg=%s", token, req.content)
         print("login failed!%s" % req.json())
         return None
     self.context.del_login_user(uid)
     return req.json()
Esempio n. 7
0
class getPicList4HotMi:

    def __init__(self):
        self.logger = Logger(logger="getPicList4HotMi").getlog()

    def get_getPicList4HotMiURL(self,baseURL,URL,lang,timeStamp,clientVersionInfo,access_token):
        '''
        :param baseURL:
        :param lang:
        :param timeStamp:
        :param clientVersionInfo:
        :param access_token:
        :return:热门推荐
        '''
        getPicList4HotMiURL = baseURL + URL + "?lang=%s&timeStamp=%s&clientVersionInfo=%s&access_token=%s" % (lang, timeStamp,clientVersionInfo,access_token)
        self.logger.info("url为:%s" %getPicList4HotMiURL)
        return getPicList4HotMiURL


    @retry(stop_max_attempt_number=5, wait_random_min=1000, wait_random_max=2000, retry_on_result=_result)
    def send_request_getPicList4HotMi(self,url,currentPage,pageSize,allNailSuitFlag=None):
        '''
        :param url:
        :param currentPage:
        :param pageSize:
        :return:
        '''
        headers = {"Content-Type": "application/json"}
        parameters = {
                "currentPage":currentPage,
                "pageSize":pageSize,
                "allNailSuitFlag": allNailSuitFlag
        }
        self.logger.info("请求的参数为:%s" %parameters)
        r = requests.post(url, data=json.dumps(parameters), headers=headers,timeout=30)
        self.logger.info("返回的参数为:%s" % json.loads(r.text))
        return json.loads(r.text)



    @retry(stop_max_attempt_number=5, wait_random_min=1000, wait_random_max=2000, retry_on_result=_result)
    def send_request_getPicList4HotMi_old(self,url,currentPage,pageSize):
        '''
        :param url:
        :param currentPage:
        :param pageSize:
        :return:
        '''
        headers = {"Content-Type": "application/json"}
        parameters = {
                "currentPage":currentPage,
                "pageSize":pageSize
        }
        self.logger.info("请求的参数为:%s" %parameters)
        r = requests.post(url, data=json.dumps(parameters), headers=headers,timeout=30)
        self.logger.info("返回的参数为:%s" % json.loads(r.text))
        return json.loads(r.text)
Esempio n. 8
0
    def verify_user(self, uid, token):
        req = self.auth.query_user(uid, token)
        Logger.info("code=%s, content=%s", req.status_code, req.json())
        if not req.ok:
            #Logger.error("query user all token failed!uid=%s, token=%s, content=%s", uid, token, req.content)
            print("query_user failed!%s" % req.json())
            return None

        return req.json()
Esempio n. 9
0
 def login(self, user_code, pwd, app_id=''):
     req = self.auth.login(user_code, pwd, app_id)
     Logger.info("code=%s, content=%s", req.status_code, req.json())
     if not req.ok:
         #Logger.error("user login failed!user_code=%s,pwd=%s, msg=%s", user_code, pwd, req.content)
         print("login failed!%s" % req.json())
         return None
     self.context.add_login_user(req.json())
     return req.json()
Esempio n. 10
0
class addDiyPic:

    def __init__(self):
        self.logger = Logger(logger="addDiyPic").getlog()

    def get_AddDiyPicURL(self,baseURL,URL,lang,timeStamp,clientVersionInfo,access_token):
        '''
        :param baseURL:
        :param URL:
        :param lang:
        :param timeStamp:
        :param clientVersionInfo:
        :param access_token:
        :return:
        '''
        AddDiyPicURL = baseURL + URL + "?lang=%s&timeStamp=%s&clientVersionInfo=%s&access_token=%s" % (lang, timeStamp, clientVersionInfo,access_token)
        self.logger.info("url为:%s" %AddDiyPicURL)
        return AddDiyPicURL



    @retry(stop_max_attempt_number=5, wait_random_min=1000, wait_random_max=2000, retry_on_result=_result)
    def send_request_addDiyPic(self,url,galleryName,galleryUrl,galleryThumbnailUrl,collectionType):
        '''
        :param galleryName:
        :param galleryUrl:
        :param galleryThumbnailUrl:
        :param collectionType:
        :return:
        '''
        headers = {"Content-Type": "application/json"}
        if collectionType == "社区图库":
            parameters = {
                "galleryName":galleryName,
                "galleryUrl":galleryUrl,
                "galleryThumbnailUrl":galleryThumbnailUrl,
                "collectionType":"2"
            }
            self.logger.info("请求的参数为:%s" %parameters)
            r = requests.post(url, data=json.dumps(parameters), headers=headers,timeout=30)
            self.logger.info("返回的参数为:%s" % json.loads(r.text))
            return json.loads(r.text)
        elif collectionType == "DIY图库并收藏":
            parameters = {
                "galleryName":galleryName,
                "galleryUrl":galleryUrl,
                "galleryThumbnailUrl":galleryThumbnailUrl,
                "collectionType":"3"}
            self.logger.info("请求的参数为:%s" %parameters)
            r = requests.post(url, data=json.dumps(parameters), headers=headers,timeout=30)
            self.logger.info("返回的参数为:%s" % json.loads(r.text))
            return json.loads(r.text)
Esempio n. 11
0
class queryUserInfoList:

    def __init__(self):
        self.logger = Logger(logger="queryUserInfoList").getlog()
        self.base = baseUtils()

    def get_queryUserInfoListURL(self,env,access_token):
        '''
        :param baseURL:
        :param lang:
        :param timeStamp:
        :param clientVersionInfo:
        :return:
        '''
        URL = "/user/userInfo/queryUserInfoList"

        if env == "dev":
            baseurl = "https://oc-api-dev.nailtutu.com"
        elif env == "uat":
            baseurl = "https://oc-api-uat.nailtutu.com"
        elif env == "prod":
            baseurl = "https://oc-api.nailtutu.com"
        else:
            self.logger.info("你输入的参数有误,请检查配置")

        ReallyURL = baseurl + URL + "?access_token=%s&lang=zh&timeStamp=%s" % (access_token,self.base.getTimeStamp())
        self.logger.info("url为:%s" %ReallyURL)
        return ReallyURL



    def send_request_queryUserInfoList(self,url,nickname):
        '''
        用户查询列表
        :param url:
        :param nickname:
        :return:
        '''
        headers = {"Content-Type": "application/json"}

        parameters = {
                    "userType":2,
                    "username": "",
                    "nickname": nickname,
                    "mobile": "",
                    "email": "",
                    "userStatus": "0",
                    "currentPage": 1,
                    "pageSize": "20"
            }

        self.logger.info("请求的参数为:%s" %parameters)
        r = requests.post(url, data=json.dumps(parameters), headers=headers,timeout=30)
        self.logger.info("返回的参数为:%s" % json.loads(r.text))
        return json.loads(r.text)
Esempio n. 12
0
class queryTagInfo:

    def __init__(self):
        self.logger = Logger(logger="queryTagInfo").getlog()
        self.base = baseUtils()

    def get_queryTagInfoURL(self,env,access_token):
        '''
        :param baseURL:
        :param lang:
        :param timeStamp:
        :param clientVersionInfo:
        :return:
        '''
        URL = "/oc/tOcTagInfo/queryTagInfo"

        if env == "dev":
            baseurl = "https://oc-api-dev.nailtutu.com"
        elif env == "uat":
            baseurl = "https://oc-api-uat.nailtutu.com"
        elif env == "prod":
            baseurl = "https://oc-api.nailtutu.com"
        else:
            self.logger.info("你输入的参数有误,请检查配置")

        ReallyURL = baseurl + URL + "?access_token=%s&lang=zh&timeStamp=%s" % (access_token,self.base.getTimeStamp())
        self.logger.info("url为:%s" %ReallyURL)
        return ReallyURL



    def send_request_queryTagInfo(self,url,tagName,currentPage=1,pageSize=15):
        '''
        查询标签信息
        :param url:
        :param tagName:
        :param tagDescribe:
        :param sortNumber:
        :return:
        '''
        headers = {"Content-Type": "application/json"}
        parameters = {
                "tagName":tagName,
                "currentPage":1,
                "pageSize":100,
                "orderBy":"sort_number DESC,modify_time DESC",
                "beginDate":None,
                "endDate":None
                }
        self.logger.info("请求的参数为:%s" %parameters)
        r = requests.post(url, data=json.dumps(parameters), headers=headers,timeout=30)
        self.logger.info("返回的参数为:%s" % json.loads(r.text))
        return json.loads(r.text)
Esempio n. 13
0
class queryDesignerList:
    def __init__(self):
        self.logger = Logger(logger="queryDesignerList").getlog()
        self.base = baseUtils()

    def get_queryDesignerListURL(self, env, access_token):
        '''
        :param baseURL:
        :param lang:
        :param timeStamp:
        :param clientVersionInfo:
        :return:
        '''
        URL = "/oc/designer/queryDesignerList"
        if env == "dev":
            baseurl = "https://oc-api-dev.nailtutu.com"
        elif env == "uat":
            baseurl = "https://oc-api-uat.nailtutu.com"
        elif env == "prod":
            baseurl = "https://oc-api.nailtutu.com"
        else:
            self.logger.info("你输入的参数有误,请检查配置")

        ReallyURL = baseurl + URL + "?access_token=%s&lang=zh&timeStamp=%s" % (
            access_token, self.base.getTimeStamp())
        self.logger.info("url为:%s" % ReallyURL)
        return ReallyURL

    def send_request_queryDesignerList(self, url, authorNickname=None):
        '''
        获取设计师列表
        :param url:
        :param status:
        :param currentPage:
        :param pageSize:
        :param authorNickname:
        :return:
        '''
        headers = {"Content-Type": "application/json"}
        parameters = {
            "status": 1,
            "currentPage": 1,
            "pageSize": 15,
            "authorNickname": authorNickname
        }
        self.logger.info("请求的参数为:%s" % parameters)
        r = requests.post(url,
                          data=json.dumps(parameters),
                          headers=headers,
                          timeout=30)
        self.logger.info("返回的参数为:%s" % json.loads(r.text))
        return json.loads(r.text)
class getDeviceModel:
    def __init__(self):
        self.logger = Logger(logger="getDeviceModel").getlog()

    def get_getDeviceModelURL(self, baseURL, URL, lang, timeStamp,
                              clientVersionInfo, access_token):
        '''
        :param baseURL:
        :param lang:
        :param timeStamp:
        :param clientVersionInfo:
        :param access_token:
        :return:获取设备模式接口
        '''
        getDeviceModelURL = baseURL + URL + "?lang=%s&timeStamp=%s&clientVersionInfo=%s&access_token=%s" % (
            lang, timeStamp, clientVersionInfo, access_token)
        self.logger.info("url为:%s" % getDeviceModelURL)
        return getDeviceModelURL

    def send_request_getDeviceModel(self, url, sn):
        '''
        :param url:
        :param sn:
        :return:
        '''
        headers = {"Content-Type": "application/json"}
        parameters = {"sn": sn}
        self.logger.info("请求的参数为:%s" % parameters)
        r = requests.post(url,
                          data=json.dumps(parameters),
                          headers=headers,
                          timeout=30)
        self.logger.info("返回的参数为:%s" % json.loads(r.text))
        return json.loads(r.text)
Esempio n. 15
0
class getNameByBankCard:
    def __init__(self):
        self.logger = Logger(logger="getNameByBankCard").getlog()

    def get_getNameByBankCardURL(self, baseURL, URL, lang, timeStamp,
                                 access_token):
        '''
        :param baseURL:
        :param lang:
        :param timeStamp:
        :param clientVersionInfo:
        :return:根据卡号获取开户行
        '''
        reallyURL = baseURL + URL + "?lang=%s&timeStamp=%s&access_token=%s" % (
            lang, timeStamp, access_token)
        self.logger.info("url为:%s" % reallyURL)
        return reallyURL

    def send_request_getNameByBankCard(self, url, bankAccount):
        '''
        :param url:
        :param content:
        :return:
        '''
        headers = {"Content-Type": "application/json"}
        parameters = {"bankAccount": bankAccount}
        self.logger.info("请求的参数为:%s" % parameters)
        r = requests.post(url,
                          data=json.dumps(parameters),
                          headers=headers,
                          timeout=30)
        self.logger.info("返回的参数为:%s" % json.loads(r.text))
        return json.loads(r.text)
Esempio n. 16
0
class single:
    def __init__(self):
        self.logger = Logger(logger="single").getlog()

    def get_singleURL(self, baseurl,url, lang, timeStamp, clientVersionInfo,access_token):
        '''
        :param url:
        :param lang:
        :param timeStamp:
        :param clientVersionInfo:
        :return:
        '''
        singleURL = baseurl+ url + "?lang=%s&timeStamp=%s&clientVersionInfo=%s&access_token=%s" % (lang, timeStamp, clientVersionInfo,access_token)
        self.logger.info("url为:%s" %singleURL)
        return singleURL


    def send_request_single(self,url,targetid,filename,filepath):
        '''
        :param url:
        :param targetid:
        :param filename:
        :param filepath:
        :return:
        '''
        proportion = False
        files = {"file":(filename,open(filepath,"rb"),"multipart/form-data",{})}
        if targetid == "社区":
            data = {"targetid":"48d1cd1ef8d846d98897cf68f12dba01",
                "sizes":"240x360",
                "proportion":proportion}
        elif targetid == "头像":
            data = {"targetid":"329ad03f9c6c4db59caffbbe3b02e1e6",
                "sizes":"240x360",
                "proportion":proportion}
        elif targetid =="甲面":
            data = {"targetid":"6e9800a33d364c298a9e515ac3a2a9bc",
                "sizes":"240x360",
                "proportion":proportion}
        elif targetid == "DIY":
            data = {"targetid":"cb8b8835e5f84249958f01d1b2f47b07",
                "sizes":"240x360",
                "proportion":proportion}
        elif targetid == "系统":
            data = {"targetid":"4305685b17aa11e9b53f005056ad4128",
                "sizes":"240x360",
                "proportion":proportion}
        else:
            self.logger.error("targetid不存在,请检查配置!")
        self.logger.info("请求的参数为:%s" % data)
        r = requests.request("post",url,data = data,files=files,timeout=30)
        re = r.text
        josnre = json.loads(re)
        self.logger.info("返回的参数为:%s" % json.loads(r.text))
        pictureDict= {
                    "galleryName" :josnre["data"]["pictureName"],
                    "galleryThumbnailUrl" :josnre["data"]["thumbnailPictureUrl"],
                    "galleryUrl" :josnre["data"]["pictureUrl"]
                }
        return pictureDict
Esempio n. 17
0
class verify:
    def __init__(self):
        self.logger = Logger(logger="verify").getlog()

    def get_smsURL(self, baseURL, URL, lang, timeStamp, access_token):
        '''
        :param baseURL:
        :param lang:
        :param timeStamp:
        :param clientVersionInfo:
        :return:支付密码验证码验证
        '''
        reallyURL = baseURL + URL + "?lang=%s&timeStamp=%s&access_token=%s" % (
            lang, timeStamp, access_token)
        self.logger.info("url为:%s" % reallyURL)
        return reallyURL

    def send_request_sms(self, url, mobile, verifyCode):
        '''
        :param url:
        :param content:
        :return:
        '''
        headers = {"Content-Type": "application/json"}
        parameters = {"mobile": mobile, "verifyCode": verifyCode}
        self.logger.info("请求的参数为:%s" % parameters)
        r = requests.post(url,
                          data=json.dumps(parameters),
                          headers=headers,
                          timeout=30)
        self.logger.info("返回的参数为:%s" % json.loads(r.text))
        return json.loads(r.text)
Esempio n. 18
0
class queryCmsShopInfoBySN:
    def __init__(self):
        self.logger = Logger(logger="queryCmsShopInfoBySN").getlog()

    def get_queryCmsShopInfoListURL(self, baseURL, URL, lang, timeStamp,
                                    clientVersionInfo, access_token):
        '''
        :param baseURL:
        :param lang:
        :param timeStamp:
        :param clientVersionInfo:
        :param access_token:
        :return:查询当前用户店铺信息
        '''
        queryCmsShopInfoBySNURL = baseURL + URL + "?lang=%s&timeStamp=%s&clientVersionInfo=%s&access_token=%s" % (
            lang, timeStamp, clientVersionInfo, access_token)
        self.logger.info("url为:%s" % queryCmsShopInfoBySNURL)
        return queryCmsShopInfoBySNURL

    def send_request_queryCmsShopInfoBySN(self, url, sn):
        '''
        :param url:
        :param sn:
        :return:
        '''
        headers = {"Content-Type": "application/json"}
        parameters = {"sn": sn}
        self.logger.info("请求的参数为:%s" % parameters)
        r = requests.post(url,
                          data=json.dumps(parameters),
                          headers=headers,
                          timeout=30)
        self.logger.info("返回的参数为:%s" % json.loads(r.text))
        return json.loads(r.text)
Esempio n. 19
0
class heartbeat:
    def __init__(self):
        self.logger = Logger(logger="heartbeat").getlog()

    def get_heartbeatURL(self, baseURL, URL, lang, timeStamp,
                         clientVersionInfo):
        '''
        :param baseURL:
        :param lang:
        :param timeStamp:
        :param clientVersionInfo:
        :return:心跳接口
        '''
        heartbeatURL = baseURL + URL + "?lang=%s&timeStamp=%s&clientVersionInfo=%s" % (
            lang, timeStamp, clientVersionInfo)
        self.logger.info("url为:%s" % heartbeatURL)
        return heartbeatURL

    def send_request_heartbeat(self, url, sn, client_time):
        '''
        :param url:
        :param sn:
        :return:
        '''
        headers = {"Content-Type": "application/json"}
        parameters = {"sn": sn, "client_time": client_time}
        self.logger.info("请求的参数为:%s" % parameters)
        r = requests.post(url,
                          data=json.dumps(parameters),
                          headers=headers,
                          timeout=30)
        self.logger.info("返回的参数为:%s" % json.loads(r.text))
        return json.loads(r.text)
Esempio n. 20
0
class balance:
    def __init__(self):
        self.logger = Logger(logger="balance").getlog()

    def get_balanceURL(self, baseURL, URL, lang, timeStamp, clientVersionInfo,
                       access_token):
        '''
        :param baseURL:
        :param lang:
        :param timeStamp:
        :param clientVersionInfo:
        :return:打印下单-余额支付
        '''
        reallyURL = baseURL + URL + "?lang=%s&timeStamp=%s&clientVersionInfo=%s&access_token=%s" % (
            lang, timeStamp, clientVersionInfo, access_token)
        self.logger.info("url为:%s" % reallyURL)
        return reallyURL

    def send_request_balance(self, url, orderNum):
        '''
        :param url:
        :param content:
        :return:
        '''
        headers = {"Content-Type": "application/json"}
        parameters = {"orderNum": orderNum}
        self.logger.info("请求的参数为:%s" % parameters)
        r = requests.post(url,
                          data=json.dumps(parameters),
                          headers=headers,
                          timeout=30)
        self.logger.info("返回的参数为:%s" % json.loads(r.text))
        return json.loads(r.text)
Esempio n. 21
0
class addressQueryById:
    def __init__(self):
        self.logger = Logger(logger="addressQueryById").getlog()

    def get_addressQueryByIdURL(self, baseURL, URL, lang, timeStamp,
                                access_token):
        '''
        :param baseURL:
        :param lang:
        :param timeStamp:
        :param clientVersionInfo:
        :return:查看收货地址详情
        '''
        addressQueryByIdURL = baseURL + URL + "?lang=%s&timeStamp=%s&access_token=%s" % (
            lang, timeStamp, access_token)
        self.logger.info("url为:%s" % addressQueryByIdURL)
        return addressQueryByIdURL

    def send_request_addressQueryById(self, url, addressId):
        '''
        :param url:
        :param content:
        :return:
        '''
        headers = {"Content-Type": "application/json"}
        parameters = {"addressId": addressId}
        self.logger.info("请求的参数为:%s" % parameters)
        r = requests.post(url,
                          data=json.dumps(parameters),
                          headers=headers,
                          timeout=30)
        self.logger.info("返回的参数为:%s" % json.loads(r.text))
        return json.loads(r.text)
class addAlbumsComment:
    def __init__(self):
        self.logger = Logger(logger="addAlbumsComment").getlog()

    def get_addAlbumsCommentURL(self, baseURL, URL, lang, timeStamp,
                                clientVersionInfo, access_token):
        '''
        :param baseURL:
        :param lang:
        :param timeStamp:
        :param clientVersionInfo:
        :param access_token:
        :return:发表专辑评论
        '''
        ReallyURL = baseURL + URL + "?lang=%s&timeStamp=%s&clientVersionInfo=%s&access_token=%s" % (
            lang, timeStamp, clientVersionInfo, access_token)
        self.logger.info("url为:%s" % ReallyURL)
        return ReallyURL

    def send_request_addAlbumsComment(self, url, albumsId, content):
        '''
        :param url:
        :param albumsId:
        :param content:
        :return:
        '''
        headers = {"Content-Type": "application/json"}
        parameters = {"albumsId": albumsId, "content": content}
        self.logger.info("请求的参数为:%s" % parameters)
        r = requests.post(url,
                          data=json.dumps(parameters),
                          headers=headers,
                          timeout=30)
        self.logger.info("返回的参数为:%s" % json.loads(r.text))
        return json.loads(r.text)
Esempio n. 23
0
class coverBanner:
    def __init__(self):
        self.logger = Logger(logger="coverBanner").getlog()

    def get_coverBannerURL(self, baseURL, URL, lang, timeStamp,
                           clientVersionInfo, access_token):
        '''
        :param baseURL:
        :param lang:
        :param timeStamp:
        :param clientVersionInfo:
        :return:
        '''
        ReallyURL = baseURL + URL + "?access_token=%s&lang=%s&timeStamp=%s&clientVersionInfo=%s" % (
            access_token, lang, timeStamp, clientVersionInfo)
        self.logger.info("url为:%s" % ReallyURL)
        return ReallyURL

    def send_request_coverBanner(self, url, appType, bannerModel):
        '''
        获取banner列表
        :param url:
        :param appType:
        :param bannerModel:
        :return:
        '''
        headers = {"Content-Type": "application/json"}
        parameters = {"appType": appType, "bannerModel": bannerModel}
        self.logger.info("请求的参数为:%s" % parameters)
        r = requests.post(url,
                          data=json.dumps(parameters),
                          headers=headers,
                          timeout=30)
        self.logger.info("返回的参数为:%s" % json.loads(r.text))
        return json.loads(r.text)
Esempio n. 24
0
class AppealRevoke:
    def __init__(self):
        self.logger = Logger(logger="AppealRevoke").getlog()

    def get_AppealRevokeURL(self, baseURL, URL, lang, timeStamp, access_token):
        '''
        :param baseURL:
        :param lang:
        :param timeStamp:
        :param clientVersionInfo:
        :return:打印退款-撤销申诉
        '''
        reallyURL = baseURL + URL + "?lang=%s&timeStamp=%s&access_token=%s" % (
            lang, timeStamp, access_token)
        self.logger.info("url为:%s" % reallyURL)
        return reallyURL

    def send_request_AppealRevoke(self, url, refundNo):
        '''
        :param url:
        :param content:
        :return:
        '''
        headers = {"Content-Type": "application/json"}
        parameters = {"refundNo": refundNo}
        self.logger.info("请求的参数为:%s" % parameters)
        r = requests.post(url,
                          data=json.dumps(parameters),
                          headers=headers,
                          timeout=30)
        self.logger.info("返回的参数为:%s" % json.loads(r.text))
        return json.loads(r.text)
Esempio n. 25
0
class addTagInfo:

    def __init__(self):
        self.logger = Logger(logger="addTagInfo").getlog()
        self.base = baseUtils()

    def get_addTagInfoURL(self,env,access_token):
        '''
        :param baseURL:
        :param lang:
        :param timeStamp:
        :param clientVersionInfo:
        :return:
        '''
        URL = "/oc/tOcTagInfo/addTagInfo"

        if env == "dev":
            baseurl = "https://oc-api-dev.nailtutu.com"
        elif env == "uat":
            baseurl = "https://oc-api-uat.nailtutu.com"
        elif env == "prod":
            baseurl = "https://oc-api.nailtutu.com"
        else:
            self.logger.info("你输入的参数有误,请检查配置")

        ReallyURL = baseurl + URL + "?access_token=%s&lang=zh&timeStamp=%s" % (access_token,self.base.getTimeStamp())
        self.logger.info("url为:%s" %ReallyURL)
        return ReallyURL



    def send_request_addTagInfo(self,url,tagName,tagDescribe=None,sortNumber=None):
        '''
        添加标签
        :param url:
        :param tagName:
        :param tagDescribe:
        :param sortNumber:
        :return:
        '''
        headers = {"Content-Type": "application/json"}
        parameters = {
                "tagName":tagName,
                "tagDescribe":tagDescribe,
                "sortNumber":sortNumber
                }
        self.logger.info("请求的参数为:%s" %parameters)
        r = requests.post(url, data=json.dumps(parameters), headers=headers,timeout=30)
        self.logger.info("返回的参数为:%s" % json.loads(r.text))
        return json.loads(r.text)
class calibrationGetting:
    def __init__(self):
        self.logger = Logger(logger="calibrationGetting").getlog()

    def get_calibrationGettingURL(self, baseURL, URL, lang, timeStamp,
                                  clientVersionInfo):
        '''
        :param baseURL:
        :param lang:
        :param timeStamp:
        :param clientVersionInfo:
        :return:校准参数获取
        '''
        calibrationGettingURL = baseURL + URL + "?lang=%s&timeStamp=%s&clientVersionInfo=%s" % (
            lang, timeStamp, clientVersionInfo)
        self.logger.info("url为:%s" % calibrationGettingURL)
        return calibrationGettingURL

    def send_request_calibrationGetting(self, url, sn):
        '''
        :param url:
        :param sn:
        :return:
        '''
        headers = {"Content-Type": "application/json"}
        parameters = {"sn": sn}
        self.logger.info("请求的参数为:%s" % parameters)
        r = requests.post(url,
                          data=json.dumps(parameters),
                          headers=headers,
                          timeout=30)
        self.logger.info("返回的参数为:%s" % json.loads(r.text))
        return json.loads(r.text)
class addCmsUserQuestion:
    def __init__(self):
        self.logger = Logger(logger="addCmsUserQuestion").getlog()

    def get_addCmsShopInfoURL(self, baseURL, URL, lang, timeStamp,
                              clientVersionInfo, access_token):
        '''
        :param baseURL:
        :param lang:
        :param timeStamp:
        :param clientVersionInfo:
        :param access_token:
        :return:增加用户反馈
        '''
        addCmsUserQuestionURL = baseURL + URL + "?lang=%s&timeStamp=%s&clientVersionInfo=%s&access_token=%s" % (
            lang, timeStamp, clientVersionInfo, access_token)
        self.logger.info("url为:%s" % addCmsUserQuestionURL)
        return addCmsUserQuestionURL

    def send_request_addCmsUserQuestion(self, url, content):
        '''
        :param url:
        :param content:
        :return:
        '''
        headers = {"Content-Type": "application/json"}
        parameters = {"content": content}
        self.logger.info("请求的参数为:%s" % parameters)
        r = requests.post(url,
                          data=json.dumps(parameters),
                          headers=headers,
                          timeout=30)
        self.logger.info("返回的参数为:%s" % json.loads(r.text))
        return json.loads(r.text)
class listHasBindRefund:
    def __init__(self):
        self.logger = Logger(logger="listHasBindRefund").getlog()

    def get_listHasBindRefundURL(self, baseURL, URL, lang, timeStamp,
                                 access_token):
        '''
        :param baseURL:
        :param lang:
        :param timeStamp:
        :param clientVersionInfo:
        :return:获取用户已经绑定已退租的设备列表
        '''
        reallyURL = baseURL + URL + "?lang=%s&timeStamp=%s&access_token=%s" % (
            lang, timeStamp, access_token)
        self.logger.info("url为:%s" % reallyURL)
        return reallyURL

    def send_request_listHasBindRefund(self, url, currentPage, pageSize):
        '''
        :param url:
        :param content:
        :return:
        '''
        headers = {"Content-Type": "application/json"}
        parameters = {"currentPage": currentPage, "pageSize": pageSize}
        self.logger.info("请求的参数为:%s" % parameters)
        r = requests.post(url,
                          data=json.dumps(parameters),
                          headers=headers,
                          timeout=30)
        self.logger.info("返回的参数为:%s" % json.loads(r.text))
        return json.loads(r.text)
Esempio n. 29
0
class getdetails:
    def __init__(self):
        self.logger = Logger(logger="getdetails").getlog()

    def get_getdetailsURL(self, baseURL, URL, lang, timeStamp, access_token):
        '''
        :param baseURL:
        :param lang:
        :param timeStamp:
        :param clientVersionInfo:
        :return:查看租购订单详情
        '''
        getdetailsURL = baseURL + URL + "?lang=%s&timeStamp=%s&access_token=%s" % (
            lang, timeStamp, access_token)
        self.logger.info("url为:%s" % getdetailsURL)
        return getdetailsURL

    def send_request_getdetails(self, url, orderNo):
        '''
        :param url:
        :param content:
        :return:
        '''
        headers = {"Content-Type": "application/json"}
        parameters = {"orderNo": orderNo}
        self.logger.info("请求的参数为:%s" % parameters)
        r = requests.post(url,
                          data=json.dumps(parameters),
                          headers=headers,
                          timeout=30)
        self.logger.info("返回的参数为:%s" % json.loads(r.text))
        return json.loads(r.text)
Esempio n. 30
0
class deviceDetail:
    def __init__(self):
        self.logger = Logger(logger="deviceDetail").getlog()

    def get_deviceDetailURL(self, baseURL, URL, lang, timeStamp, access_token):
        '''
        :param baseURL:
        :param lang:
        :param timeStamp:
        :param clientVersionInfo:
        :return:设备列表
        '''
        reallyURL = baseURL + URL + "?lang=%s&timeStamp=%s&access_token=%s" % (
            lang, timeStamp, access_token)
        self.logger.info("url为:%s" % reallyURL)
        return reallyURL

    def send_request_deviceDetail(self, url, deviceId):
        '''
        :param url:
        :param content:
        :return:
        '''
        headers = {"Content-Type": "application/json"}
        parameters = {"deviceId": deviceId}
        self.logger.info("请求的参数为:%s" % parameters)
        r = requests.post(url,
                          data=json.dumps(parameters),
                          headers=headers,
                          timeout=30)
        self.logger.info("返回的参数为:%s" % json.loads(r.text))
        return json.loads(r.text)
Esempio n. 31
0
    def CreateIndex(*args):
        print("size"+str(len(args)))
        outdir = args[0]
        product = args[1]
        
        if product == "modeler":
            repos_set_uri = RAW_REPOS_SET_URI.format('modeler','modeler')
            index_key = RAW_INDEX_KEY.format('modeler')
        elif product == 'stats':
            # wrong spell of statistics
            repos_set_uri = RAW_REPOS_SET_URI.format('statisitcs','stats') 
            index_key = RAW_INDEX_KEY.format('stats')
        
        try:
            lic_path = os.path.join(outdir,LICENSE_DIR)   
            os.mkdir(lic_path)
            logger = Logger(os.path.join(lic_path,LOG_INFO))
            logger.info("Script start ...")
        except IOError as e:  
            raise IOError("IOError: Need permission to write in "+outdir)
            
        try:   
            try:     
                repos_set_json = json.loads(URILoader.loadURI(repos_set_uri, "index file"))
            except ValueError as e:
                raise Exception("ValueError: The {0} has an illegal format. Please check!\n\n".format("index file"))
            except Exception as e:
                raise e
            
            try:
                repos_set_json_index = repos_set_json[index_key]
            except Exception as e:
                raise e
            license_obj_list = []
            for repo in repos_set_json_index:
                try:
                    repo_name = repo["repository"]
                except Exception:
                    raise Exception("At least one repository in index file does not have repo name. Please check!\n\n")    
                
                repo_license_uri = RAW_LICENSE_URI.format(repo_name)
                
                try:     
                    repo_license_content = URILoader.loadURI(repo_license_uri, "license file")
                except Exception as e:
                    raise e
        
                isExistedLicense = False
                for item in license_obj_list:
                    if repo_license_content == item.getLicenseContent():
                        isExistedLicense = True
                        item.addRepoName(repo_name)
                        break   
                if not isExistedLicense:
                    addObj(repo_name, repo_license_content,license_obj_list)
            
            print("Start to read license...") 
            index_content = "{\n"+INDENT+"\"license_index\": [\n";
            
            for obj in license_obj_list:
                index_item_str = LicenseIndexItemStr.getItemStr(obj)
                index_content += index_item_str
                license_fp = open(os.path.join(lic_path,obj.getLicenseName()),'w')
                license_fp.write(obj.getLicenseContent())
                license_fp.close()

            index_content = index_content[0:-2]
            index_content += '\n' + INDENT + "]\n}"
            print("Start to write license to text...") 
            index_fp = open(os.path.join(lic_path,'license_index.json'),'w')
            index_fp.write(index_content)
        except Exception as e:
            logger.error(str(e))
def createLangIndex(*args):
    outdir = args[0]
    ext_path = args[1]

    index_key = RAW_INDEX_KEY
    langLogger = None
    try:
        lang_path = os.path.join(outdir,LANG_DIR) 
        os.mkdir(lang_path)
        root_log_dir = os.path.join(outdir, LOG_DIR_NAME)  
        langLogger = Logger(os.path.join(root_log_dir,LOG_INFO),'langLogger')
        langLogger.info("CreateLicenseIndex script start ...")    
        
        langLogger.info("Get extension index  ...")
        repos_set_json = loadExtJSONContent(ext_path)
        repos_set_json_index = repos_set_json[index_key]   
        
        for lang_item in LANG_LIST:
            fp_content = LANG_INDEX_PRE
            langLogger.info("Start to get '"+lang_item+"' file")
            i=0
            for repo in repos_set_json_index:
                try:
                    repo_name = repo["repository"]
                    i+=1
                except Exception:
                    raise Exception("At least one repository in index file does not have repo name. Please check!")    
                
                repo_lang_uri = RAW_REPO_LANG_URI.format(repo_name, lang_item)
 
                try:
                    repo_lang_content = URILoader.loadURI(repo_lang_uri, "language index file")
                    lang_json_str = LangPropObj.convertToJSONStr(repo_name, repo_lang_content, lang_item)
                except Exception as e:
                    if 'HTTPError' in str(e):
                        # some repositories do not have lang file, by default use en file in index for extension file
                        summary = ""
                        if 'Summary' in repo[EXT_KEY].keys():
                            summary = repo[EXT_KEY]['Summary']
                        desc = ""    
                        if 'Description' in repo[EXT_KEY].keys():
                            desc = repo[EXT_KEY]['Description']
                        lang_json_str = LangPropObj.generateJSONStr(repo_name,summary,desc)
                    else:
                        raise e

                fp_content += lang_json_str
                
            try:                
                fp_content = fp_content[0:-2]+'\n'+INDENT+']\n}'
                fp = open(os.path.join(lang_path, lang_item+'.json'), 'w', encoding='utf-8') 
                fp.write(fp_content)
                fp.close()
            except Exception as e:
                raise e
                
    except Exception as e:
        if langLogger!=None:
            langLogger.error(str(e),e)
            langLogger.info("CreatelangIndex action failed!")
        raise e
    finally:
        if langLogger!=None:
            langLogger.close()
def createLangIndex(*args):
    outdir = args[0]
    ext_path = args[1]

    # if product == "modeler":
    #    index_key = RAW_INDEX_KEY.format('modeler')
    # elif product == 'stats':
    #    index_key = RAW_INDEX_KEY.format('stats')
    index_key = RAW_INDEX_KEY
    langLogger = None
    try:
        lang_path = os.path.join(outdir, LANG_DIR)
        os.mkdir(lang_path)
        root_log_dir = os.path.join(outdir, LOG_DIR_NAME)
        langLogger = Logger(os.path.join(root_log_dir, LOG_INFO), "langLogger")
        langLogger.info("CreateLicenseIndex script start ...")

        langLogger.info("Get extension index  ...")
        repos_set_json = loadExtJSONContent(ext_path)
        repos_set_json_index = repos_set_json[index_key]

        for lang_item in LANG_LIST:
            fp_content = LANG_INDEX_PRE
            langLogger.info("Start to get '" + lang_item + "' file")
            i = 0
            for repo in repos_set_json_index:
                try:
                    repo_name = repo["repository"]
                    i += 1
                    langLogger.info(lang_item + ": " + str(i) + " repo " + repo_name)
                except Exception:
                    raise Exception("At least one repository in index file does not have repo name. Please check!")

                repo_lang_uri = RAW_REPO_LANG_URI.format(repo_name, lang_item)

                try:
                    repo_lang_content = URILoader.loadURI(repo_lang_uri, "language index file")
                    lang_json_str = LangPropObj.convertToJSONStr(repo_name, repo_lang_content, lang_item)
                except Exception as e:
                    if "HTTPError" in str(e):
                        # some repositories do not have lang file, by default use en file in index for extension file
                        lang_json_str = LangPropObj.generateJSONStr(
                            repo_name, repo[EXT_KEY]["Summary"], repo[EXT_KEY]["Description"]
                        )
                    else:
                        raise e

                fp_content += lang_json_str

            try:
                fp_content = fp_content[0:-2] + "\n" + INDENT + "]\n}"
                fp = open(os.path.join(lang_path, lang_item + ".json"), "w", encoding="utf-8")
                fp.write(fp_content)
                fp.close()
            except Exception as e:
                raise e

    except Exception as e:
        if langLogger != None:
            langLogger.error(str(e), e)
            langLogger.info("CreatelangIndex action failed!")
        raise e
    finally:
        if langLogger != None:
            langLogger.close()
def createExtensionIndex(*args):
    socket.setdefaulttimeout(TIMEOUT)
    indexdir = args[0]
    product = args[1]
    
    
    START_WORDS = "{\n\"extension_index\":[\n"    
    cur_time = time.strftime('%Y%m%d%H%M%S',time.localtime(time.time()))  
    root_spe_dir = os.path.join(indexdir,"spe"+cur_time) 
    root_log_dir = os.path.join(indexdir, LOG_DIR_NAME)   
       
    try:
        os.mkdir(root_spe_dir)
        extLogger = Logger(os.path.join(root_log_dir,LOG_INFO),'extLogger')
        extLogger.info("CreateExtensionIndex script start ...")
    except IOError as e:  
        raise IOError("IOError: Need permission to write in "+indexdir)
    
    index_for_extension = START_WORDS
    whole_product_name = getWholeProductName(product) 
    extLogger.info("start to get repo data from github ...")
    ext_output_path = os.path.join(indexdir, RAW_INDEX_FILE)
    
    i=0
    ok_repo_num = 0
    try:        
        githubApiInfo_obj = GithubApiInfoObj()
        for item in githubApiInfo_obj.item_list:
            i+=1
            
            index_for_extension_item = INDENT+"{\n"
            index_for_extension_item += generateJSONStr(item)
            
            repo_name = item[githubApiInfo_obj.__class__.REPOSITORY].val
            extLogger.info(str(i)+" repo: "+repo_name)

            try:
                info_json = InfoJSONObj(repo_name)
            except ValueError as e:
                raise e
            except Exception as e:
                extLogger.warning(str(e))
                continue
                
            index_for_extension_item += generateJSONStr(info_json.item_list)
            repo_software = info_json.item_list[info_json.__class__.SOFTWARE].val
            index_for_extension_item += INDENT*2 + "\"download_link\":" +"\"" + re.sub('repos_name', repo_name, SPE_DOWNLOAD_URL) +"\",\n"
            index_for_extension_item += INDENT*2 + "\"image_link\":" +"\"" + re.sub('repos_name', repo_name, IMG_DOWNLOAD_URL) +"\",\n"
            
            if repo_software != whole_product_name:
                extLogger.info("This is not a " + whole_product_name + " repo. Switch to next repo.")
                continue
            
            repo_spe_url = re.sub('repos_name', repo_name, SPE_DOWNLOAD_URL)
            spe_name = repo_name+".spe"
            
            spe_saving_path = os.path.join(root_spe_dir,repo_name)
            os.mkdir(spe_saving_path)
            
            try:
                urllib.request.urlretrieve(repo_spe_url, os.path.join(spe_saving_path,spe_name))
                srcZip = zipfile.ZipFile(os.path.join(spe_saving_path,spe_name), "r", zipfile.ZIP_DEFLATED)
            except:
                extLogger.warning("This repo '"+repo_name+" does not have spe package. Please check! Switch to next repo.")
                continue
            
            for file in srcZip.namelist():
                if not os.path.isdir(spe_saving_path):     
                    os.mkdir(spe_saving_path)
                if FILE_NAME in file:
                    srcZip.extract(file, spe_saving_path)
            srcZip.close()
            
            meta_path = os.path.join(spe_saving_path, META_DIR, FILE_NAME)
            metaObj = MetaObj(meta_path)
            index_for_extension_item += metaObj.generateExtensionJSON()
            index_for_extension_item += INDENT + "},\n" 
            index_for_extension += index_for_extension_item
            ok_repo_num += 1
            extLogger.info("Successfully get data!")

        index_for_extension = index_for_extension[0:-2]
        index_for_extension += '\n]\n}'
        index_for_extension_fp = open(ext_output_path,'w', encoding='utf-8')
        index_for_extension_fp.write(index_for_extension)  
        index_for_extension_fp.close()   
        extLogger.info("CreateIndexForDownloadExtensiosn action succeeded!") 
        extLogger.info("Extension index file has been saved in "+ext_output_path)
    except Exception as e:        
        extLogger.error(str(e), e)
        extLogger.info("CreateIndexForDownloadExtensiosn action failed!")
        raise e
    finally:
        extLogger.info("Totally get "+str(ok_repo_num)+" repo data.")
        clear(root_spe_dir)

    if not os.path.exists(ext_output_path):
        raise Exception("Fail to create extension index file! Please contact github administrator!")   
    
    return ext_output_path
            else:
                try:
                    os.system(r"C:\Windows\System32\attrib -r "+ savePath+"\*.* " + " /s /d")
                    shutil.rmtree(savePath, ignore_errors = True)
                except:
                    raise Exception("Cannot get administrator permission to delete "+savePath)
                
        # logPath = ../Package/log        
        logPath = os.path.join(savePath,LOG_DIR_NAME)
        os.mkdir(savePath)
        os.mkdir(logPath)
        
        mainLogger = Logger(os.path.join(logPath,LOG_NAME),'mainLogger')
        
        try:
            mainLogger.info("Main Script start ... ")
            
            # create index for extension
            mainLogger.info("'CreateExtensionIndex' start...")
            ext_path = createExtensionIndex(savePath, productName) 
            mainLogger.info("'CreateExtensionIndex' complete...")
            
            '''
            Description: create two threads -- one aimed at creating license index; the other aimed at creating lang index
            '''
            # create thread to get index for license
            mainLogger.info("'CreateLicenseIndex' thread start...")
            runCreateLicenseIndex = runScriptThread(createLicenseIndex, savePath, ext_path)
            runCreateLicenseIndex.setDaemon(True)
            runCreateLicenseIndex.start()
Esempio n. 36
0
    def createIndex(*args):
        indexdir = args[0]
        product = args[1]
        START_WORDS = '{\n"productname_extension_index":[\n'
        cur_time = time.strftime("%Y%m%d%H%M%S", time.localtime(time.time()))
        root_spe_dir = os.path.join(indexdir, "spe" + cur_time)
        try:
            os.mkdir(root_spe_dir)
            logger = Logger(os.path.join(indexdir, LOG_INFO))
            logger.info("Script start ...")
        except IOError as e:
            raise IOError("IOError: Need permission to write in " + indexdir)

        index_for_extension = re.sub("productname", product, START_WORDS)
        whole_product_name = getWholeProductName(product)
        print("start to get repo data from github ...")
        logger.info("start to get repo data from github ...")

        i = 0
        ok_repo_num = 0
        try:
            githubApiInfo_obj = GithubApiInfoObj()
            for item in githubApiInfo_obj.item_list:
                i += 1
                print(i)

                index_for_extension_item = INDENT + "{\n"
                index_for_extension_item += generateJSONStr(item)

                repo_name = item[githubApiInfo_obj.__class__.REPOSITORY].val
                logger.info(str(i) + "th repo: " + repo_name)
                print(repo_name)

                try:
                    info_json = InfoJSONObj(repo_name)
                except ValueError as e:
                    raise e
                except Exception as e:
                    print(str(e))
                    logger.warning(str(e))
                    continue

                index_for_extension_item += generateJSONStr(info_json.item_list)
                repo_software = info_json.item_list[info_json.__class__.SOFTWARE].val
                index_for_extension_item += (
                    INDENT * 2 + '"download_link":' + '"' + re.sub("repos_name", repo_name, SPE_DOWNLOAD_URL) + '",\n'
                )
                index_for_extension_item += (
                    INDENT * 2 + '"image_link":' + '"' + re.sub("repos_name", repo_name, IMG_DOWNLOAD_URL) + '",\n'
                )

                if repo_software != whole_product_name:
                    print("This is not a " + whole_product_name + " repo.\nSwitch to next repo.\n\n\n")
                    logger.info("This is not a " + whole_product_name + " repo.\nSwitch to next repo.")
                    continue

                repo_spe_url = re.sub("repos_name", repo_name, SPE_DOWNLOAD_URL)
                spe_name = repo_name + ".spe"

                spe_saving_path = os.path.join(root_spe_dir, repo_name)
                os.mkdir(spe_saving_path)

                try:
                    urllib.request.urlretrieve(repo_spe_url, os.path.join(spe_saving_path, spe_name))
                    srcZip = zipfile.ZipFile(os.path.join(spe_saving_path, spe_name), "r", zipfile.ZIP_DEFLATED)
                except:
                    print(
                        "This repo '"
                        + repo_name
                        + "' does not have spe package. Please check!"
                        + "\nSwitch to next repo.\n\n\n"
                    )
                    logger.warning(
                        "This repo '"
                        + repo_name
                        + "' does not have spe package. Please check!"
                        + "\nSwitch to next repo."
                    )
                    continue

                for file in srcZip.namelist():
                    if not os.path.isdir(spe_saving_path):
                        os.mkdir(spe_saving_path)
                    if FILE_NAME in file:
                        srcZip.extract(file, spe_saving_path)
                srcZip.close()

                meta_path = os.path.join(spe_saving_path, META_DIR, FILE_NAME)
                metaObj = MetaObj(meta_path)
                index_for_extension_item += metaObj.generateExtensionJSON()
                index_for_extension_item += INDENT + "},\n"
                index_for_extension += index_for_extension_item
                print("Successfully get data!\n\n")
                ok_repo_num += 1
                logger.info("Successfully get data!\n")

            index_for_extension = index_for_extension[0:-2]
            index_for_extension += "\n]\n}"
            index_for_extension_fp = open(os.path.join(indexdir, INDEX_FILE), "w")
            index_for_extension_fp.write(index_for_extension)
            index_for_extension_fp.close()

        except Exception as e:
            print(str(e))
            logger.error(str(e))
        finally:
            print("Totally get " + str(ok_repo_num) + " repo data successfully!\n\n")
            logger.info("Totally get " + str(ok_repo_num) + " repo data successfully!")
            clear(root_spe_dir)
def createLicenseIndex(*args):
    outdir = args[0]
    ext_path = args[1]        
    
    #if product.lower() == "modeler":
        #repos_set_uri = RAW_REPOS_SET_URI.format('modeler','modeler')
        #index_key = RAW_INDEX_KEY.format('modeler')
    #elif product.lower() == 'stats':
        # wrong spell of statistics
        #repos_set_uri = RAW_REPOS_SET_URI.format('statisitcs','stats') 
        #index_key = RAW_INDEX_KEY.format('stats')
    index_key = RAW_INDEX_KEY
    licenseLogger = None
    try:   
        license_obj_list = []        
        lic_path = os.path.join(outdir,LICENSE_DIR)   
        os.mkdir(lic_path)
        root_log_dir = os.path.join(outdir, LOG_DIR_NAME)  
        licenseLogger = Logger(os.path.join(root_log_dir,LOG_INFO),'licenseLogger')
        licenseLogger.info("CreateLicenseIndex script start ...")
        
        try:     
            licenseLogger.info("Get extension list  ...")
            repos_set_json = loadExtJSONContent(ext_path)
            repos_set_json_index = repos_set_json[index_key]
        except Exception as e:
            raise e
        
        repo_index = 0
        licenseLogger.info("Start to get license content ...")
        for repo in repos_set_json_index:
            try:
                repo_name = repo["repository"]
            except Exception:
                raise Exception("At least one repository in index file does not have repo name. Please check!")    
            
            repo_license_uri = RAW_LICENSE_URI.format(repo_name)
            
            try:     
                repo_license_content = URILoader.loadURI(repo_license_uri, "license file")
            except Exception as e:
                raise e
    
            isExistedLicense = False
            repo_index += 1
            for item in license_obj_list:
                if repo_license_content == item.getLicenseContent():
                    isExistedLicense = True
                    item.addRepoName(repo_name)
                    break   
            if not isExistedLicense:
                addObj(repo_name, repo_license_content,license_obj_list)
        
        lic_index = 0
        index_content = "{\n"+INDENT+"\"license_index\": [\n";           
        for obj in license_obj_list:
            index_item_str = LicenseIndexItemStr.getItemStr(obj)
            index_content += index_item_str
            lic_index += 1
            licenseLogger.info(str(lic_index)+" license: save in file '"+obj.getLicenseName()+"'.")
            licenseLogger.info("Repos use this license: "+LicenseIndexItemStr.convertListToString(obj.getRepoNameList()))
            
            license_fp = open(os.path.join(lic_path,obj.getLicenseName()),'w',encoding = "utf-8")
            license_fp.write(obj.getLicenseContent())
            license_fp.close()

        index_content = index_content[0:-2]
        index_content += '\n' + INDENT + "]\n}"
        index_fp = open(os.path.join(lic_path,LIC_INDEX_FILE),'w',encoding='utf-8')
        index_fp.write(index_content)
        licenseLogger.info("CreateLicenseIndex action succeeded!")
    except Exception as e:
        if licenseLogger!=None:
            licenseLogger.error(str(e),e)
            licenseLogger.info("CreateLicenseIndex action failed!")
        raise e
    finally:
        if licenseLogger!=None:
            licenseLogger.info("Totally get "+str(len(license_obj_list))+" type(s) of license from "+str(repo_index)+" repos!")
            licenseLogger.close()