public async Task<IHttpActionResult> StationServices(string crsCode, string toCrsCode) { using (var darwin = new LDBServiceSoapClient()) { var toResult = darwin.GetArrivalDepartureBoardAsync(DarwinToken, 20, crsCode, toCrsCode, FilterType.to, -30, 60); var fromResult = darwin.GetArrivalDepartureBoardAsync(DarwinToken, 20, crsCode, toCrsCode, FilterType.from, -30, 60); await Task.WhenAll(new[] { toResult, fromResult }); return Ok(new[] { toResult.Result.GetStationBoardResult, fromResult.Result.GetStationBoardResult }); } }
// GET /all/CRS?accessToken=[your token] public async Task <StationBoard> Get(string id, Guid accessToken) { var client = new LDBServiceSoapClient(); var token = MakeAccessToken(accessToken); var board = await client.GetArrivalDepartureBoardAsync(token, 42, id.ToUpperInvariant(), null, FilterType.to, 0, 0); return(board.GetStationBoardResult); }
public async Task <GetArrivalDepartureBoardResponse> GetArrivalDepartureBoardAsync(AccessToken accessToken, ushort numRows, string crs, string filterCrs, FilterType filterType, int timeOffset, int timeWindow) { return (await Execute( () => _client.GetArrivalDepartureBoardAsync(accessToken, numRows, crs, filterCrs, filterType, timeOffset, timeWindow))); }
// GET /{board}/CRS?accessToken=[your token] public async Task <StationBoard> Get([FromUri] StationBoardRequest request) { // Process CRS codes request.Crs = MakeCrsCode(request.Crs); request.FilterCrs = MakeCrsCode(request.FilterCrs); var client = new LDBServiceSoapClient(); // Avoiding Problems with the Using Statement in WCF clients // https://msdn.microsoft.com/en-us/library/aa355056.aspx try { var token = MakeAccessToken(request.AccessToken); if (Board.Departures == request.Board) { var departures = await client.GetDepartureBoardAsync(token, request.NumRows, request.Crs, request.FilterCrs, request.FilterType, 0, 0); return(departures.GetStationBoardResult); } if (Board.Arrivals == request.Board) { var arrivals = await client.GetArrivalBoardAsync(token, request.NumRows, request.Crs, request.FilterCrs, request.FilterType, 0, 0); return(arrivals.GetStationBoardResult); } // Default all (departures and arrivals board) var board = await client.GetArrivalDepartureBoardAsync(token, request.NumRows, request.Crs, request.FilterCrs, request.FilterType, 0, 0); return(board.GetStationBoardResult); } catch (CommunicationException) { client.Abort(); } catch (TimeoutException) { client.Abort(); } catch (Exception) { client.Abort(); throw; } finally { client.Close(); } return(new StationBoard()); }