Dual write PDSF for Metrology Viewer Version Error Message Tests passed net8.0 v2_52_0-Tests v2_52_0-Tests editorconfig editorconfig yml ec fix yaml explicit contents Delete File if Exists dotnet_diagnostic Removed Open Insight API IFX Directory Removed Open Insight API IFX Directory from Save CA1862 and GetWeekOfYear for WritePDSF gitignore cellInstanceVersion.EdaConnection.PortNumber Added Climatec to Test.cs NETFRAMEWORK GetJobIdDirectory Remove and
111 lines
4.7 KiB
C#
111 lines
4.7 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Net.Http;
|
|
using System.Text;
|
|
using System.Text.Json;
|
|
|
|
namespace Adaptation.Shared.Metrology;
|
|
|
|
public partial class WS
|
|
{
|
|
|
|
public static (string, Results) SendData(string url, long sequence, string directory, object payload, int timeoutSeconds = 120)
|
|
{
|
|
Results results = new();
|
|
string resultsJson = string.Empty;
|
|
try
|
|
{
|
|
string json = JsonSerializer.Serialize(payload, payload.GetType());
|
|
if (string.IsNullOrEmpty(url) || !url.Contains(":") || !url.Contains("."))
|
|
throw new Exception("Invalid URL");
|
|
using (HttpClient httpClient = new())
|
|
{
|
|
httpClient.Timeout = new TimeSpan(0, 0, 0, timeoutSeconds, 0);
|
|
HttpRequestMessage httpRequestMessage = new()
|
|
{
|
|
RequestUri = new Uri(url),
|
|
Method = HttpMethod.Post,
|
|
Content = new StringContent(json, Encoding.UTF8, "application/json")
|
|
};
|
|
HttpResponseMessage httpResponseMessage = httpClient.SendAsync(httpRequestMessage, HttpCompletionOption.ResponseContentRead).Result;
|
|
resultsJson = httpResponseMessage.Content.ReadAsStringAsync().Result;
|
|
results = JsonSerializer.Deserialize<Results>(resultsJson, new JsonSerializerOptions { PropertyNameCaseInsensitive = true });
|
|
string checkDirectory = Path.Combine(directory, $"-{results.HeaderID}");
|
|
if (!Directory.Exists(checkDirectory))
|
|
_ = Directory.CreateDirectory(checkDirectory);
|
|
File.WriteAllText(Path.Combine(checkDirectory, $"{sequence}.json"), json);
|
|
}
|
|
if (!results.Success)
|
|
results.Errors.Add(results.ToString());
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
Exception exception = e;
|
|
StringBuilder stringBuilder = new();
|
|
while (exception is not null)
|
|
{
|
|
_ = stringBuilder.AppendLine(exception.Message);
|
|
exception = exception.InnerException;
|
|
}
|
|
results.Errors ??= new List<string>();
|
|
results.Errors.Add(resultsJson);
|
|
results.Errors.Add(stringBuilder.ToString());
|
|
}
|
|
return new(resultsJson, results);
|
|
}
|
|
|
|
public static void AttachFile(string url, Attachment attachment, int timeoutSeconds = 60)
|
|
{
|
|
using HttpClient httpClient = new();
|
|
string json = JsonSerializer.Serialize(attachment);
|
|
httpClient.Timeout = new TimeSpan(0, 0, 0, timeoutSeconds, 0);
|
|
StringContent httpContent = new(json, Encoding.UTF8, "application/json");
|
|
HttpResponseMessage httpResponseMessage = httpClient.PostAsync($"{url}/attachment", httpContent).Result;
|
|
if (!httpResponseMessage.IsSuccessStatusCode)
|
|
{
|
|
string resultBody = httpResponseMessage.Content.ReadAsStringAsync().Result;
|
|
throw new Exception($"Attachment failed: {resultBody}");
|
|
}
|
|
}
|
|
|
|
public static void AttachFiles(string url, List<Attachment> headerAttachments = null, List<Attachment> dataAttachments = null)
|
|
{
|
|
string directory;
|
|
try
|
|
{
|
|
if (headerAttachments is not null)
|
|
{
|
|
foreach (Attachment attachment in headerAttachments)
|
|
{
|
|
directory = Path.GetDirectoryName(attachment.HeaderIdDirectory) ?? throw new Exception();
|
|
File.Copy(attachment.SourceFileName, Path.Combine(directory, attachment.AttachmentId, attachment.DestinationFileName), overwrite: true);
|
|
AttachFile(url, attachment);
|
|
}
|
|
}
|
|
if (dataAttachments is not null)
|
|
{
|
|
foreach (Attachment attachment in dataAttachments)
|
|
{
|
|
directory = Path.GetDirectoryName(attachment.HeaderIdDirectory) ?? throw new Exception();
|
|
File.Copy(attachment.SourceFileName, Path.Combine(directory, attachment.AttachmentId, attachment.DestinationFileName), overwrite: true);
|
|
AttachFile(url, attachment);
|
|
}
|
|
}
|
|
//MessageBox.Show(r.ToString());
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
Exception exception = e;
|
|
StringBuilder stringBuilder = new();
|
|
while (exception is not null)
|
|
{
|
|
_ = stringBuilder.AppendLine(exception.Message);
|
|
exception = exception.InnerException;
|
|
}
|
|
//MessageBox.Show(msgs.ToString(), "Exception", //MessageBoxButtons.OK, //MessageBoxIcon.Error);
|
|
throw new Exception(stringBuilder.ToString());
|
|
}
|
|
}
|
|
|
|
} |