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; } }
public static YamsterNewMessage CreateNewThread(YamsterGroup group) { if (group == null) { throw new ArgumentNullException("group"); } var newMessage = new YamsterNewMessage(); newMessage.Group = group; return(newMessage); }
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); }
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)); }