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()
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
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
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)
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()
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()
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)
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()
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()
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)
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)
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)
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)
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)
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
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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()
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()