System.Net.Http.HttpRequestException
Message=Connection failure
Source=Mono.Android
StackTrace:
at Xamarin.Android.Net.AndroidMessageHandler.<>c__DisplayClass137_0.<ConnectAsync>b__0() in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Xamarin.Android.Net/AndroidMessageHandler.cs:line 562
at System.Threading.Tasks.Task.InnerInvoke()
at System.Threading.Tasks.Task.<>c.<.cctor>b__281_0(Object obj)
at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)
--- End of stack trace from previous location ---
at Xamarin.Android.Net.AndroidMessageHandler.DoProcessRequest(HttpRequestMessage request, URL javaUrl, HttpURLConnection httpConnection, CancellationToken cancellationToken, RequestRedirectionState redirectState) in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Xamarin.Android.Net/AndroidMessageHandler.cs:line 616
at Xamarin.Android.Net.AndroidMessageHandler.DoSendAsync(HttpRequestMessage request, CancellationToken cancellationToken) in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Xamarin.Android.Net/AndroidMessageHandler.cs:line 482
at Microsoft.Extensions.Http.Logging.LoggingHttpMessageHandler.<SendCoreAsync>g__Core|5_0(HttpRequestMessage request, Boolean useAsync, CancellationToken cancellationToken)
at Data_Organizer.APIRequestTools.FirebaseAuthHttpMessageHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) in C:\Users\bredu\Documents\ShortNotes\Data_Organizer\APIRequestTools\FirebaseAuthHttpMessageHandler.cs:line 22
at Microsoft.Extensions.Http.Logging.LoggingScopeHttpMessageHandler.<SendCoreAsync>g__Core|5_0(HttpRequestMessage request, Boolean useAsync, CancellationToken cancellationToken)
at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
at Refit.RequestBuilderImplementation.<>c__DisplayClass15_0`2.<<BuildCancellableTaskFuncForMethod>b__0>d[[Data_Organizer_Core.SummaryRequest, Data_Organizer_Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null],[Data_Organizer_Core.SummaryRequest, Data_Organizer_Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext() in c:\temp\releaser\refit\Refit\RequestBuilderImplementation.cs:line 331
--- End of stack trace from previous location ---
at Refit.Implementation.Generated.Data_OrganizerAPIRequestToolsIGetSummaryFromChatGPTQuery.global::Data_Organizer.APIRequestTools.IGetSummaryFromChatGPTQuery.Execute(SummaryRequest request) in C:\Users\bredu\Documents\ShortNotes\Data_Organizer\obj\Debug\net8.0-android\InterfaceStubGeneratorV2\Refit.Generator.InterfaceStubGeneratorV2\IGetSummaryFromChatGPTQuery.g.cs:line 50
at Data_Organizer.Services.OpenAIAPIRequestService.GetSummaryAsync(String content) in C:\Users\bredu\Documents\ShortNotes\Data_Organizer\Services\OpenAIAPIRequestService.cs:line 35
at Data_Organizer.MVVM.ViewModels.MainPageViewModel.PlayAISummary() in C:\Users\bredu\Documents\ShortNotes\Data_Organizer\MVVM\ViewModels\MainPageViewModel.cs:line 80
at Data_Organizer.MVVM.ViewModels.MainPageViewModel.PlayFeature() in C:\Users\bredu\Documents\ShortNotes\Data_Organizer\MVVM\ViewModels\MainPageViewModel.cs:line 67
at CommunityToolkit.Mvvm.Input.AsyncRelayCommand.AwaitAndThrowIfFailed(Task executionTask) in /_/src/CommunityToolkit.Mvvm/Input/AsyncRelayCommand.cs:line 351
at System.Threading.Tasks.Task.<>c.<ThrowAsync>b__128_0(Object state)
at Android.App.SyncContext.<>c__DisplayClass2_0.<Post>b__0() in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Android.App/SyncContext.cs:line 36
at Java.Lang.Thread.RunnableImplementor.Run() in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Java.Lang/Thread.cs:line 37
at Java.Lang.IRunnableInvoker.n_Run(IntPtr jnienv, IntPtr native__this) in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/obj/Release/net8.0/android-34/mcw/Java.Lang.IRunnable.cs:line 84
at Android.Runtime.JNINativeWrapper.Wrap_JniMarshal_PP_V(_JniMarshal_PP_V callback, IntPtr jnienv, IntPtr klazz) in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Android.Runtime/JNINativeWrapper.g.cs:line 22
internal class EmailReaderWriter : IEmailReaderWriter
{
public List<string> AllReadEmails { get; private set; }
public List<string> AllWrittenEmails { get; private set; }
public string InputPath { get; }
public string OutputPath { get; }
private delegate void EmailReaderWriterHandler(string message);
private event EmailReaderWriterHandler _successNotification, _errorNotification;
private FileOptions _customFileOptions;
private object _locker;
public EmailReaderWriter(string inputpath = "..\\..\\..\\Input", string outputpath = "..\\..\\..\\Output")
{
InputPath = inputpath;
OutputPath = outputpath;
AllReadEmails = new List<string>();
AllWrittenEmails = new List<string>();
_successNotification += OperationSuccessNotifier.Success;
_errorNotification += OperationSuccessNotifier.Error;
_customFileOptions = FileOptions.Asynchronous | FileOptions.SequentialScan;
_locker = new object();
}
public List<string>? Read(string filepath)
{
if (!File.Exists(filepath))
{
_errorNotification($"File {filepath} doesn't exist!");
return null;
}
List<string> allReadEmailsFromFile;
using (FileStream fstream = new FileStream(filepath, FileMode.Open,
FileAccess.Read, FileShare.None, 0, _customFileOptions))
{
using (StreamReader reader = new StreamReader(fstream))
{
allReadEmailsFromFile = new List<string>(
(
reader.ReadToEnd()).
Split(new string[] { " ", ". ", ", " }, StringSplitOptions.RemoveEmptyEntries).
Where(x => x.Contains("@gmail.com"))
);
}
}
lock (_locker)
{
if (allReadEmailsFromFile.Count() == 0)
{
_errorNotification($"0 emails were found!");
return null;
}
List<string> readEmails = new List<string>();
foreach (var email in allReadEmailsFromFile)
{
if (AllReadEmails.Contains(email))
{
_errorNotification($"Email {email} is already read!");
continue;
}
else
{
readEmails.Add(email);
AllReadEmails.Add(email);
_successNotification($"Email {email} is read!");
}
}
if (readEmails.Count > 0)
_successNotification($"Such quantity of emails was read: {readEmails.Count}!");
return readEmails;
}
}
public bool Write(string filepath, string email)
{
if (!Directory.Exists(OutputPath))
Directory.CreateDirectory(OutputPath);
lock (_locker)
{
if (AllWrittenEmails.Contains(email))
{
_errorNotification($"Email {email} is already written on file!");
return false;
}
}
using (FileStream fstream = new FileStream(filepath, FileMode.Append,
FileAccess.Write, FileShare.None, 0, _customFileOptions |
FileOptions.WriteThrough))
{
using (StreamWriter writer = new StreamWriter(fstream))
{
writer.WriteLineAsync(email);
AllWrittenEmails.Add(email);
_successNotification($"Email {email} is successfully written on file!");
}
}
return true;
}
}