public override void Invoke(AWSCredentials creds, RegionEndpoint region, int maxItems) { AmazonAppMeshConfig config = new AmazonAppMeshConfig(); config.RegionEndpoint = region; ConfigureClient(config); AmazonAppMeshClient client = new AmazonAppMeshClient(creds, config); ListRoutesResponse resp = new ListRoutesResponse(); do { ListRoutesRequest req = new ListRoutesRequest { NextToken = resp.NextToken , Limit = maxItems }; resp = client.ListRoutes(req); CheckError(resp.HttpStatusCode, "200"); foreach (var obj in resp.Routes) { AddObject(obj); } }while (!string.IsNullOrEmpty(resp.NextToken)); }
/// <summary> /// Unmarshaller the response from the service to the response class. /// </summary> /// <param name="context"></param> /// <returns></returns> public override AmazonWebServiceResponse Unmarshall(JsonUnmarshallerContext context) { ListRoutesResponse response = new ListRoutesResponse(); context.Read(); int targetDepth = context.CurrentDepth; while (context.ReadAtDepth(targetDepth)) { if (context.TestExpression("nextToken", targetDepth)) { var unmarshaller = StringUnmarshaller.Instance; response.NextToken = unmarshaller.Unmarshall(context); continue; } if (context.TestExpression("routes", targetDepth)) { var unmarshaller = new ListUnmarshaller <RouteRef, RouteRefUnmarshaller>(RouteRefUnmarshaller.Instance); response.Routes = unmarshaller.Unmarshall(context); continue; } } return(response); }
/// <summary> /// Handles the ListRoutes request. /// </summary> public override async Task <ListRoutesResponse> ListRoutes(ListRoutesRequest request, ServerCallContext context) { int offset = PaginationHelper.GetOffset(request.PageToken); int pageSize = request.PageSize == 0 ? DEFAULT_PAGE_SIZE : request.PageSize; ListRoutesResponse response = new ListRoutesResponse(); var routes = await this.GetAllRoutes(); response.Routes.Add(routes.Skip(offset).Take(pageSize)); if (routes.Count > offset + pageSize) { response.NextPageToken = PaginationHelper.GetPageToken(offset + pageSize); } return(response); }
public async Task ListRoutes_Paginated() { var response = await this.routesApi.ListRoutes(new ListRoutesRequest() { PageSize = 1 }, null); var expectedResponse = new ListRoutesResponse() { Routes = { new RouteData() { Route = Route.Jsq33Hob, Id = "1024", Name = "Journal Square - 33rd Street (via Hoboken)", Color = "ff9900", Lines = { new RouteData.Types.RouteLine() { DisplayName = "33rd Street (via Hoboken) - Journal Square", Headsign = "Journal Square via Hoboken", Direction = Direction.ToNj }, new RouteData.Types.RouteLine() { DisplayName = "Journal Square - 33rd Street (via Hoboken)", Headsign = "33rd via Hoboken", Direction = Direction.ToNy } } } } }; Assert.AreEqual(expectedResponse.Routes, response.Routes); Assert.IsNotNull(response.NextPageToken); Assert.AreNotEqual(string.Empty, response.NextPageToken); response = await this.routesApi.ListRoutes(new ListRoutesRequest() { PageSize = 1, PageToken = response.NextPageToken }, null); expectedResponse = new ListRoutesResponse() { Routes = { new RouteData() { Route = Route.Hob33, Id = "859", Name = "Hoboken - 33rd Street", Color = "4d92fb", Lines = { new RouteData.Types.RouteLine() { DisplayName = "33rd Street - Hoboken", Headsign = "Hoboken", Direction = Direction.ToNj } } } } }; Assert.AreEqual(expectedResponse.Routes, response.Routes); Assert.AreEqual(string.Empty, response.NextPageToken); }