Exemplo n.º 1
0
        public MessageApiModel Post(MessageApiModel mess)
        {
            var result = _business.CreateMessage(ApiTranslators.Translate <MessageApiModel, MessageDTO>(mess));

            EasyShoppingHub.PushToUser(result.Sent, result, null);
            return(ApiTranslators.Translate <MessageDTO, MessageApiModel>(result));
        }
Exemplo n.º 2
0
        public IHttpActionResult PostMessage([FromBody] MessageApiModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }
            Message message = new Message()
            {
                DateTime = model.DateTime,
                Message1 = model.Message,
                MId      = model.MId,
                UserId   = model.UserId
            };

            message = db.Messages.Add(message);
            try
            {
                db.SaveChanges();
                model = new MessageApiModel()
                {
                    DateTime = message.DateTime,
                    Message  = message.Message1,
                    MId      = message.MId,
                    UserId   = message.UserId
                };
            }
            catch (Exception)
            {
                return(StatusCode(HttpStatusCode.ExpectationFailed));
            }

            return(Ok(model));
        }
Exemplo n.º 3
0
        public static TModel FromConversation <TModel>(Conversation conversation) where
        TModel : ConversationApiModel, new()
        {
            var model = new TModel();

            model.Id       = conversation.Id;
            model.TenantId = conversation.TenantId;
            model.Profiles = conversation.Profiles.Select(x => ProfileApiModel.FromProfile(x)).ToList();
            model.Messages = conversation.Messages.Select(x => MessageApiModel.FromMessage(x)).ToList();
            return(model);
        }
Exemplo n.º 4
0
        public ActionResult Post([FromBody] MessageApiModel message)
        {
            if (message == null)
            {
                return(new BadRequestResult());
            }

            var id = _dataService.SaveMessage(message);

            Task.Run(() => SimulateSendingToNotificationService(id));

            return(new JsonResult(id));
        }
        public IActionResult Message([FromBody] MessageApiModel message)
        {
            var response = _helloWorldManager.AddMessage(_mapper.Map <MessageDomainModel>(message));

            if (response == 0)
            {
                return(BadRequest());
            }
            else
            {
                return(Ok());
            }
        }
Exemplo n.º 6
0
        public IHttpActionResult Get(long id)
        {
            Message message = db.Messages.Find(id);

            if (message == null)
            {
                return(NotFound());
            }
            MessageApiModel model = new MessageApiModel()
            {
                DateTime = message.DateTime,
                Message  = message.Message1,
                MId      = message.MId,
                UserId   = message.UserId
            };

            return(Ok(model));
        }
Exemplo n.º 7
0
        public string SaveMessage(MessageApiModel message)
        {
            string result;

            using (var db = new LiteDatabase(_connectionString))
            {
                var collection = db.GetCollection <MessageModel>(Name);
                collection.EnsureIndex(x => x.Id);

                var id = collection.Insert(new MessageModel
                {
                    Recipients = message.Recipients,
                    Subject    = message.Subject,
                    Body       = message.Body,
                    IsSent     = true
                });



                result = id.AsString;
            }

            return(result);
        }
Exemplo n.º 8
0
        private async Task PingRequest(HttpContext context, WebSocket socket)
        {
            var buffer = new byte[600 * 1024];
            WebSocketReceiveResult result = await socket.ReceiveAsync(new ArraySegment <byte>(buffer), CancellationToken.None);

            string received = Encoding.Default.GetString(buffer, 0, result.Count);

            string[] splits     = received.Split(' ');
            string   eventIdStr = splits[0];
            ObjectId eventId    = new ObjectId(eventIdStr);

            ObjectId userId   = new ObjectId(JwtUtil.GetUserIdFromToken("Bearer " + splits[1]));
            string   userName = MongoUtil.GetUser(userId).Name;

            if (chatRooms.ContainsKey(eventIdStr))
            {
                chatRooms[eventIdStr].Add(socket);
            }
            else
            {
                chatRooms.AddOrUpdate(eventIdStr, new ConcurrentBag <WebSocket> {
                    socket
                }, (string x, ConcurrentBag <WebSocket> y) => { return(null); });
            }

            while (!result.CloseStatus.HasValue)
            {
                result = await socket.ReceiveAsync(new ArraySegment <byte>(buffer), CancellationToken.None);

                received = Encoding.Default.GetString(buffer, 0, result.Count);

                if (received == "")
                {
                    continue;
                }

                MessageModel msg = new MessageModel
                {
                    Message  = received,
                    UserId   = userId,
                    EventId  = eventId,
                    DateSent = DateTime.Now
                };

                MongoUtil.SaveMessage(msg);
                MessageApiModel msgApi = msg.getMessageApiModel(userName);
                string          toSend = msgApi.Message + "!#|||#!" + msgApi.DateSent + "!#|||#!" + msgApi.userName;
                Encoding.ASCII.GetBytes(toSend, 0, toSend.Length, buffer, 0);

                foreach (WebSocket ws in chatRooms[eventIdStr])
                {
                    if (ws != socket)
                    {
                        if (ws.State == WebSocketState.Open)
                        {
                            ws.SendAsync(new ArraySegment <byte>(buffer, 0, toSend.Length), result.MessageType, result.EndOfMessage, CancellationToken.None);
                        }
                    }
                }
            }

            await socket.CloseAsync(result.CloseStatus.Value, result.CloseStatusDescription, CancellationToken.None);
        }
        public async Task Invoke(HttpContext context)
        {
            try
            {
                await _next(context);
            }
            catch (HttpResponseException)
            {
                throw;
            }
            catch (Exception error)
            {
                var response = context.Response;
                response.ContentType = "application/json; charset=utf-8";

                var desctiption = new MessageApiModel {
                    Message = error.Message
                };

                if (error is BadImageFormatException)
                {
                    desctiption.Message = _resourceManager.GetString("BadImageFormatException");
                }
                else if (error is FormatException)
                {
                    desctiption.Message = _resourceManager.GetString("FormatException");
                }
                else if (error is ArgumentNullException)
                {
                    desctiption.Message = _resourceManager.GetString("ArgumentNullException");
                }

                var details = new ErrorDetails
                {
                    ErrorId      = Guid.NewGuid().ToString(),
                    RequestPath  = context.Request.Path.Value,
                    EndpointPath = context.GetEndpoint()?.ToString(),
                    TimeStamp    = DateTime.Now,
                    Message      = desctiption.Message
                };

                var jsonOptions = new JsonSerializerSettings
                {
                    ContractResolver = new CamelCasePropertyNamesContractResolver(),
                    Formatting       = Formatting.Indented
                };

                string result = null;
                switch (error)
                {
                case UserIsDeletedException _:
                case InvalidOperationException _:
                    response.StatusCode = (int)HttpStatusCode.Conflict;
                    break;

                case DirectoryNotFoundException _:
                case FileNotFoundException _:
                case KeyNotFoundException _:
                case NotFoundException _:
                    response.StatusCode = (int)HttpStatusCode.NotFound;
                    break;

                case ArgumentNullException _:
                case ArgumentOutOfRangeException _:
                case BadImageFormatException _:
                case ArgumentException _:
                case FormatException _:
                case SecurityTokenException _:
                case BadRequestException _:
                    response.StatusCode = (int)HttpStatusCode.BadRequest;
                    break;

                default:
                    response.StatusCode = (int)HttpStatusCode.InternalServerError;
                    result = JsonConvert.SerializeObject(details, jsonOptions);
                    break;
                }

                if (string.IsNullOrWhiteSpace(result))
                {
                    result = JsonConvert.SerializeObject(desctiption, jsonOptions);
                }

                await response.WriteAsync(result);
            }
        }