Ejemplo n.º 1
0
        /// <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);
            }
        }
Ejemplo n.º 2
0
        /// <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);
        }
Ejemplo n.º 3
0
        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);
        }