public ChatMessageResponse Post(ChatMessage request)
        {
            if (request == null) throw new ArgumentNullException("request");

            request.Id = idGenerator.Next();

            messages.Add(request);

            return request.ToResponse();
        }
        public object Delete(ChatMessage request)
        {
            if (request == null) throw new ArgumentNullException("request");

            if (request.Id == default(int)) throw new ArgumentException("Can not delete without an Id");

            messages.RemoveAll(cm => cm.Id == request.Id);

            return new HttpResult(HttpStatusCode.NoContent);
        }
        public ChatMessageResponse Put(ChatMessage request)
        {
            if (request == null) throw new ArgumentNullException("request");

            if (request.Id == default(int)) throw new ArgumentException("Can not update without an Id");

            messages.RemoveAll(cm => cm.Id == request.Id);

            messages.Add(request);

            return request.ToResponse();
        }
        public ChatMessageResponse Get(ChatMessage request)
        {
            if (request == null) throw new ArgumentNullException("request");

            if (request.Id != default(int))
            {
                var message = messages.SingleOrDefault(cm => cm.Id == request.Id);

                return message.ToResponse();
            }

            if (!string.IsNullOrEmpty(request.Receiver))
            {
                var msgs = messages.FindAll(cm => cm.Receiver.Equals(request.Receiver, StringComparison.OrdinalIgnoreCase));

                return new ChatMessageResponse {Messages = new List<ChatMessage>(msgs)};
            }

            var defaultMessage = new ChatMessage {Message = "Server is quite confused by your request."};

            return defaultMessage.ToResponse();
        }
 public void Options(ChatMessage request)
 {
 }