/// <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); }
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); }
/// <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 } } }); } }
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."); }
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); }
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)); }