/// <summary> /// Возвращает указанное сообщение /// </summary> /// <param name="messageId">id сообщения</param> /// <returns></returns> public static Message GetMessage(string messageId) { System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12; //формировании url запроса string reqURL = url + "messages/" + messageId;// /v1/messages/<id сообщения>/ //отправка запроса на сервер var client = new RestClient(reqURL); var request = new RestRequest(Method.GET); request.AddHeader("authorization", Configer.GetToken()); IRestResponse response = client.Execute(request); dynamic dynObj = JsonConvert.DeserializeObject(response.Content);//парсим json if (dynObj.status == "success") { Message message = new Message { ID = dynObj.data.id, text = dynObj.data.text, type = dynObj.data.type, read = Boolean.Parse(dynObj.data.read.ToString()), created = DateTimeOffset.ParseExact(dynObj.data.created.ToString().Replace("UTC", "GMT"), "yyyy'-'MM'-'dd'T'HH':'mm':'ss GMT", null).UtcDateTime.AddHour(Configer.GetOffset()), clientID = dynObj.data.client_id, transport = dynObj.data.transport, }; return(message); } else { return(null); } }
/// <summary> /// Возвращает список сообщений /// </summary> /// <param name="type">фильтр по типу</param> /// <param name="read">фильтр по прочитанным или непрочитанным</param> /// <param name="setRead">указывает необходимо ли пометить полученные сообщения как прочитанные</param> /// <returns></returns> public static MessagesResponse GetMessages(string type, bool?read, int?limit, bool setRead, string dialog_id, int offset = 0) { string reqURL = url + "messages"; //формирование URL строки с параметрами var uriBuilder = new UriBuilder(reqURL); var query = HttpUtility.ParseQueryString(uriBuilder.Query); if (type != null) { query["type"] = type; } if (read != null) { query["read"] = read.ToString(); } if (limit != null) { query["limit"] = limit.ToString(); } if (dialog_id != null) { query["dialog_id"] = dialog_id; } query["offset"] = offset.ToString(); uriBuilder.Query = query.ToString(); reqURL = uriBuilder.ToString(); //отправка запроса на сервер var client = new RestClient(reqURL); var request = new RestRequest(Method.GET); request.AddHeader("authorization", Configer.GetToken()); IRestResponse response = client.Execute(request); //получение коллекции сообщений List <Message> messages = new List <Message>(); dynamic dynObj = JsonConvert.DeserializeObject(response.Content);//парсим json if (dynObj.data != null) { foreach (dynamic dynMessage in dynObj.data) { Message message = new Message { ID = dynMessage.id.ToString(), text = dynMessage.text.ToString(), type = dynMessage.type.ToString(), read = bool.Parse(dynMessage.read.ToString()), created = DateTimeOffset.ParseExact(dynMessage.created.ToString().Replace("UTC", "GMT"), "yyyy'-'MM'-'dd'T'HH':'mm':'ss GMT", null).UtcDateTime.AddHours(Configer.GetOffset()), clientID = dynMessage.client_id.ToString(), transport = dynMessage.transport.ToString(), dialog_id = dynMessage.dialog_id.ToString() }; if (setRead) //если пометить полученные сообщения как прочитанные { SetRead(message.ID, true); } messages.Add(message); } } MessagesResponse messagesResponse = new MessagesResponse { messages = messages, info = new MessagesResponse.MetaInfo { total = Int32.Parse(dynObj.meta.total.ToString()), limit = Int32.Parse(dynObj.meta.limit.ToString()) } }; return(messagesResponse); }
public static Dialog Get(int id) {//возвращает диалог Dialog dlg = new Dialog(); var client = new RestClient(Rest + id.ToString()); var request = new RestRequest(Method.GET); request.AddHeader("authorization", Configer.GetToken()); IRestResponse response = client.Execute(request); dynamic DynObj = JsonConvert.DeserializeObject(response.Content); dynamic dialog = DynObj.data; if (DynObj == null || DynObj.status == "error") { dlg.error = "Такого диалога не существует или произошла ошибка в запросе."; return(dlg); } dlg.ID = dialog.id; dlg.state = dialog.state; dlg.begin = DateTimeOffset.ParseExact(dialog.begin.ToString().Replace("UTC", "GMT"), "yyyy'-'MM'-'dd'T'HH':'mm':'ss GMT", null).UtcDateTime.AddHours(Configer.GetOffset()); if (dlg.end != null) { dlg.end = DateTimeOffset.ParseExact(dialog.end.ToString().Replace("UTC", "GMT"), "yyyy'-'MM'-'dd'T'HH':'mm':'ss GMT", null).UtcDateTime.AddHours(Configer.GetOffset()); } return(dlg); }