public object Execute(ExecutorContext context)
        {
            var cmdletContext      = context as CmdletContext;
            var useParameterSelect = this.Select.StartsWith("^");

            // create request and set iteration invariants
            var request = new Amazon.MTurk.Model.ListHITsRequest();

            if (cmdletContext.MaxResult != null)
            {
                request.MaxResults = AutoIterationHelpers.ConvertEmitLimitToServiceTypeInt32(cmdletContext.MaxResult.Value);
            }

            // Initialize loop variant and commence piping
            var _nextToken             = cmdletContext.NextToken;
            var _userControllingPaging = this.NoAutoIteration.IsPresent || ParameterWasBound(nameof(this.NextToken));

            var client = Client ?? CreateClient(_CurrentCredentials, _RegionEndpoint);

            do
            {
                request.NextToken = _nextToken;

                CmdletOutput output;

                try
                {
                    var response = CallAWSServiceOperation(client, request);

                    object pipelineOutput = null;
                    if (!useParameterSelect)
                    {
                        pipelineOutput = cmdletContext.Select(response, this);
                    }
                    output = new CmdletOutput
                    {
                        PipelineOutput  = pipelineOutput,
                        ServiceResponse = response
                    };

                    _nextToken = response.NextToken;
                }
                catch (Exception e)
                {
                    output = new CmdletOutput {
                        ErrorResponse = e
                    };
                }

                ProcessOutput(output);
            } while (!_userControllingPaging && AutoIterationHelpers.HasValue(_nextToken));

            if (useParameterSelect)
            {
                WriteObject(cmdletContext.Select(null, this));
            }


            return(null);
        }
示例#2
0
 internal ListHITsPaginator(IAmazonMTurk client, ListHITsRequest request)
 {
     this._client  = client;
     this._request = request;
 }
 private Amazon.MTurk.Model.ListHITsResponse CallAWSServiceOperation(IAmazonMTurk client, Amazon.MTurk.Model.ListHITsRequest request)
 {
     Utils.Common.WriteVerboseEndpointMessage(this, client.Config, "Amazon MTurk Service", "ListHITs");
     try
     {
         #if DESKTOP
         return client.ListHITs(request);
         #elif CORECLR
         return client.ListHITsAsync(request).GetAwaiter().GetResult();
         #else
                 #error "Unknown build edition"
         #endif
     }
     catch (AmazonServiceException exc)
     {
         var webException = exc.InnerException as System.Net.WebException;
         if (webException != null)
         {
             throw new Exception(Utils.Common.FormatNameResolutionFailureMessage(client.Config, webException.Message), webException);
         }
         throw;
     }
 }
 public object Execute(ExecutorContext context)
 {
     var cmdletContext = context as CmdletContext;
     var useParameterSelect = this.Select.StartsWith("^");
     
     // create request and set iteration invariants
     var request = new Amazon.MTurk.Model.ListHITsRequest();
     
     // Initialize loop variants and commence piping
     System.String _nextToken = null;
     int? _emitLimit = null;
     int _retrievedSoFar = 0;
     if (AutoIterationHelpers.HasValue(cmdletContext.NextToken))
     {
         _nextToken = cmdletContext.NextToken;
     }
     if (AutoIterationHelpers.HasValue(cmdletContext.MaxResult))
     {
         // The service has a maximum page size of 100. If the user has
         // asked for more items than page max, and there is no page size
         // configured, we rely on the service ignoring the set maximum
         // and giving us 100 items back. If a page size is set, that will
         // be used to configure the pagination.
         // We'll make further calls to satisfy the user's request.
         _emitLimit = cmdletContext.MaxResult;
     }
     var _userControllingPaging = this.NoAutoIteration.IsPresent || ParameterWasBound(nameof(this.NextToken));
     
     var client = Client ?? CreateClient(_CurrentCredentials, _RegionEndpoint);
     do
     {
         request.NextToken = _nextToken;
         if (_emitLimit.HasValue)
         {
             int correctPageSize = AutoIterationHelpers.Min(100, _emitLimit.Value);
             request.MaxResults = AutoIterationHelpers.ConvertEmitLimitToInt32(correctPageSize);
         }
         
         CmdletOutput output;
         
         try
         {
             
             var response = CallAWSServiceOperation(client, request);
             object pipelineOutput = null;
             if (!useParameterSelect)
             {
                 pipelineOutput = cmdletContext.Select(response, this);
             }
             output = new CmdletOutput
             {
                 PipelineOutput = pipelineOutput,
                 ServiceResponse = response
             };
             int _receivedThisCall = response.HITs.Count;
             
             _nextToken = response.NextToken;
             _retrievedSoFar += _receivedThisCall;
             if (_emitLimit.HasValue)
             {
                 _emitLimit -= _receivedThisCall;
             }
         }
         catch (Exception e)
         {
             if (_retrievedSoFar == 0 || !_emitLimit.HasValue)
             {
                 output = new CmdletOutput { ErrorResponse = e };
             }
             else
             {
                 break;
             }
         }
         
         ProcessOutput(output);
     } while (!_userControllingPaging && AutoIterationHelpers.HasValue(_nextToken) && (!_emitLimit.HasValue || _emitLimit.Value >= 1));
     
     
     if (useParameterSelect)
     {
         WriteObject(cmdletContext.Select(null, this));
     }
     
     
     return null;
 }
示例#5
0
 /// <summary>
 /// Paginator for ListHITs operation
 ///</summary>
 public IListHITsPaginator ListHITs(ListHITsRequest request)
 {
     return(new ListHITsPaginator(this.client, request));
 }