예제 #1
0
 public static byte[] EncodeAlertPayload(AlertPayload alertPayload)
 {
     using (var stream = new MemoryStream())
     {
         EncodeAlertPayload(stream, alertPayload);
         return(stream.ToArray());
     }
 }
예제 #2
0
 public static void EncodeAlertPayload(Stream stream, AlertPayload alertPayload)
 {
     using (var writer = new BinaryWriter(stream, Encoding.ASCII, leaveOpen: true))
     {
         writer.WriteVarString(alertPayload.Payload);
         writer.WriteVarString(alertPayload.Signature);
     }
 }
예제 #3
0
 public static byte[] EncodeAlertPayload(AlertPayload alertPayload)
 {
     using (var stream = new MemoryStream())
     using (var writer = new BinaryWriter(stream))
     {
         EncodeAlertPayload(writer, alertPayload);
         return stream.ToArray();
     }
 }
예제 #4
0
        public async static Task ProcessAlertMessage([ServiceBusTrigger("sumppumpalerts")] AlertPayload payload)
        {
            var newAlert = new AlertEntity()
            {
                PartitionKey = payload.DeviceId,
                RowKey       = payload.Timestamp.ToRowKey(),
                Type         = (AlertType)payload.Type,
                WaterLevel   = payload.WaterLevel,
                PumpRunning  = payload.PumpRunning
            };

            AlertRepository.Insert(newAlert);
        }
예제 #5
0
        private AlertPayload[] ReadAlerts()
        {
            List <AlertPayload> alerts = new List <AlertPayload>();

            using (var fs = File.OpenRead("data/alertTests.raw"))
            {
                BitcoinStream stream = new BitcoinStream(fs, false);
                while (stream.Inner.Position != stream.Inner.Length)
                {
                    AlertPayload payload = null;
                    stream.ReadWrite(ref payload);
                    alerts.Add(payload);
                }
            }
            return(alerts.ToArray());
        }
예제 #6
0
        public void CanParseAlertAndChangeUpdatePayloadAndSignature()
        {
            var          alertStr = "73010000003766404f00000000b305434f00000000f2030000f1030000001027000048ee00000064000000004653656520626974636f696e2e6f72672f666562323020696620796f7520686176652074726f75626c6520636f6e6e656374696e67206166746572203230204665627275617279004730450221008389df45f0703f39ec8c1cc42c13810ffcae14995bb648340219e353b63b53eb022009ec65e1c1aaeec1fd334c6b684bde2b3f573060d5b70c3a46723326e4e8a4f1";
            AlertPayload alert    = new AlertPayload();

            alert.FromBytes(TestUtils.ParseHex(alertStr));
            Assert.True(alert.CheckSignature(BitcoinNetwork.Main));
            Assert.Equal("See bitcoin.org/feb20 if you have trouble connecting after 20 February", alert.StatusBar);
            alert.StatusBar = "Changing...";
            Assert.True(alert.CheckSignature(BitcoinNetwork.Main));
            alert.UpdatePayload();
            Assert.False(alert.CheckSignature(BitcoinNetwork.Main));
            Key key = new Key();

            alert.UpdateSignature(key);
            Assert.True(alert.CheckSignature(key.PubKey));
        }
예제 #7
0
        private async Task SendAlert(AlertPayloadType type)
        {
            var payload = new AlertPayload
            {
                DeviceId    = DeviceId,
                Timestamp   = DateTime.Now,
                WaterLevel  = CurrentWaterLevel,
                PumpRunning = PumpStatus,
                Type        = type
            };

            var json = JsonConvert.SerializeObject(payload);

            using (var message = new Message(Encoding.UTF8.GetBytes(json)))
            {
                message.Properties.Add("DeviceName", DeviceId);
                await iotClient.SendEventAsync(message);
            }
        }
예제 #8
0
 public static void EncodeAlertPayload(BinaryWriter writer, AlertPayload alertPayload)
 {
     writer.WriteVarString(alertPayload.Payload);
     writer.WriteVarString(alertPayload.Signature);
 }