Exemplo n.º 1
0
        static void Main02(string[] args)
        {
            ConversationListRequest req = new ConversationListRequest.Builder()
                                          .SetAccessToken("")
                                          .SetType((int)ConversationListRequest.Types.FilterType.DEFAULT)
                                          .Build();

            byte[] buffer = req.ToByteArray();

            HttpClient client = new HttpClient();

            client.BaseAddress = new Uri("http://localhost:8080/");
            ByteArrayContent content = new ByteArrayContent(buffer);

            content.Headers.Add("Content-Type", "application/octet-stream");
            Stream respStream             = client.PostAsync("mars/getconvlist", content).Result.Content.ReadAsStreamAsync().Result;
            ConversationListResponse resp = ConversationListResponse.ParseFrom(respStream);

            foreach (var c in resp.ListList)
            {
                "get conversation: name={0}, topic={1}, notice={2}".Log(c.Name, c.Topic, c.Notice);
            }

            /*
             *  get conversation: name=Mars, topic=0, notice=STN Discuss
             *  get conversation: name=Mars, topic=1, notice=Xlog Discuss
             *  get conversation: name=Mars, topic=2, notice=SDT Discuss
             */
            Console.Read();
        }
Exemplo n.º 2
0
        public IActionResult Post()
        {
            Program.Logger.LogDebug("Handling conversation/list request");
            var invalidResult = this.ProcessRequest <ConversationListRequest>(out var request, out var apiKey);

            if (invalidResult != null)
            {
                return(invalidResult);
            }

            Program.Logger.LogDebug($"Parsed the request. Request: {request}");
            Debug.Assert(Program.DataStorage != null, "Program.DataStorage != null");

            var response = new ConversationListResponse(Program.DataStorage.Conversations
                                                        .Where(c =>
            {
                Debug.Assert(request != null, nameof(request) + " != null");

                return(Program.GetUserByName(c.First)?.ApiKey == apiKey ||
                       Program.GetUserByName(c.Second)?.ApiKey == apiKey);
            })
                                                        .Select(c =>
            {
                Debug.Assert(request != null, nameof(request) + " != null");
                var interlocutor = Program.GetUserByName(c.First);
                Debug.Assert(interlocutor != null, nameof(interlocutor) + " != null");

                return(new ConversationListResponse.Conversation(
                           (interlocutor.ApiKey.ToString().Equals(request.ApiKey)
                            ? Program.GetUserByName(c.First)
                            : Program.GetUserByName(c.Second))?.Name.ToString(),
                           c.Messages
                           .Select(m =>
                {
                    var sender = Program.GetUserByName(m.Sender);

                    Debug.Assert(sender != null, nameof(sender) + " != null");
                    return new ConversationListResponse.Conversation.Message(sender.Name.ToString(),
                                                                             m.Value,
                                                                             m.TimeStamp);
                })
                           .ToList()));
            })
                                                        .ToList());

            Program.Logger.LogDebug($"Formed the response. Response: {response}");
            return(response.CreateContent());
        }