コード例 #1
0
ファイル: Edit.cshtml.cs プロジェクト: antoine2205/cloud
        public async Task <IActionResult> OnGetAsync(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            Delay = await _context.Delay
                    .Include(d => d.Ticket).FirstOrDefaultAsync(m => m.ID == id);

            if (Delay == null)
            {
                return(NotFound());
            }

            ViewData["TicketID"] = new SelectList(_context.Set <Ticket>(), "ID", "TicketName");

            using (var httpClient = new HttpClient())
            {
                using (var response = await httpClient.GetAsync("http://api.irail.be/stations/?format=json&lang=en"))
                {
                    string apiResponse = await response.Content.ReadAsStringAsync();

                    StationApi stationApi = new StationApi();
                    stationApi  = JsonConvert.DeserializeObject <StationApi>(apiResponse);
                    StationApiQ = stationApi.Station.AsQueryable <TrainStation>().OrderBy(s => s.Name);
                }
            }

            return(Page());
        }
コード例 #2
0
        protected override void HandleRequest()
        {
            string stationToken = Parameters["session_token"];
            string userID       = Parameters["user_ID"];

            if (stationToken == null || userID == null)
            {
                throw new FormatException("One of parameters is missing: email/password/session_token/userID");
            }

            StationApi.SignOff(new WebClient(), stationId, stationToken, userID);



            Model.DriverCollection.Instance.Remove(Query.EQ("_id", userID));

            Driver driver = Model.DriverCollection.Instance.FindOne();

            if (driver == null)
            {
                Model.StationCollection.Instance.RemoveAll();
            }


            RespondSuccess();
        }
コード例 #3
0
        private string SignUpStation(string email, string password, WebClient agent)
        {
            StationApi api = StationApi.SignUp(agent, stationId, email, password);

            api.LogOn(agent, StatusChecker.GetDetail());
            return(api.Token);
        }
コード例 #4
0
        public async Task OnGetAsync(string sortOrder, string searchString, int?pageIndex)
        {
            currentSort   = sortOrder;
            IdSort        = String.IsNullOrEmpty(sortOrder) ? "id_desc" : "";
            NameSort      = sortOrder == "name_desc" ? "name_asce" : "name_desc";
            CurrentFilter = searchString;

            /*ApiClient<TrainStation> apiClient = new ApiClient<TrainStation>(new Uri("http://api.irail.be"));
             * List<TrainStation> trainStations = await apiClient.GetStrainStations();
             * IQueryable<TrainStation> stationApiQ = trainStations.AsQueryable<TrainStation>;*/

            IQueryable <TrainStation> stationApiQ;

            using (var httpClient = new HttpClient())
            {
                using (var response = await httpClient.GetAsync("http://api.irail.be/stations/?format=json&lang=en"))
                {
                    string apiResponse = await response.Content.ReadAsStringAsync();

                    StationApi stationApi = new StationApi();
                    stationApi  = JsonConvert.DeserializeObject <StationApi>(apiResponse);
                    stationApiQ = stationApi.Station.AsQueryable <TrainStation>();
                }
            }

            if (!String.IsNullOrEmpty(searchString))
            {
                stationApiQ = stationApiQ.Where(s => s.Name.Contains(searchString) ||
                                                s.ID.Contains(searchString));
            }

            switch (sortOrder)
            {
            case "id_desc":
                stationApiQ = stationApiQ.OrderByDescending(s => s.ID);
                break;

            case "name_desc":
                stationApiQ = stationApiQ.OrderByDescending(s => s.Name);
                break;

            case "name_asce":
                stationApiQ = stationApiQ.OrderBy(s => s.Name);
                break;

            default:
                stationApiQ = stationApiQ.OrderBy(s => s.ID);
                break;
            }

            StationList = PaginatedList <TrainStation> .Create(stationApiQ, pageIndex ?? 1, 10);
        }
コード例 #5
0
        // GET: Default
        public async Task <IActionResult> Index()
        {
            PaginatedList <TrainStation> stationList = (PaginatedList <TrainStation>) new List <TrainStation>();

            using (var httpClient = new HttpClient())
            {
                using (var response = await httpClient.GetAsync("http://api.irail.be/stations/?format=json&lang=en"))
                {
                    string apiResponse = await response.Content.ReadAsStringAsync();

                    StationApi stationApi = new StationApi();
                    stationApi  = JsonConvert.DeserializeObject <StationApi>(apiResponse);
                    stationList = PaginatedList <TrainStation> .Create((IQueryable <TrainStation>) stationApi.Station, 1, 10);
                }
            }
            return(View(stationList));
        }
コード例 #6
0
        public async Task <IActionResult> OnGetAsync()
        {
            ViewData["TicketID"] = new SelectList(_context.Set <Ticket>(), "ID", "TicketName");

            using (var httpClient = new HttpClient())
            {
                using (var response = await httpClient.GetAsync("http://api.irail.be/stations/?format=json&lang=en"))
                {
                    string apiResponse = await response.Content.ReadAsStringAsync();

                    StationApi stationApi = new StationApi();
                    stationApi  = JsonConvert.DeserializeObject <StationApi>(apiResponse);
                    StationApiQ = stationApi.Station.AsQueryable <TrainStation>().OrderBy(s => s.Name);
                }
            }

            return(Page());
        }
コード例 #7
0
ファイル: Details.cshtml.cs プロジェクト: antoine2205/cloud
        public async Task OnGetAsync(string id)
        {
            using (var httpClient = new HttpClient())
            {
                using (var response = await httpClient.GetAsync("http://api.irail.be/stations/?format=json&lang=en"))
                {
                    string apiResponse = await response.Content.ReadAsStringAsync();

                    StationApi stationApi = new StationApi();
                    stationApi = JsonConvert.DeserializeObject <StationApi>(apiResponse);
                    IQueryable <TrainStation> stationApiQ = stationApi.Station.AsQueryable <TrainStation>();
                    Station = stationApiQ.FirstOrDefault(s => s.ID == id);
                }

                string StationId = Station.ID.Substring(Station.ID.Length - 9);
                UrlPictureStation = "https://github.com/iRail/stations/blob/master/Pictures/" + StationId + ".jpg?raw=true";
            }
        }
コード例 #8
0
        protected override void HandleRequest()
        {
            string email    = Parameters["email"];
            string password = Parameters["password"];

            try
            {
                StationInfo stationInfo = StationCollection.Instance.FindOne();
                if (stationInfo != null)
                {
                    logger.DebugFormat("Station logon with stationId = {0}", stationInfo.Id);

                    StationLogOnResponse logonRes;
                    if (email != null && password != null)
                    {
                        using (WebClient agent = new WebClient())
                        {
                            Driver driver = DriverCollection.Instance.FindOne(Query.EQ("email", email));
                            if (driver == null)
                            {
                                throw new InvalidOperationException("User is not registered to this station");
                            }

                            // station.logon must be called before user.login to handle non-existing driver case
                            logonRes = StationApi.LogOn(new WebClient(), stationInfo.Id, email, password, StatusChecker.GetDetail());

                            User user = User.LogIn(agent, email, password);

                            // update user's session token
                            driver.session_token = user.Token;
                            DriverCollection.Instance.Save(driver);
                        }
                    }
                    else
                    {
                        StationApi api = new StationApi(stationInfo.Id, stationInfo.SessionToken);
                        logonRes = api.LogOn(new WebClient(), StatusChecker.GetDetail());
                    }

                    // update session in DB
                    stationInfo.SessionToken = logonRes.session_token;
                    StationCollection.Instance.Save(stationInfo);

                    logger.Debug("Station logon successfully, disable block auth of function server");
                    functionServer.BlockAuth(false);
                }

                logger.Debug("Start function server");
                functionServer.Start();
                stationTimer.Start();
                logger.Debug("Start function server successfully");

                RespondSuccess();
            }
            catch (WammerCloudException e)
            {
                if (e.WammerError == 0x4000 + 3)                 // driver already registered another station
                {
                    logger.Error("Driver already registered another station");

                    // force user re-register the station on next startup
                    CleanDB();

                    // function server should be stopped if driver's info is removed
                    logger.Debug("Try to stop function server");
                    functionServer.Stop();
                    stationTimer.Stop();

                    throw new ServiceUnavailableException("Driver already registered another station", (int)StationApiError.AlreadyHasStaion);
                }
                else if (e.WammerError == 0x4000 + 4)                 // user does not exist
                {
                    logger.Error("Driver account does not exist");

                    // force user re-register the station on next startup
                    CleanDB();

                    // function server should be stopped if driver's info is removed
                    logger.Debug("Try to stop function server");
                    functionServer.Stop();
                    stationTimer.Stop();

                    throw;
                }
                else
                {
                    throw;
                }
            }
        }