Exemplo n.º 1
0
        /// <summary>
        /// Get ADIF Record
        /// POST:stations/{stationId}/get_record
        /// </summary>
        /// <param name="callSign"></param>
        /// <returns></returns>
        public string GetRecord(string callSign)
        {
            string response = "NO_RECORD";

            using (HttpClient httpClient = new HttpClient()
            {
                BaseAddress = new Uri(this.config.BaseUrl),
                DefaultRequestHeaders = { Authorization = new AuthenticationHeaderValue("Bearer", GenerateToken()) }
            })
            {
                string action = $"restricted/stations/{config.StationId}/get_record";

                try
                {
                    Task.Run(async() =>
                    {
                        HttpResponseMessage responseMessage = await httpClient.PostAsync(action, new StringContent($"\"{callSign}\"", Encoding.UTF8, "application/json"));

                        if (responseMessage.StatusCode == HttpStatusCode.OK)
                        {
                            AdifRow record = JsonConvert.DeserializeObject <AdifRow>(responseMessage.Content.ReadAsStringAsync().Result);
                            response       = AdifHelper.ConvertToString(record);
                        }
                        else
                        {
                            throw new Exception($"{Path.Combine(httpClient.BaseAddress.AbsoluteUri, action)} returned {responseMessage.StatusCode}");
                        }
                    }).GetAwaiter().GetResult();
                }
                catch { }
            }
            return(response);
        }
Exemplo n.º 2
0
        public static AdifRow CheckDupToAdif(CheckDupRequest checkDupRequest)
        {
            AdifRow adif = new AdifRow()
            {
                CALL     = checkDupRequest.Call,
                MODE     = checkDupRequest.Mode,
                QSO_DATE = DateTime.UtcNow.ToString("yyyyMMdd"),
                TIME_ON  = DateTime.UtcNow.ToString("HHmm")
            };

            if (!string.IsNullOrEmpty(checkDupRequest.Freq) && checkDupRequest?.Freq != "0")
            {
                double freq;
                if (double.TryParse(checkDupRequest.Freq, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out freq))
                {
                    freq      = freq / 1000;
                    adif.FREQ = freq.ToString("F6", CultureInfo.InvariantCulture);
                    adif.BAND = AdifHelper.FreqToBand(freq);
                }
            }

            if (!string.IsNullOrEmpty(checkDupRequest.State) && checkDupRequest?.State != "0")
            {
                adif.STATE = checkDupRequest.State;
            }

            return(adif);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Read ADIF from clipboard (for example copied from HamRadioDeluxe)
        /// </summary>
        /// <param name="sender">sender object</param>
        /// <param name="e">event args</param>
        private void ButtonReadClipboardClick(object sender, EventArgs e)
        {
            // Clear old data
            this.dataGridViewAdifItems.Rows.Clear();

            // Evaluate the given ADIF text from clip
            var listOfAdifs = AdifHelper.EvaluateStringAdif(Clipboard.GetText());

            // Add to GridView
            foreach (var adifItem in listOfAdifs)
            {
                this.dataGridViewAdifItems.Rows.Add(
                    new DataGridViewRow
                {
                    Cells =
                    {
                        new DataGridViewTextBoxCell {
                            Value = adifItem.AdifName
                        },
                        new DataGridViewTextBoxCell {
                            Value = adifItem.AdifValue
                        }
                    }
                });
            }
        }
Exemplo n.º 4
0
        private void ButtonLoadFromClip_Click(object sender, EventArgs e)
        {
            var listOfAdifs = AdifHelper.EvaluateStringAdif(Clipboard.GetText());

            foreach (var adifItem in listOfAdifs)
            {
                var labelItem = labelItemList.Find(x => x.AdifKey == adifItem.AdifName);
                if (labelItem != null)
                {
                    labelItem.CurrentValueString = adifItem.AdifValue;
                }
            }

            this.UpdateDisplayedLabels();
        }
        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
        {
            _logger.LogDebug($"{nameof(EqslUploadService)} is starting.");

            stoppingToken.Register(() =>
                                   _logger.LogDebug($"{nameof(EqslUploadService)} background task is stopping."));

            while (!stoppingToken.IsCancellationRequested)
            {
                _logger.LogDebug($"{nameof(EqslUploadService)} task doing background work.");

                using (IServiceScope scope = _provider.CreateScope())
                {
                    using (var context = scope.ServiceProvider.GetRequiredService <QSOColletorContext>())
                    {
                        foreach (Station station in context.Station)
                        {
                            try
                            {
                                var QsosToSend = context.Log.Where(Q => Q.StationId == station.StationId && (Q.EQSL_QSL_SENT != "Y" || string.IsNullOrEmpty(Q.EQSL_QSL_SENT))).ToArray();
                                var adif       = AdifHelper.ExportAsADIF(QsosToSend);
                                var c          = new Uploader();
                                if (c.UploadAdif(adif, station.Callsign, station.HamID))
                                {
                                    //update QSOs
                                    foreach (Qso qso in QsosToSend)
                                    {
                                        qso.EQSL_QSL_SENT = "Y";
                                        qso.EQSL_QSLSDATE = DateTime.UtcNow.ToString("yyyyMMdd");
                                        context.SaveChanges();
                                        _logger.LogInformation($"{qso.CALL},{qso.QSO_DATE},{qso.MODE},{qso.BAND} has been uploaded to eQSL.cc");
                                    }
                                }
                            }
                            catch (Exception exc)
                            {
                                _logger.LogError(exc.Message);
                            }
                        }
                    }
                }
                await Task.Delay(new TimeSpan(_config.JobInterval, 0, 0));
            }

            _logger.LogDebug($"{nameof(EqslUploadService)} background task is stopping.");
        }
Exemplo n.º 6
0
        public ContentResult ExportLog(int stationId)
        {
            var station = _context.Station.Where(S => S.StationId == stationId).First <Station>();

            if (station != null)
            {
                return(new ContentResult()
                {
                    Content = AdifHelper.ExportAsADIF(_context.Log.Where(Q => Q.StationId == stationId)?.ToArray <AdifRow>()),
                    StatusCode = 200
                });
            }
            else
            {
                return(new ContentResult()
                {
                    StatusCode = 404
                });
            }
        }
        public int InsertAdif(Station station, Qso row, int minutesAccept = 10)
        {
            int result = -1;

            row.StationId = station.StationId;

            if (SearchDuplicates(station, row, minutesAccept)?.Length == 0)
            {
                this.Log.Add(row);
                if (this.SaveChanges() > 0)
                {
                    _logger.LogInformation($"Insert QSO {AdifHelper.ConvertToString(row)} in Log {station.StationId}");
                    result = row.QsoId;
                }
            }
            else
            {
                _logger.LogWarning($"Duplicate for QSO {AdifHelper.ConvertToString(row)} in Log {station.StationId}");
            }

            return(result);
        }
Exemplo n.º 8
0
        public static string ConvertToAdifRow(string record)
        {
            AdifRow AdifRow = new AdifRow();

            record = record.Replace("<eor>", "");
            string[]      x = Regex.Split(record.Replace("\n", "").Replace("\r", ""), @"<([^:]+):\d+[^>]*>").ToArray();
            List <string> l = new List <string>(x);

            l.RemoveAt(0);
            x = l.ToArray();

            var dic = new Dictionary <string, string>();

            if (x.Length % 2 == 0)
            {
                for (int i = 0; i < x.Length; i++)
                {
                    if (!string.IsNullOrEmpty(x[i + 1]))
                    {
                        dic.Add(x[i].ToUpper(), x[i + 1]);
                    }
                    i++;
                }

                if (dic.ContainsKey("BAND") && dic.ContainsKey("FREQ"))
                {
                    dic["BAND"] = AdifHelper.FreqToBand(double.Parse(dic["FREQ"], CultureInfo.InvariantCulture));
                }
                else if (dic.ContainsKey("FREQ"))
                {
                    dic.Add("BAND", AdifHelper.FreqToBand(double.Parse(dic["FREQ"], CultureInfo.InvariantCulture)));
                }
            }

            return(JsonConvert.SerializeObject(dic));
        }