Inheritance: IWebRequestInvoker
Example #1
0
        ErrorResultTO TryExecute(IDSFDataObject dataObject, int update, ErrorResultTO allErrors)
        {
            allErrors.MergeErrors(_errorsTo);
            if (dataObject.IsDebugMode())
            {
                var debugItem = new DebugItem();
                AddDebugItem(new DebugEvalResult(Url, "URL", dataObject.Environment, update), debugItem);
                _debugInputs.Add(debugItem);
            }
            var colItr    = new WarewolfListIterator();
            var urlitr    = new WarewolfIterator(dataObject.Environment.Eval(Url, update));
            var headerItr = new WarewolfIterator(dataObject.Environment.Eval(Headers, update));

            colItr.AddVariableToIterateOn(urlitr);
            colItr.AddVariableToIterateOn(headerItr);
            const int IndexToUpsertTo = 1;

            while (colItr.HasMoreData())
            {
                var c           = colItr.FetchNextValue(urlitr);
                var headerValue = colItr.FetchNextValue(headerItr);
                var headers     = string.IsNullOrEmpty(headerValue)
                    ? new string[0]
                    : headerValue.Split(new[] { '\n', '\r', ';' }, StringSplitOptions.RemoveEmptyEntries);

                var headersEntries = new List <Tuple <string, string> >();

                foreach (var header in headers)
                {
                    var headerSegments = header.Split(':');
                    headersEntries.Add(new Tuple <string, string>(headerSegments[0], headerSegments[1]));

                    if (dataObject.IsDebugMode())
                    {
                        var debugItem = new DebugItem();
                        AddDebugItem(new DebugEvalResult(Headers, "Header", dataObject.Environment, update), debugItem);
                        _debugInputs.Add(debugItem);
                    }
                }

                var result = WebRequestInvoker.ExecuteRequest(Method, c, headersEntries);
                allErrors.MergeErrors(_errorsTo);
                var expression = GetExpression(IndexToUpsertTo);
                PushResultsToDataList(expression, result, dataObject, update);
            }
            return(allErrors);
        }
        private int IncrementDataListCounter(IDSFDataObject dataObject, int update, ErrorResultTO allErrors, int counter, string c, List <Tuple <string, string> > headersEntries, bool timeoutSecondsError)
        {
            if (!timeoutSecondsError)
            {
                var result = WebRequestInvoker.ExecuteRequest(Method,
                                                              c,
                                                              headersEntries, TimeoutSeconds == 0 ? Timeout.Infinite : TimeoutSeconds * 1000 // important to list the parameter name here to see the conversion from seconds to milliseconds
                                                              );

                allErrors.MergeErrors(_errorsTo);
                PushResultsToDataList(Result, result, dataObject, update == 0 ? counter : update);
                counter++;
            }
            else
            {
                throw new ApplicationException("Execution aborted - see error messages.");
            }

            return(counter);
        }
Example #3
0
        /// <summary>
        ///     When overridden runs the activity's execution logic
        /// </summary>
        /// <param name="context">The context to be used.</param>
        protected override void OnExecute(NativeActivityContext context)
        {
            _debugOutputs.Clear();
            _debugInputs.Clear();
            if (WebRequestInvoker == null)
            {
                return;
            }
            var dataObject  = context.GetExtension <IDSFDataObject>();
            var compiler    = DataListFactory.CreateDataListCompiler();
            var dlId        = dataObject.DataListID;
            var allErrors   = new ErrorResultTO();
            var executionId = DataListExecutionID.Get(context);
            var toUpsert    = Dev2DataListBuilderFactory.CreateStringDataListUpsertBuilder(true);

            toUpsert.IsDebug = dataObject.IsDebugMode();

            InitializeDebug(dataObject);
            try
            {
                var expressionsEntry = compiler.Evaluate(executionId, enActionType.User, Url, false, out errorsTo);
                allErrors.MergeErrors(errorsTo);
                var headersEntry = compiler.Evaluate(executionId, enActionType.User, Headers, false, out errorsTo);
                allErrors.MergeErrors(errorsTo);
                if (dataObject.IsDebugMode())
                {
                    DebugItem debugItem = new DebugItem();
                    if (expressionsEntry == null)
                    {
                        AddDebugItem(new DebugItemStaticDataParams("", Url, "URL"), debugItem);
                    }
                    else
                    {
                        AddDebugItem(new DebugItemVariableParams(Url, "URL", expressionsEntry, executionId), debugItem);
                    }
                    _debugInputs.Add(debugItem);
                }
                var colItr    = Dev2ValueObjectFactory.CreateIteratorCollection();
                var urlitr    = Dev2ValueObjectFactory.CreateEvaluateIterator(expressionsEntry);
                var headerItr = Dev2ValueObjectFactory.CreateEvaluateIterator(headersEntry);
                colItr.AddIterator(urlitr);
                colItr.AddIterator(headerItr);
                const int IndexToUpsertTo = 1;
                while (colItr.HasMoreData())
                {
                    var c           = colItr.FetchNextRow(urlitr);
                    var headerValue = colItr.FetchNextRow(headerItr).TheValue;
                    var headers     = string.IsNullOrEmpty(headerValue)
                                      ? new string[0]
                                      : headerValue.Split(new[] { '\n', '\r', ';' }, StringSplitOptions.RemoveEmptyEntries);

                    var headersEntries = new List <Tuple <string, string> >();

                    foreach (var header in headers)
                    {
                        var headerSegments = header.Split(':');
                        headersEntries.Add(new Tuple <string, string>(headerSegments[0], headerSegments[1]));

                        if (dataObject.IsDebugMode())
                        {
                            DebugItem debugItem = new DebugItem();
                            AddDebugItem(new DebugItemVariableParams(Headers, "Header", headersEntry, executionId), debugItem);
                            _debugInputs.Add(debugItem);
                        }
                    }

                    var result = WebRequestInvoker.ExecuteRequest(Method, c.TheValue, headersEntries);
                    allErrors.MergeErrors(errorsTo);
                    var expression = GetExpression(IndexToUpsertTo);
                    PushResultsToDataList(expression, toUpsert, result, dataObject, executionId, compiler, allErrors);
                }
            }
            catch (Exception e)
            {
                Dev2Logger.Log.Error("DSFWebGetRequest", e);
                allErrors.AddError(e.Message);
            }
            finally
            {
                if (allErrors.HasErrors())
                {
                    DisplayAndWriteError("DsfWebGetRequestActivity", allErrors);
                    compiler.UpsertSystemTag(dlId, enSystemTag.Dev2Error, allErrors.MakeDataListReady(), out errorsTo);
                    var expression = GetExpression(1);
                    PushResultsToDataList(expression, toUpsert, null, dataObject, executionId, compiler, allErrors);
                }
                if (dataObject.IsDebugMode())
                {
                    DispatchDebugState(context, StateType.Before);
                    DispatchDebugState(context, StateType.After);
                }
            }
        }
        protected override void ExecuteTool(IDSFDataObject dataObject, int update)
        {
            _debugOutputs.Clear();
            _debugInputs.Clear();
            if (WebRequestInvoker == null)
            {
                return;
            }

            var allErrors = new ErrorResultTO();

            InitializeDebug(dataObject);
            try
            {
                allErrors.MergeErrors(errorsTo);
                if (dataObject.IsDebugMode())
                {
                    DebugItem debugItem = new DebugItem();
                    AddDebugItem(new DebugEvalResult(Url, "URL", dataObject.Environment, update), debugItem);
                    _debugInputs.Add(debugItem);
                }
                var colItr    = new WarewolfListIterator();
                var urlitr    = new WarewolfIterator(dataObject.Environment.Eval(Url, update));
                var headerItr = new WarewolfIterator(dataObject.Environment.Eval(Headers, update));
                colItr.AddVariableToIterateOn(urlitr);
                colItr.AddVariableToIterateOn(headerItr);
                while (colItr.HasMoreData())
                {
                    var c           = colItr.FetchNextValue(urlitr);
                    var headerValue = colItr.FetchNextValue(headerItr);
                    var headers     = string.IsNullOrEmpty(headerValue)
                        ? new string[0]
                        : headerValue.Split(new[] { '\n', '\r', ';' }, StringSplitOptions.RemoveEmptyEntries);

                    var headersEntries = new List <Tuple <string, string> >();

                    foreach (var header in headers)
                    {
                        var headerSegments = header.Split(':');
                        headersEntries.Add(new Tuple <string, string>(headerSegments[0], headerSegments[1]));

                        if (dataObject.IsDebugMode())
                        {
                            DebugItem debugItem = new DebugItem();
                            AddDebugItem(new DebugEvalResult(Headers, "Header", dataObject.Environment, update), debugItem);
                            _debugInputs.Add(debugItem);
                        }
                    }
                    bool timeoutSecondsError = false;
                    if (!string.IsNullOrEmpty(TimeOutText))
                    {
                        int timeoutval;
                        if (int.TryParse(WarewolfDataEvaluationCommon.EvalResultToString(dataObject.Environment.Eval(TimeOutText, update)), out timeoutval))
                        {
                            if (timeoutval < 0)
                            {
                                allErrors.AddError(string.Format("Value of TimeoutSecondsText out of range: please specify a value between 0 and {0}.", int.MaxValue));
                                timeoutSecondsError = true;
                            }
                            else
                            {
                                TimeoutSeconds = timeoutval;
                            }
                        }
                        else
                        {
                            allErrors.AddError(string.Format("Value {0} for TimeoutSecondsText could not be interpreted as a numeric value.", TimeOutText));
                            timeoutSecondsError = true;
                        }

                        if (dataObject.IsDebugMode())
                        {
                            DebugItem debugItem = new DebugItem();
                            AddDebugItem(new DebugEvalResult(String.IsNullOrEmpty(TimeOutText) ? "100" : TimeOutText, "Time Out Seconds", dataObject.Environment, update), debugItem);
                            _debugInputs.Add(debugItem);
                        }
                    }

                    if (!timeoutSecondsError)
                    {
                        var result = WebRequestInvoker.ExecuteRequest(Method,
                                                                      c,
                                                                      headersEntries, (TimeoutSeconds == 0 ? Timeout.Infinite : TimeoutSeconds * 1000) // important to list the parameter name here to see the conversion from seconds to milliseconds
                                                                      );

                        allErrors.MergeErrors(errorsTo);
                        PushResultsToDataList(Result, result, dataObject, update);
                    }
                    else
                    {
                        throw new ApplicationException("Execution aborted - see error messages.");
                    }
                }
            }
            catch (Exception e)
            {
                Dev2Logger.Log.Error("DSFWebGetRequest", e);
                allErrors.AddError(e.Message);
            }
            finally
            {
                if (allErrors.HasErrors())
                {
                    DisplayAndWriteError("DsfWebGetRequestActivity", allErrors);
                    var errorString = allErrors.MakeDisplayReady();
                    dataObject.Environment.AddError(errorString);
                    var expression = GetExpression(1);
                    PushResultsToDataList(expression, null, dataObject, update);
                }
                if (dataObject.IsDebugMode())
                {
                    DispatchDebugState(dataObject, StateType.Before, update);
                    DispatchDebugState(dataObject, StateType.After, update);
                }
            }
        }
        protected override void ExecuteTool(IDSFDataObject dataObject, int update)
        {
            _debugOutputs.Clear();
            _debugInputs.Clear();
            if (WebRequestInvoker == null)
            {
                return;
            }

            var allErrors = new ErrorResultTO();

            InitializeDebug(dataObject);
            try
            {
                allErrors.MergeErrors(errorsTo);
                if (dataObject.IsDebugMode())
                {
                    DebugItem debugItem = new DebugItem();
                    AddDebugItem(new DebugEvalResult(Url, "URL", dataObject.Environment, update), debugItem);
                    _debugInputs.Add(debugItem);
                }
                var colItr    = new WarewolfListIterator();
                var urlitr    = new WarewolfIterator(dataObject.Environment.Eval(Url, update));
                var headerItr = new WarewolfIterator(dataObject.Environment.Eval(Headers, update));
                colItr.AddVariableToIterateOn(urlitr);
                colItr.AddVariableToIterateOn(headerItr);
                const int IndexToUpsertTo = 1;
                while (colItr.HasMoreData())
                {
                    var c           = colItr.FetchNextValue(urlitr);
                    var headerValue = colItr.FetchNextValue(headerItr);
                    var headers     = string.IsNullOrEmpty(headerValue)
                        ? new string[0]
                        : headerValue.Split(new[] { '\n', '\r', ';' }, StringSplitOptions.RemoveEmptyEntries);

                    var headersEntries = new List <Tuple <string, string> >();

                    foreach (var header in headers)
                    {
                        var headerSegments = header.Split(':');
                        headersEntries.Add(new Tuple <string, string>(headerSegments[0], headerSegments[1]));

                        if (dataObject.IsDebugMode())
                        {
                            DebugItem debugItem = new DebugItem();
                            AddDebugItem(new DebugEvalResult(Headers, "Header", dataObject.Environment, update), debugItem);
                            _debugInputs.Add(debugItem);
                        }
                    }

                    var result = WebRequestInvoker.ExecuteRequest(Method, c, headersEntries);
                    allErrors.MergeErrors(errorsTo);
                    var expression = GetExpression(IndexToUpsertTo);
                    PushResultsToDataList(expression, result, dataObject, update);
                }
            }
            catch (Exception e)
            {
                Dev2Logger.Log.Error("DSFWebGetRequest", e);
                allErrors.AddError(e.Message);
            }
            finally
            {
                if (allErrors.HasErrors())
                {
                    DisplayAndWriteError("DsfWebGetRequestActivity", allErrors);
                    var errorString = allErrors.MakeDisplayReady();
                    dataObject.Environment.AddError(errorString);
                    var expression = GetExpression(1);
                    PushResultsToDataList(expression, null, dataObject, update);
                }
                if (dataObject.IsDebugMode())
                {
                    DispatchDebugState(dataObject, StateType.Before, update);
                    DispatchDebugState(dataObject, StateType.After, update);
                }
            }
        }