Пример #1
0
        /// <summary>
        /// Установка данных запросов
        /// </summary>
        /// <param name="sourceXmlDocument">xmlDocument от которого отправляется запрос</param>
        /// <param name="templateElement">xmlElement с входящими настройками запроса</param>
        /// <param name="request">экземпляр запроса</param>
        private void SetRequestData(xmlDocument sourceXmlDocument, xmlElement templateElement, Request request)
        {
            string RequestFormat = templateElement.GetAttribute("RequestFormat");
            string dataContent   = "";

            if (templateElement.GetAttribute("MethodQuery") != "")
            {
                dataContent = sourceXmlDocument.Root.XQuery(templateElement.GetAttribute("MethodQuery"));
            }
            if (request.ContentType == "multipart/form-data")
            {
                //Устанавливаем данные для multipart/form-data-запросов
                request.DataContent = request.SetMultipartFormData();
            }

            if (string.IsNullOrEmpty(RequestFormat) || RequestFormat == "XML" || RequestFormat == "Without conversion")
            {
                //Устанавливаем данные для POST-запросов
                request.SetData(dataContent);
            }
            else
            {
                if (!string.IsNullOrEmpty(dataContent))
                {
                    XmlDocument doc = new XmlDocument();
                    doc.LoadXml(dataContent);
                    dataContent = JsonConvert.SerializeXmlNode(doc, Newtonsoft.Json.Formatting.None, true);
                    request.SetData(dataContent.Replace(",null", ""));
                }
            }
        }
Пример #2
0
        /// <summary>
        /// Создает екземпляры Запросов от контекста каждого объекта в Индексе
        /// </summary>
        /// <param name="templateElement">Метод с параметрами</param>
        private bool MakeRequestsFromObjIndex(xmlElement templateElement)
        {
            string XqueryForObjects = templateElement.GetAttribute("XqueryForObjects");

            var objcs = Class.XQuery(XqueryForObjects);

            xmlDocument objs = new xmlDocument(objcs);

            if (objs.Root == null)
            {
                return(false);
            }

            foreach (var node in objs.Root.ChildElements)
            {
                Object      sourceObject      = GetSourceTargetObject(node);
                xmlDocument sourceXmlDocument = new xmlDocument(sourceObject.Root.XML);
                UpdateTemplateObject(sourceXmlDocument);

                if (sourceXmlDocument.Root.XQuery(templateElement.GetAttribute("NeedWork")) == "False")
                {
                    continue;
                }

                // Формируем запрос к сторонней БД
                if (CreateAndFillRequest(sourceObject, sourceXmlDocument, templateElement))
                {
                    sourceObject.Save(sourceXmlDocument.Root.XML);
                }
            }
            return(true);
        }
Пример #3
0
        /// <summary>
        /// Запись Данных в екземпляр запроса
        /// </summary>
        /// <param name="obj">Объект от которого отправляется запрос</param>
        /// <param name="sourceElement">xmlElement с входящими настройками запроса</param>
        /// <param name="request">екземпляр запроса</param>
        private void SetRequestData(Object obj, xmlElement sourceElement, Request request)
        {
            string RequestFormat = sourceElement.GetAttribute("RequestFormat");
            string dataString    = "";

            if (sourceElement.GetAttribute("MethodQuery") != "")
            {
                dataString = obj.XQuery(sourceElement.GetAttribute("MethodQuery"));
            }

            if (string.IsNullOrEmpty(RequestFormat) || RequestFormat == "XML" || RequestFormat == "Without conversion")
            {
                //Устанавливаем данные для POST-запросов
                request.SetData(dataString);
            }
            else
            {
                if (!string.IsNullOrEmpty(dataString))
                {
                    XmlDocument doc = new XmlDocument();
                    doc.LoadXml(dataString);
                    dataString = JsonConvert.SerializeXmlNode(doc, Newtonsoft.Json.Formatting.None, true);
                    request.SetData(dataString.Replace(",null", ""));
                }
            }
        }
Пример #4
0
        /// <summary>
        /// Создает екземпляры Запросов от контекста каждого объекта в Индексе
        /// </summary>
        /// <param name="sourceElement">Метод с параметрами</param>
        void MakeRequestsFromObjIndex(xmlElement sourceElement)
        {
            string XqueryForObjects = sourceElement.GetAttribute("XqueryForObjects");

            var objcs = Class.XQuery(XqueryForObjects);

            xmlDocument objs = new xmlDocument(objcs);

            if (objs.Root == null)
            {
                return;
            }

            foreach (var i in objs.Root.ChildElements)
            {
                Object CurrentObj = GetCurrentTargetObject(i);

                UpdateSourceObject(CurrentObj);

                if (CurrentObj.XQuery(sourceElement.GetAttribute("NeedWork")) == "False")
                {
                    continue;
                }

                Request request = new Request(SourceObject, CurrentObj, sourceElement)
                {
                    TargetClass = Class
                };

                SetRequestData(CurrentObj, sourceElement, request);

                Session.ExecuteQuery(request);
            }
        }
Пример #5
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="sourceObject">Объект от которого отправляется запрос</param>
 /// <param name="sourceXmlDocument">xmlDocument от которого отправляется запрос</param>
 /// <param name="templateElement">xmlElement с входящими настройками запроса</param>
 /// <returns></returns>
 private bool MakeSimpleRequests(Object sourceObject, xmlDocument sourceXmlDocument, xmlElement templateElement)
 {
     if (sourceXmlDocument.Root.XQuery(templateElement.GetAttribute("NeedWork")) == "False")
     {
         Messages.showMessage("АпиКоннектор: NeedWork = false. XQ - " + templateElement.GetAttribute("NeedWork"));
         return(false);
     }
     Messages.showMessage("АпиКоннектор: Выполнение запроса NeedWork. XQ - " + templateElement.GetAttribute("NeedWork"));
     if (!string.IsNullOrEmpty(TemplateObject.GetAttrValue("XquryObj")))
     {
         UpdateTemplateObject(sourceXmlDocument);
     }
     // Формируем запрос к сторонней БД
     return(CreateAndFillRequest(sourceObject, sourceXmlDocument, templateElement));
 }
Пример #6
0
        internal Request(Object sourceObject, Object templateObject, xmlDocument sourceXmlDocument, xmlElement templateElem)
        {
            clientHendler.ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) => { return(true); };
            httpClient = new HttpClient(clientHendler);

            TemplateObject    = templateObject;
            SourceObject      = sourceObject;
            SourceXmlDocument = sourceXmlDocument;
            TemplateElement   = templateElem;


            ContentType = TemplateElement.GetAttribute("ContentType");
            MethodType  = TemplateElement.GetAttribute("MethodDispatch");

            SetHeaders();
        }
        /// <summary>
        /// Поиск файла типа (File)
        /// </summary>
        /// <param name="fileElement">XML елемент с входными данными</param>
        /// <returns>Найденый файл</returns>
        private File GetFileFromObject(xmlElement fileElement)
        {
            string fileName;
            string fileLink = fileElement.GetAttribute("link");

            if (string.IsNullOrEmpty(fileLink))
            {
                fileName = fileElement.GetAttribute("file");
            }
            else
            {
                fileName = fileLink.Remove(0, fileLink.IndexOf("/") + 1);
            }

            if (string.IsNullOrEmpty(fileName))
            {
                throw new Exception("АпиКоннектор: Не указанно имя файла для отправки");
            }

            return(sourceObject.Dir.Files.getFile(fileName));
        }
Пример #8
0
        /// <summary>
        /// Запись Лога об успешном выполнении
        /// </summary>
        /// <param name="SourceObj">Объект ApiConnector`a c параметрами REST запроса</param>
        /// <param name="SourceElement">Елемент объекта ApiConnector`a c параметрами REST запроса</param>
        /// <param name="xDoc">xmlDocument ответа</param>
        /// <param name="RequestURL">URL Запроса</param>
        /// <param name="RequestData">Данные Запроса</param>
        internal static void Log(Object SourceObj, xmlElement SourceElement, xmlDocument xDoc, string RequestURL, string RequestData)
        {
            // Выполняем поиск объекта для ведения логов
            Class  cls    = SourceObj.Class.Domain.FindClass(SourceObj.Root.XQuery("string(LogClass/@link)"));
            string Xqury  = SourceElement.GetAttribute("LogXqury");
            string LogXml = xDoc.XQuery(Xqury);

            if (cls != null)
            {
                if (!String.IsNullOrEmpty(LogXml))
                {
                    CreateLog(cls, RequestURL, RequestData, LogXml);
                }
                else
                {
                    CreateLog(cls, RequestURL, RequestData, xDoc);
                }
            }
        }
Пример #9
0
        /// <summary>
        /// Отправка одиночного запроса
        /// </summary>
        /// <param name="obj">Объект от которого отправляется запрос</param>
        /// <param name="sourceElement">xmlElement с входящими настройками запроса</param>
        void MakeSimpleRequests(Object obj, xmlElement sourceElement)
        {
            if (obj.XQuery(sourceElement.GetAttribute("NeedWork")) == "False")
            {
                return;
            }

            if (!string.IsNullOrEmpty(SourceObject.GetAttrValue("XquryObj")))
            {
                UpdateSourceObject(obj);
            }
            // Формируем запрос к сторонней БД

            Request request = new Request(SourceObject, obj, sourceElement)
            {
                TargetClass = Class
            };

            SetRequestData(obj, sourceElement, request);

            // Выполняем запрос к сторонней БД
            Session.ExecuteQuery(request);
        }
 private string GetParamKey(xmlElement textParam)
 {
     return(textParam.GetAttribute("Key"));
 }
 private string GetParamValue(xmlElement textParam)
 {
     return(sourceObject.XQuery(textParam.GetAttribute("ValueXQ")));
 }