static private async Task <RenRenBatchRunResponseArg> agentBatchRunReponseHandler(ICollection <RequestParameterEntity> args, string method, Uri target, ICollection <BatchRunBinder> binders) { ErrorEntity error = null; string response = string.Empty; RenRenBatchRunResponseArg result = null; try { var agent = new HttpWebRequestAgent(); agent.Method = method; foreach (var parameter in args) { agent.AddParameters(parameter.Name, Uri.EscapeDataString(parameter.Values)); } //string response = string.Empty; if (null != target) { response = await agent.DownloadString(target); } else { response = await agent.DownloadString(ConstantValue.SpecificRequestUri); } Debug.WriteLine(response); error = (ErrorEntity)JsonUtility.DeserializeObj(new MemoryStream(Encoding.UTF8.GetBytes(response)), typeof(ErrorEntity)); if (error != null && error.Error_msg != null) { // Try to translate the error mesg if (RemoteErrorMsgTranslator.Instance.Ready) { if (RemoteErrorMsgTranslator.Instance.ErrorTable.ContainsKey(error.Error_code)) { var errorEntity = RemoteErrorMsgTranslator.Instance.ErrorTable[error.Error_code]; error.Error_msg = errorEntity.Mesg; error.Error_Type = errorEntity.Type; } } result = new RenRenBatchRunResponseArg(error); } else { result = new RenRenBatchRunResponseArg(response, binders); } } catch (Exception ex) { result = new RenRenBatchRunResponseArg(ex); } return(result); }
private static void Main(string[] args) { var inputFilePath = GetInputFilePath(); var outputDirectory = GetOutputDirectory(); var verboseEnabled = GetVerboseLoggingEnabled(); var verboseLogger = new VerboseLogger(verboseEnabled, Console.WriteLine); var configProvider = new AppConfigProvider(); var httpWebRequestAgent = new HttpWebRequestAgent(verboseLogger); var extractor = new ExtractionManager(new ExtractionRequest { InputFilePath = inputFilePath, OutputDirectory = outputDirectory, VerboseLogger = verboseLogger }, configProvider, httpWebRequestAgent, verboseLogger); var response = extractor.RunExtraction(); if (!string.IsNullOrEmpty(response.GeneralException)) { Console.WriteLine($"Process failed. Error: {response.GeneralException}."); Console.ReadKey(); return; } if (response.HasExtractionException) { foreach (var extrctException in response.ExtractionExceptions) { Console.WriteLine( $"Extraction did not complete for url: {extrctException.InputUrl}. " + $"Error: {extrctException}"); } Console.ReadKey(); } Console.WriteLine($"Process complete. {response.SuccessfulExtractions} website(s) successfully processed."); Console.ReadKey(); }
static private async Task <ArgType> agentReponseHandler <EntityType, ArgType>(ICollection <RequestParameterEntity> args, string method, Uri target = null) { EntityType entity = default(EntityType); ErrorEntity error = null; ArgType result = default(ArgType); string response = string.Empty; try { var agent = new HttpWebRequestAgent(); agent.Method = method; foreach (var parameter in args) { agent.AddParameters(parameter.Name, Uri.EscapeDataString(parameter.Values)); } //string response = string.Empty; if (null != target) { response = await agent.DownloadString(target); } else { response = await agent.DownloadString(ConstantValue.RequestUri); } Debug.WriteLine(response); entity = (EntityType)JsonUtility.DeserializeObj(new MemoryStream(Encoding.UTF8.GetBytes(response)), typeof(EntityType)); //entity = (EntityType)JsonUtility.DeserializeObj(new MemoryStream(Encoding.Unicode.GetBytes(response)),typeof(EntityType)); error = (ErrorEntity)JsonUtility.DeserializeObj(new MemoryStream(Encoding.UTF8.GetBytes(response)), typeof(ErrorEntity)); if (error != null && error.Error_msg != null) { // Try to translate the error mesg if (RemoteErrorMsgTranslator.Instance.Ready) { if (RemoteErrorMsgTranslator.Instance.ErrorTable.ContainsKey(error.Error_code)) { var errorEntity = RemoteErrorMsgTranslator.Instance.ErrorTable[error.Error_code]; error.Error_msg = errorEntity.Mesg; error.Error_Type = errorEntity.Type; } } result = (ArgType)Activator.CreateInstance(typeof(ArgType), error); } else if (entity != null) { result = (ArgType)Activator.CreateInstance(typeof(ArgType), entity); } else { result = (ArgType)Activator.CreateInstance(typeof(ArgType), new ArgumentException()); } } catch (Exception ex) { errorMsg = ex.Message; if (errorMsg.Contains("Encountered invalid character")) { bool ifBreak = false; while (!ifBreak) { var f = errorMsg.IndexOf("'") + 1; var l = errorMsg.LastIndexOf("'"); var m = errorMsg.Substring(f, l - f); int ret = DecoderJson(response.Replace(Convert.ToChar(m), '?'), typeof(EntityType)); if (ret < 0) { result = (ArgType)Activator.CreateInstance(typeof(ArgType), ex); ifBreak = true; } else if (ret > 0) { entity = (EntityType)JsonUtility.DeserializeObj(new MemoryStream(Encoding.UTF8.GetBytes(response.Replace(Convert.ToChar(m), '?'))), typeof(EntityType)); result = (ArgType)Activator.CreateInstance(typeof(ArgType), entity); ifBreak = true; } } } else { result = (ArgType)Activator.CreateInstance(typeof(ArgType), ex); } } return(result); }