public async Task OnExecute() { var adsClient = new TcAdsClient { Synchronize = false }; var handle = GetConsoleWindow(); ShowWindow(handle, SW_HIDE); CreateLogger(); var logger = LoggerFactory.GetLogger(); try { logger.Debug("Starting Json Read Writer"); logger.Debug($"Connecting to Beckhoff Port: {AdsPort} - AdsNet: '{AdsNetId}'"); adsClient.Connect(AdsNetId, AdsPort); logger.Debug($"Method: {Method}"); logger.Debug($"File: {FilePath}"); logger.Debug($"Field: {Field}"); logger.Debug($"Executing..."); if (Method == FileOperationMethod.Write) { var content = File.ReadAllText(FilePath); logger.Debug($"Writing json into {Field}..."); var objectResponse = JObject.Parse(content); await adsClient.WriteJson(Field, objectResponse); } else if (Method == FileOperationMethod.Read) { var json = await adsClient.ReadJson(Field); File.WriteAllText(FilePath, json.ToString()); } else { logger.Warn("Invalid Method"); } adsClient.Disconnect(); } catch (Exception e) { logger.Error($"Error while calling Json Parser: {e}", e); logger.Error($"{e.StackTrace}"); } finally { adsClient?.Dispose(); } }
public async Task OnExecute() { var adsClient = new TcAdsClient { Synchronize = false }; var handle = GetConsoleWindow(); ShowWindow(handle, SW_HIDE); CreateLogger(); var logger = LoggerFactory.GetLogger(); var header = GetOrCreateHeader(); try { logger.Debug("Starting API Call"); logger.Debug($"Connecting to Beckhoff Port: {AdsPort} - AdsNet: '{AdsNetId}'"); adsClient.Connect(AdsNetId, AdsPort); var callAddress = Address.IsValidUrl() ? Address : await adsClient.ReadAsync <string>(Address); logger.Debug($"Url: {callAddress}"); logger.Debug($"Method: {Method}"); var restClient = new RestClient(); var request = new RestRequest(callAddress, Method); foreach (var item in header) { logger.Debug($"Adding header: \"{item.Key}\" : \"{item.Value}\""); request.AddHeader(item.Key, item.Value); } var jsonBody = !string.IsNullOrEmpty(Body) ? await adsClient.ReadJson(Body) : new JObject(); request.RequestFormat = DataFormat.Json; request.AddParameter("text/json", jsonBody.ToString(), ParameterType.RequestBody); logger.Debug($"Body: {jsonBody}"); logger.Debug($"Executing..."); var response = await restClient.ExecuteTaskAsync(request); logger.Debug($"Response code: {response.StatusCode}"); logger.Debug($"Response content: {response.Content}"); if (!string.IsNullOrEmpty(ResponseCode)) { logger.Debug($"Wrinting status code into {ResponseCode}..."); await adsClient.WriteAsync(ResponseCode, response.StatusCode); } //Try parsing object or array from response content logger.Debug($"Wrinting json response into {Response}..."); try { var objectResponse = JObject.Parse(response.Content); await adsClient.WriteJson(Response, objectResponse); } catch (JsonReaderException exception) { logger.Error("Unable to write response content parsing a json object", exception); try { var arrayResponse = JArray.Parse(response.Content); await adsClient.WriteJson(Response, arrayResponse); } catch (JsonReaderException innerException) { logger.Error("Unable to write response content parsing a json array", innerException); } } adsClient.Disconnect(); } catch (Exception e) { logger.Error($"Error while calling API: {e}"); logger.Error($"{e.StackTrace}"); } finally { adsClient?.Dispose(); } }