public E_ERROR_CODE downloadIOSData(DateTime startDate, DateTime endDate) { E_ERROR_CODE errorCode = E_ERROR_CODE.ERROR; string message = string.Empty; string queryDataUrl = string.Empty; string dataFile = string.Empty; string iosDataStorePath = _AppsFlyerDataSpiderConfig.getIOSDataStorePath(); string[] iosApplicationIds = _AppsFlyerDataSpiderConfig.getIOSApplicationIds(); if (iosDataStorePath == null) { _SystemLog.writeLog2Console(LOG_LEVEL.ERR, "Get android data file store path failed."); return(E_ERROR_CODE.ERROR_GET_ANDROID_DATA_FILE_STORE_PATH_FAILED); } foreach (string androidApplicationId in iosApplicationIds) { queryDataUrl = _AppsFlyerDataSpiderConfig.getQueryDataUrl(startDate, endDate, androidApplicationId); dataFile = string.Format("{0}/{1}_{2}.dat", iosDataStorePath, CPublic.getDateString(startDate), CPublic.getDateString(endDate)); message = string.Format("Query data url <{0}>, dataFile <{1}>.", queryDataUrl, dataFile); _SystemLog.writeLog2Console(LOG_LEVEL.DEBUG, message); errorCode = downloadData(queryDataUrl, _WebDriver, dataFile); if (errorCode != E_ERROR_CODE.OK) { message = string.Format("ios application <{0}> download data failed, error code <{1}>.", androidApplicationId, errorCode); _SystemLog.writeLog2Console(LOG_LEVEL.ERR, message); } } return(E_ERROR_CODE.OK); }
internal string getQueryDataUrl(DateTime startDate, DateTime endDate, string applicationId) { string androidDataQueryUrlTemplete = string.Format("{0}", _AppsflyerConfig.getConfigItem(CONFIG_ITEM_QUERY_DATA_URL)); string startDateString = CPublic.getDateString(startDate); string endDateString = CPublic.getDateString(endDate); string grouping = getGrouping(); string filter = getFilter(); string installAmount = string.Format("{0}", getInstallAmount()); return(androidDataQueryUrlTemplete.Replace(PARAMETER_START_DATE, startDateString) .Replace(PARAMETER_END_DATE, endDateString) .Replace(PARAMETER_APPLICATION_ID, applicationId) .Replace(CONFIG_ITEM_PARAMETER_GROUPING, grouping) .Replace(CONFIG_ITEM_PARAMETER_FILTER, filter) .Replace(CONFIG_ITEM_PARAMETER_INSTALL_AMOUNT, installAmount)); }
static int Main(string[] args) { E_ERROR_CODE errorCode = E_ERROR_CODE.ERROR; _SystemLog = new CSystemLog(true, LOG_LEVEL.DEBUG, string.Format("{0}/{1}", CPublic.getAppStartPath(), "system_log")); _SystemConfig = new CSystemConfig(CPublic.SYSTEM_CONFIG_FILE, _SystemLog); errorCode = _SystemConfig.initConfig(); if (errorCode != E_ERROR_CODE.OK) { _SystemLog.writeLog2Console(LOG_LEVEL.CRIT, string.Format("Init system config <{0}> failed, error code <{1}>.", CPublic.SYSTEM_CONFIG_FILE, errorCode)); return((int)errorCode); } _SystemConfig.printSystemConfig(); _AppsflyerConfigFilePath = string.Format("{0}", _SystemConfig.getConfigItem(CONFIG_ITEM_APPSFLYER_CONFIG_FILE)).Trim(); if (!File.Exists(_AppsflyerConfigFilePath)) { _SystemLog.writeLog2Console(LOG_LEVEL.CRIT, string.Format("Appsflyer config file <{0}> not exits.", _AppsflyerConfigFilePath)); return((int)E_ERROR_CODE.ERROR_FILE_NOT_EXIST); } CAppsFlyerDataSpider appsFlyerDataSpider = new CAppsFlyerDataSpider(_AppsflyerConfigFilePath, _SystemLog); errorCode = appsFlyerDataSpider.initAppsFlyerSpiderConfig(); if (errorCode != E_ERROR_CODE.OK) { appsFlyerDataSpider.cleanUp(); _SystemLog.writeLog2Console(LOG_LEVEL.CRIT, string.Format("Init appsflyer spider config failed, error code <{0}>.", errorCode)); return((int)errorCode); } errorCode = appsFlyerDataSpider.initWebDriver(); if (errorCode != E_ERROR_CODE.OK) { appsFlyerDataSpider.cleanUp(); _SystemLog.writeLog2Console(LOG_LEVEL.CRIT, string.Format("Init webdriver failed, error code <{0}>.", errorCode)); return((int)errorCode); } int retentionPeriod = appsFlyerDataSpider.AppsFlyerDataSpiderConfig.getRetentionPeriod(); int appsflyerDelayDay = appsFlyerDataSpider.AppsFlyerDataSpiderConfig.getAppsflyerDelayDay(); int queryCycle = appsFlyerDataSpider.AppsFlyerDataSpiderConfig.getDownloadDataCycle(); while (true) { _CurrentTime = DateTime.Now; _LastTime = _CurrentTime; errorCode = appsFlyerDataSpider.loginSystem(); if ((errorCode != E_ERROR_CODE.OK) || (!appsFlyerDataSpider.IsLoginSuccessed)) { _SystemLog.writeLog2Console(LOG_LEVEL.ERR, string.Format("Login appsflyer system failed, after <{0}> login again.", 60)); Thread.Sleep(TimeSpan.FromSeconds(30)); } /* 每8小时取一个留存数据 */ if (_CurrentTime.Subtract(_LastTime).Hours >= queryCycle) { DateTime endDate = _CurrentTime.Date.Subtract(TimeSpan.FromDays(appsflyerDelayDay)); DateTime startDate = endDate.Subtract(TimeSpan.FromDays((retentionPeriod - 1))); errorCode = appsFlyerDataSpider.downloadAndroidData(startDate, endDate); if (errorCode != E_ERROR_CODE.OK) { _SystemLog.writeLog2Console(LOG_LEVEL.ERR, string.Format("Download android data <{0},{1}> failed .", CPublic.getDateString(startDate), CPublic.getDateString(endDate))); } errorCode = appsFlyerDataSpider.downloadIOSData(startDate, endDate); if (errorCode != E_ERROR_CODE.OK) { _SystemLog.writeLog2Console(LOG_LEVEL.ERR, string.Format("Download ios data <{0},{1}> failed .", CPublic.getDateString(startDate), CPublic.getDateString(endDate))); } } /* AppsFlyer汇总绩效报告 Performance report */ if (_CurrentTime.Hour != _LastTime.Hour) { errorCode = appsFlyerDataSpider.downloadAndroidPerformanceReportData(_CurrentTime); if (errorCode != E_ERROR_CODE.OK) { _SystemLog.writeLog2Console(LOG_LEVEL.ERR, string.Format("Download android performance report data <{0}> failed .", CPublic.getDateString(_CurrentTime))); } errorCode = appsFlyerDataSpider.downloadIOSPerformanceReportData(_CurrentTime); if (errorCode != E_ERROR_CODE.OK) { _SystemLog.writeLog2Console(LOG_LEVEL.ERR, string.Format("Download ios performance report data <{0}> failed .", CPublic.getDateString(_CurrentTime))); } } _LastTime = _CurrentTime; _SystemLog.writeLog2Console(LOG_LEVEL.INFO, string.Format("Query cycle <{0}>, Current time <{1}>, Next download data at <{2}> .", queryCycle, CPublic.getDateTimeString(_CurrentTime), CPublic.getDateTimeString(_CurrentTime.AddSeconds(queryCycle)))); Thread.Sleep(TimeSpan.FromSeconds(30 * 60)); } }
private E_ERROR_CODE loginAppsflyerSystem(string userName, string password) { string message = string.Empty; string elementUserName = _AppsFlyerDataSpiderConfig.getElementUserName(); string elementPassword = _AppsFlyerDataSpiderConfig.getElementPassword(); QA.IWebElement searchNameElement = null; QA.IWebElement searchPasswordElement = null; QA.IWebElement submitButtonElement = null; QA.IWebElement searchSubmitDivContainerElement = null; if ((elementUserName == null) || (elementPassword == null)) { message = string.Format("Not conmfig element user name <{0}> or password <{1}>.", elementUserName, elementPassword); _SystemLog.writeLog2Console(LOG_LEVEL.ERR, message); return(E_ERROR_CODE.ERROR_NOT_CONFIG_ELEMENT_USER_NAME_OR_PASSWORD); } searchNameElement = FindElementByName(elementUserName); if (searchNameElement == null) { message = string.Format("Not found element <{0}>.", elementUserName); _SystemLog.writeLog2Console(LOG_LEVEL.ERR, message); return(E_ERROR_CODE.ERROR_NOT_FOUND_ELEMENT_USER_NAME); } searchPasswordElement = FindElementByName(elementPassword); if (searchPasswordElement == null) { message = string.Format("Not found element <{0}>.", elementPassword); _SystemLog.writeLog2Console(LOG_LEVEL.ERR, message); return(E_ERROR_CODE.ERROR_NOT_FOUND_ELEMENT_PASSWORD); } SendKeysToElement(searchNameElement, userName); SendKeysToElement(searchPasswordElement, password); //*[@id="login-form"]/div[6]/button searchSubmitDivContainerElement = FindElementByClassName("form-buttons"); if (searchSubmitDivContainerElement == null) { message = "Not found element submit button container div."; _SystemLog.writeLog2Console(LOG_LEVEL.ERR, message); return(E_ERROR_CODE.ERROR_NOT_FOUND_FORM_BUTTONS_CONTAINER_ELEMENT); } submitButtonElement = searchSubmitDivContainerElement.FindElement(QA.By.TagName("button")); if (submitButtonElement == null) { message = "Not found element submit button."; _SystemLog.writeLog2Console(LOG_LEVEL.ERR, message); return(E_ERROR_CODE.ERROR_NOT_FOUND_ELEMENT_SUBMIT_BUTTON); } try { _WebDriver.Manage().Timeouts().SetScriptTimeout(TimeSpan.FromSeconds(20)); _WebDriver.Manage().Timeouts().SetPageLoadTimeout(TimeSpan.FromSeconds(20)); submitButtonElement.Submit(); } catch (Exception ex) { message = string.Format("Submit search form faild, error message<{0}>,UA<{1}>.", ex.Message, _UserAgent); _SystemLog.writeLog2Console(LOG_LEVEL.ERR, message); return(E_ERROR_CODE.ERROR_LOGIN_FAILED); } if (!checkLoginSuccess(userName)) { TakeScreenshot(string.Format("login_failed_{0}.png", CPublic.getDateString(DateTime.Now))); message = string.Format("Login failed,task<{0}>,keywords<{1}>.", userName, password); _SystemLog.writeLog2Console(LOG_LEVEL.ERR, message); return(E_ERROR_CODE.ERROR_LOGIN_FAILED); } _IsLoginSuccessed = true; return(E_ERROR_CODE.OK); }