Exemple #1
0
 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");
 }
Exemple #2
0
        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>");
        }
Exemple #3
0
        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());
        }