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
                });
            }
        }
Ejemplo n.º 2
0
        // 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);
        }
Ejemplo n.º 3
0
 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)));
 }
Ejemplo n.º 4
0
        // 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());
        }