示例#1
0
        public static void ProcessRequest(GDPRMessageWrapper msg)
        {
            Type        t             = Type.GetType("GDPR.Util.Messages." + msg.Type);
            GDPRMessage actionMessage = (GDPRMessage)Newtonsoft.Json.JsonConvert.DeserializeObject(msg.Object, t);

            actionMessage.Process();
        }
示例#2
0
        public string RecieveRequest([FromBody] string body)
        {
            bool valid = false;

            try
            {
                GDPRMessageWrapper message = JsonConvert.DeserializeObject <GDPRMessageWrapper>(body);

                if (message.IsEncrypted)
                {
                    valid = MessageHelper.ValidateMessage(message);
                }
                else
                {
                    valid = true;
                }

                if (valid)
                {
                    Type t = Type.GetType("GDPR.Common.Messages.BaseApplicationMessage, GDPR.Common, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null");
                    BaseApplicationMessage actionMessage = (BaseApplicationMessage)Newtonsoft.Json.JsonConvert.DeserializeObject(message.Object, t);
                    ProcessRequest(actionMessage, ctx);
                }
                else
                {
                    return("NotValid");
                }
            }
            catch (Exception ex)
            {
                return(ex.Message);
            }

            return("OK");
        }
示例#3
0
        public static void Run([EventHubTrigger("gdprmessagehub", Connection = "EventHubConnectionAppSetting")] EventData myEventHubMessage, TraceWriter log)
        {
            string data = Encoding.UTF8.GetString(myEventHubMessage.GetBytes());

            log.Info($"{data}");
            GDPRMessageWrapper message = (GDPRMessageWrapper)Newtonsoft.Json.JsonConvert.DeserializeObject(data);

            MasterGDPRHelper.ProcessRequest(message);
        }
示例#4
0
        static public void SendMessage(GDPRMessage message)
        {
            GDPRMessageWrapper w = new GDPRMessageWrapper();

            w.ApplicationId = message.ApplicationId;
            string msg = Newtonsoft.Json.JsonConvert.SerializeObject(message);

            w.Type        = message.GetType().Name;
            w.Object      = msg;
            w.MessageDate = DateTime.Now;
            SendMessage(w);
        }
        async Task IEventProcessor.ProcessEventsAsync(PartitionContext context, IEnumerable <EventData> messages)
        {
            DateTime checkPoint      = MasterGDPRHelper.GetOffset(context.ConsumerGroupName, context.Lease.PartitionId);
            DateTime lastMessageDate = checkPoint;

            foreach (EventData eventData in messages)
            {
                string data = Encoding.UTF8.GetString(eventData.GetBytes());

                try
                {
                    Type t = typeof(GDPRMessageWrapper);
                    GDPRMessageWrapper w = (GDPRMessageWrapper)Newtonsoft.Json.JsonConvert.DeserializeObject(data, t);

                    if (w.MessageDate > checkPoint)
                    {
                        if (w.MessageDate > lastMessageDate)
                        {
                            lastMessageDate = w.MessageDate;
                        }

                        Console.WriteLine(string.Format("Message received.  Partition: '{0}', Data: '{1}'", context.Lease.PartitionId, data));
                        MasterGDPRHelper.ProcessRequest(w);
                    }
                    else
                    {
                        Console.WriteLine(string.Format("Skiping message {0}", eventData.Offset));
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(data);
                }
            }

            MasterGDPRHelper.SetOffSet(context.ConsumerGroupName, context.Lease.PartitionId, lastMessageDate);

            //Call checkpoint every 5 minutes, so that worker can resume processing from 5 minutes back if it restarts.
            if (this.checkpointStopWatch.Elapsed > TimeSpan.FromMinutes(5))
            {
                await context.CheckpointAsync();

                this.checkpointStopWatch.Restart();
            }
        }
示例#6
0
        static private void SendMessage(GDPRMessageWrapper message)
        {
            //send a message...
            //string connectionStringBuilder =  "Endpoint=sb://gdprevents.servicebus.windows.net/;SharedAccessKeyName=GDPRPolicy;SharedAccessKey=ecCNa0UQXlCFiAIbAOMCBJLbzlWqOaCI7YQX3DCmSgo=;EntityPath=gdprmessagehub";
            string connectionStringBuilder = Util.EventHubConnectionStringWithPath;

            eventHubClient = EventHubClient.CreateFromConnectionString(connectionStringBuilder.ToString());

            if (!string.IsNullOrEmpty(message.ApplicationId))
            {
                EventHubSender sender = eventHubClient.CreateSender("gdprgroup");
                //EventHubSender sender = eventHubClient.CreatePartitionedSender("gdprgroup");
                string msg = Newtonsoft.Json.JsonConvert.SerializeObject(message);
                sender.Send(new EventData(Encoding.UTF8.GetBytes(msg)));
            }
            else
            {
                string msg = Newtonsoft.Json.JsonConvert.SerializeObject(message);
                eventHubClient.Send(new EventData(Encoding.UTF8.GetBytes(msg)));
            }
            //eventHubClient.SendAsync(new EventData(Encoding.UTF8.GetBytes(msg)));
            //eventHubClient.CloseAsync();
        }
示例#7
0
 public static void Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req, TraceWriter log)
 {
     string             data    = "";
     GDPRMessageWrapper message = (GDPRMessageWrapper)Newtonsoft.Json.JsonConvert.DeserializeObject(data);
 }