def purge(self, purgeBatch, domainId=None): ''' 批量清除缓存 @param domainId: 如果指定了domainId,http body中的file-path和dir-path仅需要提供文件或者目录的uri,不能包括域名名称,路径均需以/开始,如/test/a.html 如果未指定domainId, 均需要提供包括域名在内的完整url地址,如http://www.baidu.com/test/a.html @type purgeBatch: PurgeBatch @param purgeBatch 为 PurgeBatch对象 包含files 和 dirs属性 @rtype: PurgeResult @return: 返回PurgeResult结果, 可以通过PurgeResult.getLocation 获得该次缓存 ''' if domainId is not None: url = self.HOST + "/api/purge/" + str(domainId) else: url = self.HOST + '/api/purge' try: if domainId is not None: post = purgeBatchForOneDomainToXml(purgeBatch) else: post = purgeBatchToXml(purgeBatch) ret = util.httpReqeust(url, post, self.makeHeaders(), "POST") if ret.status == 202 or ret.status == 200: return purgeXmlToSuccess(ret) else: return purgeXmlToFailure(ret) except Exception, e: traceback.print_exc(file=sys.stdout) return PurgeResult(-1, str(e))
def purge(self, purgeBatch, domainId = None): ''' 批量清除缓存 @param domainId: 如果指定了domainId,http body中的file-path和dir-path仅需要提供文件或者目录的uri,不能包括域名名称,路径均需以/开始,如/test/a.html 如果未指定domainId, 均需要提供包括域名在内的完整url地址,如http://www.baidu.com/test/a.html @type purgeBatch: PurgeBatch @param purgeBatch 为 PurgeBatch对象 包含files 和 dirs属性 @rtype: PurgeResult @return: 返回PurgeResult结果, 可以通过PurgeResult.getLocation 获得该次缓存 ''' if domainId is not None: url = self.HOST + "/api/purge/" + str(domainId) else: url = self.HOST + '/api/purge' try: if domainId is not None: post = purgeBatchForOneDomainToXml(purgeBatch) else: post = purgeBatchToXml(purgeBatch) ret = util.httpReqeust(url, post, self.makeHeaders(), "POST") if ret.status == 202 or ret.status == 200: return purgeXmlToSuccess(ret) else: return purgeXmlToFailure(ret) except Exception, e: traceback.print_exc(file = sys.stdout) return PurgeResult(-1, str(e))
def purgeQueryByPurgeId(self, purgeId): ''' 根据purgeId 查询 缓存记录 @param purgeId: 缓存id @rtype: PurgeQueryResult @return: 返回PurgeQueryResult结果,可以 通过PurgeQueryResult.getPurgeList()获取purge记录条目的列表 ''' url = self.HOST + "/api/purge/" + str(purgeId) try: ret = util.httpReqeust(url, "", self.makeHeaders(), "GET") if ret.status == 200: return purgeQueryByPurgeIdXmlToPurgeList(ret, purgeId) else: return purgeQueryByPurgeIdXmlToFailure(ret) except Exception, e: traceback.print_exc(file=sys.stdout) return PurgeQueryResult(-1, str(e))
def getRequest(self, requestId): ''' 对于客户每一次请求记录/任务,都会生成一个 cnc-request-id。客户可以通过该 id查询请求记录,如果是异步的任务(HTTP 响应状态码为 HTTP 202 Accepted 的任务),也可以通过该接口查询任务最终执行结果。 @param requestId: 请求的标识Id @rtype: GetRequestResult @return: 通过GetRequestResult.getRequestLog() 获得查询后的请求记录 ''' url = self.HOST + "/api/request/" + str(requestId) try: ret = util.httpReqeust(url, "", self.makeHeaders(), "GET") if ret.status == 200: return xmlToSuccessResult(ret) else: return XmlToFailure(ret) except Exception, e: traceback.print_exc(file=sys.stdout) return GetRequestProcessResult(-1, str(e))
def listAll(self): ''' 获取加速所有域名列表 @rtype: ProcessResult对象 @return: 通过ProcessResult.getDomainSummarys()获取DomainSummary对象的实例列表 ''' url = self.HOST + "/api/domain" try: post = '' ret = util.httpReqeust(url, post, self.makeHeaders(url), "GET") if ret.status == 200: return xmlToDomainList(ret) else: return xmlToFailure(ret) except Exception, e: traceback.print_exc(file=sys.stdout) return ProcessResult(-1, str(e))
def enable(self, domainId): ''' 启用加速域名 @param domainId : 指定启用的域名ID @rtype: ProcessResult对象 @return: 返回ProcessResult对象 ''' url = self.HOST + "/api/domain/" + str(domainId) try: post = '' ret = util.httpReqeust(url, post, self.makeHeaders(url), "ENABLE") if ret.status == 202: return xmlToSuccess(ret) else: return xmlToFailure(ret) except Exception, e: traceback.print_exc(file=sys.stdout) return ProcessResult(-1, str(e))
def add(self, domain): ''' 创建加速域名 @param domain: 新增加速域名构建的Domain对象实例 @rtype: ProcessResult对象 @return: 通过ProcessResult.getLocation()新域名的url ''' url = self.HOST + "/api/domain" try: post = domainToXml(domain) #print post ret = util.httpReqeust(url, post, self.makeHeaders(url), "POST") if ret.status == 202: return xmlToSuccess(ret) else: return xmlToFailure(ret) except Exception, e: traceback.print_exc(file=sys.stdout) return ProcessResult(-1, str(e))
def getLog(self, reportForm, domainId): ''' 获取某域名的日志下载链接 @type reportForm: ReportForm @param reportForm: 请求的起止时间 @rtype: LogProcessResult @return: 通过LogProcessResult.getLogs() 获得查询后的Log对象实例列表 ''' url = self.HOST + "/api/report/" + str(domainId) + "/log" try: url = appendParams(url, reportForm) ret = util.httpReqeust(url, "", self.makeHeaders(), "GET") if ret.status == 200: return xmlToLogList(ret) else: return getLogXmlToFailure(ret) except Exception, e: traceback.print_exc(file=sys.stdout) return LogProcessResult(-1, str(e))
def find(self, domainId): ''' 获取加速域名配置 @type domainId: str @param domainId : 指定查找的域名ID @rtype: ProcessResult对象 @return: 通过ProcessResult.getDomain()返回指定的域名信息的Domain实例 ''' url = self.HOST + "/api/domain/" + str(domainId) try: post = '' ret = util.httpReqeust(url, post, self.makeHeaders(url), "GET") if ret.status == 200: return xmlToDomain(ret) else: return xmlToFailure(ret) except Exception, e: traceback.print_exc(file=sys.stdout) return ProcessResult(-1, str(e))
def purgeQuery(self, dateFrom, dateTo, queryUrl=None): ''' 查询缓存记录 @param queryUrl 查询的url 可为空,若为空,返回该用户所有url的缓存记录 @param dateFrom 查询时间起始 eg:'2013-10-01 01:00:00' @param dateTo 查询时间起始 eg:'2013-10-07 01:00:00' @rtype: PurgeQueryResult @return: 返回PurgeQueryResult结果,可以 通过PurgeQueryResult.getPurgeList()获取purge记录条目的列表 ''' url = self.HOST + "/api/purge" try: url = appendParams(url, queryUrl, dateFrom, dateTo) ret = util.httpReqeust(url, "", self.makeHeaders(), "GET") if ret.status == 200: return purgeQueryXmlToPurgeList(ret) else: return purgeQueryXmlToFailure(ret) except Exception, e: traceback.print_exc(file=sys.stdout) return PurgeQueryResult(-1, str(e))
def purgeQuery(self, dateFrom, dateTo, queryUrl = None): ''' 查询缓存记录 @param queryUrl 查询的url 可为空,若为空,返回该用户所有url的缓存记录 @param dateFrom 查询时间起始 eg:'2013-10-01 01:00:00' @param dateTo 查询时间起始 eg:'2013-10-07 01:00:00' @rtype: PurgeQueryResult @return: 返回PurgeQueryResult结果,可以 通过PurgeQueryResult.getPurgeList()获取purge记录条目的列表 ''' url = self.HOST + "/api/purge" try: url = appendParams(url, queryUrl, dateFrom, dateTo) ret = util.httpReqeust(url, "", self.makeHeaders(), "GET") if ret.status == 200: return purgeQueryXmlToPurgeList(ret) else: return purgeQueryXmlToFailure(ret) except Exception, e: traceback.print_exc(file=sys.stdout) return PurgeQueryResult(-1, str(e))
def getHitReport(self, reportForm, domainId = None): ''' 获取某域名请求数报表 如果domainId 为None,表示 查汇总信息 @type reportForm: ReportForm @param reportForm: 请求的时间和报表粒度 @rtype: HitProcessResult @return: 通过HitProcessResult.getHitPoints() 获得返回的结果 ''' if domainId == None: url = self.HOST + "/api/report/hit" else: url = self.HOST + "/api/report/" + str(domainId) + "/hit" try: url = appendParams(url, reportForm) ret = util.httpReqeust(url, "", self.makeHeaders(), "GET") if ret.status == 200: return xmlToHitPointList(ret, reportForm.getReportType()) else: return getHitReportXmlToDefaultFailure(ret) except Exception, e: traceback.print_exc(file=sys.stdout) return HitProcessResult(-1, str(e))
def modify(self, domain): ''' 修改加速域名配置 @type domain: Domain @param domain : 构建需要修改的域名的Domain实例, domain中必须设置domanId字段 @rtype: ProcessResult对象 @return: 返回ProcessResult对象 ''' if domain.domainId is None: raise '请设置domainId字段' url = self.HOST + "/api/domain/" + str(domain.domainId) try: post = domainToXml(domain) #print post ret = util.httpReqeust(url, post, self.makeHeaders(url), "PUT") if ret.status == 202: return xmlToSuccess(ret) else: return xmlToFailure(ret) except Exception, e: traceback.print_exc(file=sys.stdout) return ProcessResult(-1, str(e))
def getHitReport(self, reportForm, domainId=None): ''' 获取某域名请求数报表 如果domainId 为None,表示 查汇总信息 @type reportForm: ReportForm @param reportForm: 请求的时间和报表粒度 @rtype: HitProcessResult @return: 通过HitProcessResult.getHitPoints() 获得返回的结果 ''' hitreport = [] if domainId == None: url = self.HOST + "/api/report/hit" else: url = self.HOST + "/api/report/" + str(domainId) + "/hit" try: query_date_period = PeriodCheck(reportForm).date_clean() for i in query_date_period: qurl = appendParams(url, i) ret = util.httpReqeust(qurl, "", self.makeHeaders(), "GET") if ret.status == 200: data = xmlToHitPointList(ret, reportForm.getReportType()) hitreport.append(data) return hitreport except Exception: traceback.print_exc(file=sys.stdout) return []
def getHitReport(self, reportForm, domainId = None): ''' 获取某域名请求数报表 如果domainId 为None,表示 查汇总信息 @type reportForm: ReportForm @param reportForm: 请求的时间和报表粒度 @rtype: HitProcessResult @return: 通过HitProcessResult.getHitPoints() 获得返回的结果 ''' hitreport = [] if domainId == None: url = self.HOST + "/api/report/hit" else: url = self.HOST + "/api/report/" + str(domainId) + "/hit" try: query_date_period = PeriodCheck(reportForm).date_clean() for i in query_date_period: qurl = appendParams(url, i) ret = util.httpReqeust(qurl, "", self.makeHeaders(), "GET") if ret.status == 200: data = xmlToHitPointList(ret, reportForm.getReportType()) hitreport.append(data) return hitreport except Exception: traceback.print_exc(file=sys.stdout) return []