Ejemplo n.º 1
0
        /// <summary>
        ///		Procesa una llamada a la API
        /// </summary>
        private async Task ProcessCallApiAsync(BlockLogModel block, CallApiSentence sentence, CancellationToken cancellationToken)
        {
            List <BaseSentence> sentences = await new Processor.ApiProcessor(this).ProcessAsync(block, sentence, cancellationToken);

            if (sentences.Count > 0)
            {
                await ExecuteAsync(block, sentences, cancellationToken);
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        ///		Procesa una sentencia de llamada
        /// </summary>
        internal async Task <List <BaseSentence> > ProcessAsync(BlockLogModel block, CallApiSentence sentence, CancellationToken cancellationToken)
        {
            HttpClientManager   client    = new HttpClientManager(new Uri(TransformVariables(sentence.Url)), TransformVariables(sentence.User), TransformVariables(sentence.Password));
            List <BaseSentence> sentences = new List <BaseSentence>();

            // Ejecuta las sentencias
            foreach (CallApiMethodSentence method in sentence.Methods)
            {
                if (!HasError && !cancellationToken.IsCancellationRequested)
                {
                    sentences.AddRange(await ExecuteMethodAsync(block, method, client, cancellationToken));
                }
            }
            // Devuelve las sentencias que hay que ejecutar
            return(sentences);
        }
Ejemplo n.º 3
0
        /// <summary>
        ///		Carga una sentencia de deifinición de API
        /// </summary>
        private BaseSentence LoadApiDefinitionSentence(MLNode rootML)
        {
            CallApiSentence sentence = new CallApiSentence();

            // Asigna las propiedades
            AssignDefaultProperties(sentence, rootML);
            sentence.Url      = rootML.Attributes[TagUrl].Value.TrimIgnoreNull();
            sentence.User     = rootML.Attributes[TagUser].Value.TrimIgnoreNull();
            sentence.Password = rootML.Attributes[TagPassword].Value.TrimIgnoreNull();
            // Obtiene los métodos
            foreach (MLNode nodeML in rootML.Nodes)
            {
                if (nodeML.Name == TagMethod)
                {
                    sentence.Methods.Add(LoadMethod(nodeML));
                }
            }
            // Devuelve la sentencia
            return(sentence);
        }