示例#1
0
        internal async Task <JsonMessageEnvelope> PostMessageAsync(YamsterNewMessage messageToPost)
        {
            var parameters = messageToPost.BuildParameters();

            try
            {
                byte[] result = await this.asyncRestCaller.PostFormAsync("/api/v1/messages", parameters);

                var untypedEnvelope = YamsterApi.ParseJsonResponse <JsonMessageEnvelopeUntyped>(result);
                var envelope        = ConvertArchiveMessageEnvelope(untypedEnvelope);
                return(envelope);
            }
            catch (WebException ex)
            {
                var response = (HttpWebResponse)ex.Response;
                if (response.StatusCode == HttpStatusCode.BadRequest)
                {
                    // Fish out the JSON error message from the response, e.g. something like this:
                    //   {"base":["Cannot reply to deleted message: 12345"]}
                    using (var reader = new StreamReader(ex.Response.GetResponseStream()))
                    {
                        string json = reader.ReadToEnd();
                        throw new YamsterProtocolException("POST failed:\r\n\r\n" + json);
                    }
                }
                throw;
            }
        }
示例#2
0
        public static YamsterNewMessage CreateNewThread(YamsterGroup group)
        {
            if (group == null)
            {
                throw new ArgumentNullException("group");
            }
            var newMessage = new YamsterNewMessage();

            newMessage.Group = group;
            return(newMessage);
        }
示例#3
0
        public static YamsterNewMessage CreateReply(YamsterMessage messageBeingRepliedTo)
        {
            if (messageBeingRepliedTo == null)
            {
                throw new ArgumentNullException("messageRepliedTo");
            }
            var newMessage = new YamsterNewMessage();

            newMessage.MessageBeingRepliedTo = messageBeingRepliedTo;
            newMessage.Group = messageBeingRepliedTo.Group;
            return(newMessage);
        }
示例#4
0
        public async Task <YamsterMessage> PostMessageAsync(YamsterNewMessage messageToPost)
        {
            DateTime nowUtc   = DateTime.UtcNow;
            var      envelope = await this.AppContext.YamsterApi.PostMessageAsync(messageToPost);

            var message = envelope.Messages.Single();

            this.AppContext.MessagePuller.WriteManualEnvelopeToDb(envelope, messageToPost.Group.GroupId, nowUtc);

            var coreMessage = this.yamsterCoreDb.Messages.Query("WHERE [MessageId] = " + message.Id.ToString()).FirstOrDefault();

            if (coreMessage == null)
            {
                return(null);
            }

            this.ProcessDbMessage(coreMessage);
            return(this.GetMessageById(message.Id));
        }