From 4fecdbce0601e8652c00d790d64703f74845f8f6 Mon Sep 17 00:00:00 2001 From: barelyprofessional <150058423+barelyprofessional@users.noreply.github.com> Date: Tue, 6 May 2025 13:29:15 -0500 Subject: [PATCH] Tried to test 3xpl websocket again but still doesn't work for listening to transactions for individual addresses. Might work just watching the mempool though --- ThreeXplCliClient/ThreeXplClient.cs | 9 ++++++--- ThreeXplWsClient/Converters.cs | 24 ++++++++++++++++++++++++ ThreeXplWsClient/Events/EventModels.cs | 3 ++- 3 files changed, 32 insertions(+), 4 deletions(-) create mode 100644 ThreeXplWsClient/Converters.cs diff --git a/ThreeXplCliClient/ThreeXplClient.cs b/ThreeXplCliClient/ThreeXplClient.cs index 150a373..ab352df 100644 --- a/ThreeXplCliClient/ThreeXplClient.cs +++ b/ThreeXplCliClient/ThreeXplClient.cs @@ -8,8 +8,8 @@ public class ThreeXplClient { private List _addresses = [ - "MC8TiBEsnQVjxbvLtTsUXjTBZTQaR8fe8X", - "ltc1qks2m7hvmhs3c20zrfvptv9pvk82p8g70sgw5mk" + "0x3C736854AC7Cf8f24070aa3ceC72B8471d1f9781", + "0x2d709a3c76a28b45594d6a54be72d4ab0203c546" ]; public async Task Start() { @@ -20,19 +20,22 @@ public class ThreeXplClient { var prompt = AnsiConsole.Ask("Channel: "); client.SendSubscribeRequest(prompt); + AnsiConsole.MarkupLine($"[green]Subbed at {DateTime.Now:O}[/]"); } } private void OnThreeXplEvent(object sender, ThreeXplPushModel e, int connectionId) { - AnsiConsole.MarkupLine("[blue]Received event from 3xpl[/]"); + //AnsiConsole.MarkupLine("[blue]Received event from 3xpl[/]"); foreach (var txn in e.Pub.Data.Data) { if (txn.Address == null) return; if (_addresses.Contains(txn.Address)) { AnsiConsole.MarkupLine($"[green]Saw txn I'm interested in: {txn.Address}, effect {txn.Effect}, currency {txn.Currency}[/]"); + continue; } + //AnsiConsole.MarkupLine($"[gray]Saw txn I'm not interested in: {txn.Address}, effect {txn.Effect}, currency {txn.Currency}[/]"); } } } \ No newline at end of file diff --git a/ThreeXplWsClient/Converters.cs b/ThreeXplWsClient/Converters.cs new file mode 100644 index 0000000..6ef9a39 --- /dev/null +++ b/ThreeXplWsClient/Converters.cs @@ -0,0 +1,24 @@ +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace ThreeXplWsClient; + +public class ThreeXplDateTimeConverter : JsonConverter +{ + // 2025-05-05 23:53:08 + private const string Format = "yyyy-MM-dd HH:mm:ss"; + + public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + var input = reader.GetString(); + if (input == null) + { + throw new NullReferenceException("Tried to convert a string to DateTime that was null"); + } + return DateTime.ParseExact(input, Format, null); + } + public override void Write(Utf8JsonWriter writer, DateTime value, JsonSerializerOptions options) + { + writer.WriteStringValue(value.ToString(Format)); + } +} \ No newline at end of file diff --git a/ThreeXplWsClient/Events/EventModels.cs b/ThreeXplWsClient/Events/EventModels.cs index f18a953..e12dc00 100644 --- a/ThreeXplWsClient/Events/EventModels.cs +++ b/ThreeXplWsClient/Events/EventModels.cs @@ -30,7 +30,8 @@ public class ThreeXplDataModel [JsonPropertyName("sort_key")] public int? SortKey { get; set; } [JsonPropertyName("time")] - public DateTimeOffset? Time { get; set; } + [JsonConverter(typeof(ThreeXplDateTimeConverter))] + public DateTime Time { get; set; } [JsonPropertyName("currency")] public string? Currency { get; set; } [JsonPropertyName("effect")]