Example #1
0
        public IHttpContext UpdateMessage(IHttpContext context)
        {
#if DEBUG
            context.Response.Headers["Access-Control-Allow-Origin"]  = "*";
            context.Response.Headers["Access-Control-Allow-Methods"] = "OPTIONS, HEAD, GET, DELETE, POST, PUT";
#endif
            var isNumber = int.TryParse(context.Request.PathParameters["msgId"], out int msgId);
            if (isNumber)
            {
                MQTTProxyMessage msg = Broker.db.messageList.FirstOrDefault(elem => elem.MsgId == msgId);
                if (msg != null)
                {
                    try
                    {
                        MQTTProxyMessage newMsg = JsonConvert.DeserializeObject <MQTTProxyMessage>(context.Request.Payload);
                        msg.Payload = newMsg.Payload;
                        context.Response.SendJSON(msg);
                    }
                    catch (Exception e)
                    {
                        context.Response.SendResponse(Grapevine.Shared.HttpStatusCode.BadRequest, e);
                    }
                }
                else
                {
                    context.Response.SendResponse(Grapevine.Shared.HttpStatusCode.BadRequest, "There is no message associated with this msgId");
                }
            }
            else
            {
                context.Response.SendResponse(Grapevine.Shared.HttpStatusCode.BadRequest, "Enter a valid msgId");
            }
            return(context);
        }
Example #2
0
        public IHttpContext DeleteMessage(IHttpContext context)
        {
#if DEBUG
            context.Response.Headers["Access-Control-Allow-Origin"]  = "*";
            context.Response.Headers["Access-Control-Allow-Methods"] = "OPTIONS, HEAD, GET, DELETE, POST, PUT";
#endif
            var isNumber = int.TryParse(context.Request.PathParameters["msgId"], out int msgId);
            if (isNumber)
            {
                MQTTProxyMessage msg = Broker.db.messageList.FirstOrDefault(elem => elem.MsgId == msgId);
                if (msg != null)
                {
                    Broker.db.messageList.Remove(msg);
                    context.Response.SendJSON(msg);
                }
                else
                {
                    context.Response.SendResponse(Grapevine.Shared.HttpStatusCode.BadRequest, "There is no message associated with this msgId");
                }
            }
            else
            {
                context.Response.SendResponse(Grapevine.Shared.HttpStatusCode.BadRequest, "Enter a valid msgId");
            }
            return(context);
        }
Example #3
0
        public IHttpContext SendMessage(IHttpContext context)
        {
#if DEBUG
            context.Response.Headers["Access-Control-Allow-Origin"]  = "*";
            context.Response.Headers["Access-Control-Allow-Methods"] = "OPTIONS, HEAD, GET, DELETE, POST, PUT";
#endif
            if (int.TryParse(context.Request.PathParameters["msgId"], out int msgId))
            {
                MQTTProxyMessage msg = Broker.db.messageList.FirstOrDefault(elem => elem.MsgId == msgId);
                if (msg != null)
                {
                    var manager = Broker.clientManagers.FirstOrDefault(i => i.Key.Equals(context.Request.PathParameters["clientId"])).Value;

                    if (manager != null)
                    {
                        Console.WriteLine(context.Request.PathParameters["whichWay"]);
                        MQTT_Proxy.Client client = null;
                        if (context.Request.PathParameters["whichWay"] == "clientIn")
                        {
                            client = manager.clientIn;
                        }
                        else if (context.Request.PathParameters["whichWay"] == "clientOut")
                        {
                            client = manager.clientOut;
                        }
                        else
                        {
                            context.Response.SendResponse(Grapevine.Shared.HttpStatusCode.BadRequest, "Please enter '[clientId]/clientIn' or '[clientId]/clientOut'");
                            return(context);
                        }

                        //correct
                        client.SendMessage(msg.ToMqttApplicationMessage()).Wait();
                        msg.State = MessageState.Sent;
                        context.Response.SendJSON(msg);
                    }
                    else
                    {
                        context.Response.SendResponse(Grapevine.Shared.HttpStatusCode.BadRequest, "Please enter valid clientId.");
                    }
                }
                else
                {
                    context.Response.SendResponse(Grapevine.Shared.HttpStatusCode.BadRequest, "No message associated with this msgId.");
                }
            }
            else
            {
                context.Response.SendResponse(Grapevine.Shared.HttpStatusCode.BadRequest, "Please enter a valid msgId.");
            }

            return(context);
        }
Example #4
0
        public IHttpContext CopyMessage(IHttpContext context)
        {
#if DEBUG
            context.Response.Headers["Access-Control-Allow-Origin"]  = "*";
            context.Response.Headers["Access-Control-Allow-Methods"] = "OPTIONS, HEAD, GET, DELETE, POST, PUT";
#endif
            if (int.TryParse(context.Request.PathParameters["msgId"], out int msgId))
            {
                MQTTProxyMessage msg = Broker.db.messageList.FirstOrDefault(elem => elem.MsgId == msgId);
                if (msg != null)
                {
                    MQTTProxyMessage newMsg = new MQTTProxyMessage(msg);
                    Broker.db.messageList.Add(newMsg);
                    context.Response.SendJSON(newMsg);
                }
            }
            else
            {
                context.Response.SendResponse(Grapevine.Shared.HttpStatusCode.BadRequest, "Enter a valid msgId");
            }
            return(context);
        }