Esempio n. 1
0
        /// <summary>
        /// Check QSO Duplicates
        /// POST:stations/{stationId}/check_dup
        /// </summary>
        /// <param name="checkDupRequest"></param>
        /// <returns></returns>
        public bool CheckDup(CheckDupRequest checkDupRequest)
        {
            using (HttpClient httpClient = new HttpClient()
            {
                BaseAddress = new Uri(this.config.BaseUrl),
                DefaultRequestHeaders = { Authorization = new AuthenticationHeaderValue("Bearer", GenerateToken()) }
            })
            {
                string action = $"restricted/stations/{config.StationId}/check_dup";
                try
                {
                    Task.Run(async() =>
                    {
                        HttpResponseMessage responseMessage = await httpClient.PostAsync(action, new StringContent(JsonConvert.SerializeObject(checkDupRequest), Encoding.UTF8, "application/json"));

                        if (responseMessage.StatusCode == HttpStatusCode.OK)
                        {
                            return(JsonConvert.DeserializeObject <bool>(responseMessage.Content.ReadAsStringAsync().Result));
                        }
                        else
                        {
                            throw new Exception($"{Path.Combine(httpClient.BaseAddress.AbsoluteUri, action)} returned {responseMessage.StatusCode}");
                        }
                    }).GetAwaiter().GetResult();
                }
                catch { }
                return(false);
            }
        }
Esempio 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);
        }
Esempio n. 3
0
        public bool CheckDuplicates([FromRoute] int stationId, [FromBody] CheckDupRequest checkDupRequest)
        {
            Station station = _context.Station.Find(stationId);

            Qso[] duplicates = _context.SearchDuplicates(station, Converters.CheckDupToAdif(checkDupRequest), checkDupRequest?.TimeSpan ?? 1) ?? new Qso[0];
            return(duplicates.Length > 0);
        }
Esempio n. 4
0
        public ContentResult Post()
        {
            using (var receiveStream = Request.Body)
            {
                using (var readStream = new StreamReader(receiveStream))
                {
                    var call = XmlHelper.DeserializeFromString <MethodCall>(readStream.ReadToEnd());
                    _logger.LogTrace(JsonConvert.SerializeObject(call));
                    switch (call.methodName)
                    {
                        #region system.listMethods
                    case "system.listMethods":
                        #endregion
                    {
                        return(new ContentResult()
                            {
                                Content = XmlHelper.SerializeObject <MethodResponse>(new MethodResponse()
                                {
                                    Params = new Params()
                                    {
                                        Param = new Param()
                                        {
                                            Value = new Value()
                                            {
                                                Array = new Array()
                                                {
                                                    Data = new Data()
                                                    {
                                                        Value = new [] {
                                                            "log.add_record",
                                                            "log.check_dup",
                                                            "log.get_record",
                                                            "system.listMethods",
                                                            "system.methodHelp",
                                                            "system.multicall"
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }),
                                ContentType = MediaTypeNames.Text.Xml,
                                StatusCode = 200
                            });
                    }

                        #region system.methodHelp
                    case "system.methodHelp":
                    {
                        switch (call.@params?.First().value)
                        {
                        case "log.add_record":
                        {
                            return(new ContentResult()
                                    {
                                        Content = XmlHelper.SerializeObject <MethodResponse>(new MethodResponse()
                                        {
                                            Params = new Params()
                                            {
                                                Param = new Param()
                                                {
                                                    Value = new Value()
                                                    {
                                                        Array = new Array()
                                                        {
                                                            Data = new Data()
                                                            {
                                                                Value = new[]
                                                                { "log.add_record ADIF RECORD" }
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }),
                                        ContentType = MediaTypeNames.Text.Xml,
                                        StatusCode = 200
                                    });
                        }

                        case "log.check_dup":
                        {
                            return(new ContentResult()
                                    {
                                        Content = XmlHelper.SerializeObject <MethodResponse>(new MethodResponse()
                                        {
                                            Params = new Params()
                                            {
                                                Param = new Param()
                                                {
                                                    Value = new Value()
                                                    {
                                                        Array = new Array()
                                                        {
                                                            Data = new Data()
                                                            {
                                                                Value = new[]
                                                                { "log.check_dup CALL, MODE(0), TIME_SPAN(0), FREQ_HZ(0), STATE(0), XCHG_IN(0)" }
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }),
                                        ContentType = MediaTypeNames.Text.Xml,
                                        StatusCode = 200
                                    });
                        }

                        case "log.get_record":
                        {
                            return(new ContentResult()
                                    {
                                        Content = XmlHelper.SerializeObject <MethodResponse>(new MethodResponse()
                                        {
                                            Params = new Params()
                                            {
                                                Param = new Param()
                                                {
                                                    Value = new Value()
                                                    {
                                                        Array = new Array()
                                                        {
                                                            Data = new Data()
                                                            {
                                                                Value = new[]
                                                                { "log.get_record CALL" }
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }),
                                        ContentType = MediaTypeNames.Text.Xml,
                                        StatusCode = 200
                                    });
                        }

                        default:
                            return(null);
                        }
                    }
                        #endregion

                        #region log.check_dup
                    ///"log.check_dup CALL, MODE(0), TIME_SPAN(0), FREQ_HZ(0), STATE(0), XCHG_IN(0)"
                    case "log.check_dup":
                    {
                        var req = new CheckDupRequest()
                        {
                            //CALL
                            Call = call.@params[0].value,

                            //MODE(0)
                            Mode = call.@params[1]?.value ?? null,

                            //TIME_SPAN(0)
                            TimeSpan = int.Parse(call.@params[2]?.value ?? "10"),

                            //FREQ_HZ(0)
                            Freq = call.@params[3]?.value ?? null,

                            //STATE(0)
                            State = call.@params[4]?.value ?? null,

                            //XCHG_IN(0)
                            XchgIn = call.@params[5]?.value ?? null,
                        };


                        return(new ContentResult()
                            {
                                Content = $"<?xml version=\"1.0\"?><methodResponse><params><param><value>{client.CheckDup(req).ToString().ToLower()}</value></ param></params></ methodResponse>",
                                ContentType = MediaTypeNames.Text.Xml,
                                StatusCode = 200
                            });
                    }
                        #endregion

                        #region log.get_record
                    ///"log.get_record CALL"
                    case "log.get_record":
                    {
                        return(new ContentResult()
                            {
                                Content = $"<?xml version=\"1.0\"?><methodResponse><params><param><value>{client.GetRecord(call.@params[0]?.value)}</value></param></params></methodResponse>",
                                ContentType = MediaTypeNames.Text.Xml,
                                StatusCode = 200
                            });
                    }
                        #endregion

                        #region log.add_record
                    ///"log.add_record ADIF Record"
                    case "log.add_record":
                    {
                        string record = call.@params[0]?.value;
                        string guid   = _context.InsertRecord(record).ToString();
                        _logger.LogInformation($"Inserted record {record} with Guid {guid}");

                        return(new ContentResult()
                            {
                                Content = "<?xml version=\"1.0\"?><methodResponse><params><param><value></value></param></params></methodResponse>",
                                ContentType = MediaTypeNames.Text.Xml,
                                StatusCode = 200
                            });
                    }
                        #endregion

                    default:
                        return(null);
                    }
                }
            }
        }