Beispiel #1
0
        // GET /arrivals/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.GetArrivalBoardAsync(token, 42, id.ToUpperInvariant(), null, FilterType.to, 0, 0);

            return(board.GetStationBoardResult);
        }
Beispiel #2
0
 public async Task <GetArrivalBoardResponse> GetArrivalBoardAsync(AccessToken accessToken, ushort numRows,
                                                                  string crs, string filterCrs,
                                                                  FilterType filterType, int timeOffset, int timeWindow)
 {
     return
         (await
          Execute(
              () =>
              _client.GetArrivalBoardAsync(accessToken, numRows, crs, filterCrs, filterType, timeOffset,
                                           timeWindow)));
 }
Beispiel #3
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());
        }