public void ObjectFromRecord() { AdifContactRecord.TryParse("<call:5>M0LTE <eor>", out var record, out string error).Should().BeTrue(); record.Should().NotBeNull(); error.Should().BeNull(); record.Call.Should().Be("M0LTE"); record.Fields["call"].Should().Be("M0LTE"); }
public void RecordFromCode() { var target = new AdifContactRecord(); string call = "M0LTE"; target.Call = call; target.Fields.Should().ContainKey("call"); target.Fields["call"].Should().Be(call); target.Call.Should().Be(call); target.ToString().Should().Be("<call:5>M0LTE <eor>"); }
private static IEnumerable <AdifRecord> GetRecords(string file) { string[] lines; while (true) { try { lines = File.ReadAllLines(file); break; } catch (Exception) { //Console.WriteLine($"{ex.Message} - retrying..."); Thread.Sleep(1000); } } return(lines.Select(line => (AdifContactRecord.TryParse(line, out AdifContactRecord r, out _) ? r : null)) .Where(ar => ar != null)); }
public async Task <PushLineResult[]> PushLines(string[] lines, bool showProgress, DateTime notBefore) { Uri uri = new Uri(url, "index.php/api/qso"); if (showProgress) { Console.WriteLine($"POSTing to {uri}"); } var results = new List <PushLineResult>(); foreach (string line in lines) { if (!AdifContactRecord.TryParse(line, out AdifContactRecord contactRecord, out string error)) { results.Add(new PushLineResult { ErrorContent = "Invalid ADIF: " + error }); continue; } if (contactRecord.QsoStart < notBefore) { continue; } if (contactRecord.Fields.ContainsKey("tx_pwr")) { contactRecord.Fields["tx_pwr"] = contactRecord.Fields["tx_pwr"].Replace("W", ""); } string newline = contactRecord.ToString(); if (showProgress) { Console.Write($"{contactRecord.QsoStart.ToString("yyyy-MM-dd HH:mm:ss")} {contactRecord.Call ?? ""}... "); } HttpResponseMessage responseMessage; try { responseMessage = await httpClient.PostAsync(uri, new JsonContent(new AdifLineModel { Key = apikey, String = newline })); } catch (Exception ex) { string message = $"{ex.GetType().Name}: {ex.Message}"; if (showProgress) { Console.WriteLine(message); } results.Add(new PushLineResult { ErrorContent = message }); continue; } if (showProgress) { Console.WriteLine(responseMessage.StatusCode); } var result = new PushLineResult { Record = contactRecord }; if (!responseMessage.IsSuccessStatusCode) { result.ErrorContent = await responseMessage.Content.ReadAsStringAsync(); } result.Success = responseMessage.IsSuccessStatusCode; results.Add(result); } return(results.ToArray()); }