public void TwoQsoCompression()
        {
            Qso source1 = new Qso
            {
                Callsign = "JW1ABC",
                QsoTime = new DateTime(2015, 07, 13, 15, 17, 0),
                Band = Band.B40m,
                Mode = Mode.CW,
                Operator = "M0VFC",
            };
            byte[] compressedQso1 = new QsoCompressor().CompressQso(source1);
            Qso source2 = new Qso
            {
                Callsign = "K3LR",
                QsoTime = new DateTime(2015, 07, 18, 3, 1, 0),
                Band = Band.B12m,
                Mode = Mode.Phone,
                Operator = "G3ZAY",
            };
            byte[] compressedQso2 = new QsoCompressor().CompressQso(source2);

            byte[] bothQsos = new byte[compressedQso1.Length + compressedQso2.Length];
            Buffer.BlockCopy(compressedQso1, 0, bothQsos, 0, compressedQso1.Length);
            Buffer.BlockCopy(compressedQso2, 0, bothQsos, compressedQso1.Length, compressedQso2.Length);

            int decompressPosition = 0;
            Qso output1 = new QsoCompressor().UncompressQso(bothQsos, ref decompressPosition);
            Qso output2 = new QsoCompressor().UncompressQso(bothQsos, ref decompressPosition);

            AssertQsosEqual(source1, output1);
            AssertQsosEqual(source2, output2);
        }
        public void BasicQsoCompression()
        {
            Qso source = new Qso
            {
                Callsign = "JW1ABC",
                QsoTime = new DateTime (2015, 07, 13, 15, 17, 0),
                Band = Band.B40m,
                Mode = Mode.CW,
                Operator = "M0VFC",
            };
            byte[] compressedQso = new QsoCompressor().CompressQso(source);
            Qso output = new QsoCompressor().UncompressQso(compressedQso, 0);

            AssertQsosEqual(source, output);
        }
        public void WebServiceSubmission()
        {
            Qso source1 = new Qso
            {
                Callsign = "JW1ABC",
                QsoTime = new DateTime(2015, 07, 13, 15, 17, 0),
                Band = Band.B40m,
                Mode = Mode.CW,
                Operator = "M0VFC",
            };
            byte[] compressedQso1 = new QsoCompressor().CompressQso(source1);

            HttpWebRequest req = HttpWebRequest.CreateHttp("http://localhost:55950/logs/submit?qsoCount=1&hash=something");
            req.Method = "POST";
            using (Stream reqStream = req.GetRequestStream())
            {
                reqStream.Write(compressedQso1, 0, compressedQso1.Length);
            }
            req.GetResponse();
        }
Beispiel #4
0
        public ActionResult Submit(int qsoCount, string hash)
        {
            if (qsoCount < 1)
                return new HttpStatusCodeResult(400, "Invalid QSO count");
            if (string.IsNullOrWhiteSpace(hash))
                return new HttpStatusCodeResult(400, "Missing hash");

            int length = Request.ContentLength;
            byte[] incomingData = new byte[length];
            using (Stream requestStream = Request.InputStream)
            {
                int pos = 0;
                while (pos < length)
                {
                    pos += requestStream.Read(incomingData, pos, length - pos);
                }
            }

            List<Qso> submittedQsos = new List<Qso>(qsoCount);
            QsoCompressor compressor = new QsoCompressor ();
            int decompressPos = 0;
            for (int i = 0; i < qsoCount; i++)
            {
                submittedQsos.Add(compressor.UncompressQso(incomingData, ref decompressPos));
            }
            if (decompressPos != length)
                return new HttpStatusCodeResult(400, "Length does not match expected length");

            QsoStore store = new QsoStore();
            foreach (Qso q in submittedQsos)
            {
                if (!store.QsoExists(q))
                {
                    store.AddQso(q);
                }
            }
            return Content("OK");
        }