Exemplo n.º 1
0
        private async void SfRadialMenuItem_OnItemTapped(object sender, ItemTappedEventArgs e)
        {
            string name = ((SfRadialMenuItem)sender).StyleId;

            if (name == GalleryItem)
            {
                var picture = await CrossMedia.Current.PickPhotoAsync(new PickMediaOptions());

                var nextPage = new ResultsPage(picture.GetStream());
                await Navigation.PushAsync(nextPage);
            }
            if (name == CameraItem)
            {
                var picture = await CrossMedia.Current.TakePhotoAsync(
                    new StoreCameraMediaOptions { DefaultCamera = CameraDevice.Front });

                var nextPage = new ResultsPage(picture.GetStream());
                await Navigation.PushAsync(nextPage);
            }

            if (name == InfoItem)
            {
                //var nextPage = new InfoPage();
                //await this.Navigation.PushAsync(nextPage);
            }
        }
Exemplo n.º 2
0
        public void VerifyThatExtraFiltersAreCorrectlySetTest()
        {
            DetailsPage detailspage = new DetailsPage(driver);
            HomePage    homepage    = new HomePage(driver);
            ResultsPage resultspage = new ResultsPage(driver);
            BasePage    basepage    = new BasePage(driver);

            basepage.GoToUrl(Constants.Url);

            homepage.SelectDestination(Constants.Destination);
            homepage.SelectCheckInDate();
            homepage.SelectCheckOutDate();
            homepage.SelectGuests(2, 1, 0);
            homepage.ClickSearchButton();

            Thread.Sleep(2000);
            resultspage.ClickMoreFilters();
            resultspage.IncreaseBedrooms(5);
            int selectedNrOfBedrooms = resultspage.ExtractNrOfBedroomsFromFilter();

            resultspage.SelectPoolFacility();
            resultspage.ClickShowStaysButton();

            resultspage.VerifyNumberOfAppliedFilters(2);
            resultspage.VerifyTheNrOfBedrooms(selectedNrOfBedrooms);
            resultspage.OpenFirstSearchResult();
            detailspage.VerifyFacilities(Constants.Pool);

            basepage.QuitDriver();
        }
Exemplo n.º 3
0
        public void VerifyThatResultsMatchSeacrhCriteriaTest()
        {
            ResultsPage resultspage = new ResultsPage(driver);
            HomePage    homepage    = new HomePage(driver);
            BasePage    basepage    = new BasePage(driver);

            basepage.GoToUrl(Constants.Url);

            string city = homepage.SelectDestination(Constants.Destination);

            homepage.SelectCheckInDate();
            homepage.SelectCheckOutDate();
            homepage.SelectGuests(2, 1, 0);

            int guests = homepage.ExtractNrOfGuests();

            homepage.ClickSearchButton();

            resultspage.VerifyThatTheDestinationIsCorrect(city);
            resultspage.VerifyThatApartmentsCanFitGuests(guests);
            resultspage.VerifyThatTheNumberOfGuestsIsCorrect(guests);
            resultspage.VerifyThatThePeriodIsCorrect();

            basepage.QuitDriver();
        }
Exemplo n.º 4
0
        /// <summary>
        /// Get the current ResultsView
        /// </summary>

        public ViewManager GetCurrentView()
        {
            ResultsPage page = GetCurrentResultsPage();

            if (page == null || page.Views.Count <= 0)
            {
                return(null);
            }

            ViewManager view = page.ActiveView as ViewManager;

            if (view != null)
            {
                return(view);
            }

            else if (page.Views.Count > 0)             // if no active view return the first view
            {
                return(page.Views[0] as ViewManager);
            }

            else
            {
                return(null);
            }
        }
Exemplo n.º 5
0
 public void BeforeTest()
 {
     homePage    = new HomePage();
     signInPage  = new SignInPage();
     resultsPage = new ResultsPage();
     cartPage    = new CartPage();
 }
Exemplo n.º 6
0
 public AgeSteps(ChromeDriver driver)
 {
     this.driver      = driver;
     this.basePage    = new BasePage(driver);
     this.agePage     = new AgePage(driver);
     this.resultsPage = new ResultsPage(driver);
 }
Exemplo n.º 7
0
        public IList <Planet> GetAllPlanets()
        {
            var url        = "/api/planets/";
            var allPlanets = new List <Planet>();

            ResultsPage <Planet> resultsPage = null;
            var response = _httpClient.GetAsync(url).Result;
            var content  = response.Content.ReadAsStringAsync().Result;

            content     = content.Replace("unknown", "-1");
            resultsPage = JsonConvert.DeserializeObject <ResultsPage <Planet> >(content);
            url         = resultsPage.Next;
            allPlanets  = resultsPage.Results;

            while (resultsPage.Next != null)
            {
                response    = _httpClient.GetAsync(url).Result;
                content     = response.Content.ReadAsStringAsync().Result;
                content     = content.Replace("unknown", "-1");
                resultsPage = JsonConvert.DeserializeObject <ResultsPage <Planet> >(content);
                url         = resultsPage.Next;
                allPlanets.AddRange(resultsPage.Results);
            }

            return(allPlanets);
        }
        public void GivenIAmUsingBrowser(string browser)
        {
            driver = driverUtils.CreateDriver(browser);

            mainPage    = new MainPage(driver);
            resultsPage = new ResultsPage(driver);
        }
        public void Test1()
        {
            var fromDate = DateTime.UtcNow.AddMonths(3);
            var toDate   = fromDate.AddDays(1);
            var homePage = new HomePage(driver).NavigateTo();

            homePage.AcceptCookies();
            homePage.DestinationSearchBox.Search("limerick").Results.FirstOrDefault(x => x.Value.Contains("Limerick")).Select();
            homePage.CalendarControl.FromDate = fromDate;
            homePage.CalendarControl.ToDate   = toDate;
            homePage.SelectGuestsControl.Activate().AdultsControl.SetNumber(4);
            homePage.SelectGuestsControl.Activate().RoomsControl.SetNumber(2);
            homePage.SearchButtonElement.Click();

            var resultsPage = new ResultsPage(driver);

            resultsPage.WaitFotPageToLoad();


            var filter = resultsPage.Filters.FirstOrDefault(x => x.FilterTitle.Contains("Fun Things To Do"));

            var option = filter.Options.FirstOrDefault(x => x.Option.Contains("Fitness cent"));

            option.Selected = true;

            var strand = resultsPage.Results.FirstOrDefault(x => x.Name.Contains("Limerick Strand Hotel"));

            Assert.NotNull(strand, "Hotel not displayed");
        }
Exemplo n.º 10
0
        public ResultsPage <Event> GetMetroareaMusicEvents(int id, ResultsPage <Event> .GetResultsDelegate getResultsDelegate)
        {
            // url format:
            // http://api.songkick.com/api/3.0/metro_areas/{metro_area_id}/calendar.json?apikey={your_api_key}
            // example url for events in London:
            // http://api.songkick.com/api/3.0/metro_areas/24426/calendar.json?apikey=Qjqhc2hkfU3BaTx6
            string replyString;
            string key = id.ToString();

            if (IsThereCachedReplyWithKey(key))
            {
                replyString = GetCachedReply(key);
            }
            else
            {
                var uriSB = new StringBuilder(DefaultServiceUri);
                uriSB.Append(@"metro_areas/");
                uriSB.Append(key);
                uriSB.Append(@"/calendar.json?apikey=");
                uriSB.Append(this.apiKey);

                replyString = Downloader.Download(uriSB.ToString());
                CacheReply(key, replyString);
            }

            var resultsPage = new ResultsPage <Event> (replyString, getResultsDelegate);

            return(resultsPage);
        }
Exemplo n.º 11
0
        /// <summary>
        /// Layout and render the page using the current page layout
        /// </summary>

        internal void LayoutAndRenderViews()
        {
            ResultsPage page = ResultsPage;

            if (page == null)
            {
                return;
            }

            else if (page.TabbedLayout)             // show in tabbed form
            {
                CreateStandardLayoutAndRenderViews(ViewLayout.Tabbed);
            }

            else if (page.Views.Count <= 1)             // if one or fewer views then do simple layout
            {
                CreateStandardLayoutAndRenderViews(ViewLayout.SideBySide);
            }

            else if (Lex.IsNullOrEmpty(page.LayoutXml))             // if no layout defined default to rows and cols
            {
                CreateStandardLayoutAndRenderViews(ViewLayout.RowsAndCols);
            }

            else             // Use the page LayoutXml to create the dock panels and then render the views into the panels
            {
                RestoreLayout();
                RenderViews();
            }

            RenderCount++;
            //DebugLog.Message("LayoutAndRenderViews: " + RenderCount);

            return;
        }
 public override void GetResultsPage(Query query)
 {
     LastQuery = query;
     if (String.IsNullOrEmpty(query.String))
     {
         ResultsPage = new ResultsPage <Artist> ()
         {
             error = new ResultsError("Empty query string")
         };
         return;
     }
     // temporary solution
     // TODO: add meaningful ResultsError
     // TODO: throw Web Exceptions
     try {
         ResultsPage = downloader.FindArtists(query.String, Artists.GetArtistListResultsDelegate);
     }
     catch (Exception e) {
         ResultsPage = new ResultsPage <Artist> ()
         {
             error = new ResultsError("could not download locations")
         };
         Hyena.Log.Error(e);
     }
 }
Exemplo n.º 13
0
/// <summary>
/// Switching to new results page
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>

        private void Tabs_SelectedPageChanged(object sender, TabPageChangedEventArgs e)
        {
            //DebugLog.Message("Tabs_SelectedPageChanged to: " + Tabs.SelectedTabPageIndex);

            if (UIMisc.InSetup ||
                SessionManager.Instance == null)
            {
                return;
            }

            Query q = BaseQuery;             // was RootQuery but QM may not be defined for this

            if (q == null)
            {
                return;
            }

            QueryManager qm = q.QueryManager as QueryManager;

            if (qm == null)
            {
                return;
            }

            int pi = Tabs.SelectedTabPageIndex;
            List <ResultsPage> pages = q.ResultsPages.Pages;

            if (pi < 0 || pi >= pages.Count)
            {
                return;                                          // just return if invalid page
            }
            ResultsPage page = pages[pi];

            bool tableView =             // set flag for simple table view for this page
                             (page.Views.Count == 1 &&
                              page.Views[0].ViewType == ResultsViewType.Table);

            bool spotfireView =             // set flag for simple Spotfire view for this page
                                (page.Views.Count == 1 &&
                                 page.Views[0].ViewType == ResultsViewType.Spotfire);

            bool pageNeedsAllData = !(tableView || spotfireView);

            pageNeedsAllData = Math.Abs(1) == 2; // debug

            if (pageNeedsAllData)                // if page needs all data to render read it in here
            {
                DataTableManager dtm = qm.DataTableManager;
                DialogResult     dr  = dtm.CompleteRetrieval();            // be sure we have all data
                if (dr == DialogResult.Cancel)
                {
                    return;
                }
            }

            ConfigureResultsPage(pi);             // render the page

            return;
        }
 public void VerifyResultsSearchedAsKeywordInstead(String value)
 {
     resultsPage = new ResultsPage(driver);
     Assert.IsTrue(resultsPage.errorDiv.Displayed);
     Assert.IsTrue(resultsPage.errorDiv.Text.Contains("searching as a keyword instead"));
     Assert.IsTrue(resultsPage.ResultsContainValue(value));
     Assert.IsFalse(resultsPage.IngredientsContainValue(value));
 }
 public void GivenIAmANonLevyPayer()
 {
     _scenarioContextResultsPage = new WelcomePage(this)
                                   .Go()
                                   .GotToPayrollPage()
                                   .EnterLowPayroll()
                                   .IAddNoApprentices();
 }
Exemplo n.º 16
0
        public void SearchHotels()
        {
            homepage.Navigate();
            ResultsPage result = homepage.Search("Michigan City", "29/01/2020", "30/01/2020");

            Assert.IsTrue(result.VerifyResultTitle("Michigan-City"));
            result.PrintResults();
        }
Exemplo n.º 17
0
/// <summary>
/// Add new page
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>

        private void NewPageMenuItem_Click(object sender, EventArgs e)
        {
            ResultsPage page = ResultsPages.AddNewPage(BaseQuery);

            AddResultsPageTabPage(page);            // add tab for page
            ConfigureResultsPage(page);             // render the empty page
            return;
        }
Exemplo n.º 18
0
        public void BookFlight()
        {
            //Parameters
            string user     = "******";
            string pass     = "******";
            string cid      = "20033";
            string fromCity = "New York";// If there are multiple values for a given city multiple location page is displayed
            string toCity   = "Paris";
            string leave    = "06/01/2018";
            string returnD  = "07/04/2018";
            string leaveH   = "11:00 AM";
            string returnH  = "10:00 PM";

            LoginPage goTo = new LoginPage(driver);

            goTo.GoToPage();

            Assert.True(goTo.IsPageOpened());

            goTo.LogOn(user, pass, cid);

            BackOfficePage backOff = new BackOfficePage(driver);

            backOff.ClickFrontOffice();

            HotelPage hotel = new HotelPage(driver);

            Thread.Sleep(2000);
            hotel.ClickFlightLink();

            Assert.True(driver.Title.Contains("Mystique"));
            FlightPage flight = new FlightPage(driver);

            flight.ClickRadioButtons();
            // Assert.IsTrue(driver.Title.Equals("BugFixer :: Home"));
            flight.SearchFlight(fromCity, toCity, leave, returnD, leaveH, returnH);

            Thread.Sleep(2000);

            MultipleLocationPage multi = new MultipleLocationPage(driver);

            multi.ClickContinue();

            ResultsPage results = new ResultsPage(driver);

            // results.SortByList();

            results.HidePriceFilter();
            Thread.Sleep(2000);
            // results.ClickSortButtons();
            results.MySearches();
            results.AddFlightToCart();
            Thread.Sleep(3000);
            // What effective parameter should I use on this function invocation?
            Assert.IsTrue(results.CheckTripCartQty());
            Assert.IsTrue(results.PageSource());
        }
Exemplo n.º 19
0
        public void Search()
        {
            HomePage      homePage    = new HomePage(webDriver);
            ResultsPage   resultsPage = new ResultsPage(webDriver);
            ResultSummary summaryPage = new ResultSummary(webDriver);

            resultsPage = homePage.SetSearch("iPhone 8 Plus 64 GB", webDriver);
            summaryPage = resultsPage.ClickResult(2, webDriver);
        }
Exemplo n.º 20
0
        /// <summary>
        /// Dispose
        /// </summary>

        public new void Dispose()
        {
            ResultsPagePanel = null;

            ResultsPage = null;

            base.Dispose();
            return;
        }
Exemplo n.º 21
0
        /// <summary>
        /// Layout and render the page in the specified layout format
        /// </summary>
        /// <param name="layout"></param>

        internal void CreateStandardLayoutAndRenderViews(
            ViewLayout layout)
        {
            XtraPanel viewPanel;             // panel that contains current view control and is contained in a docking panel or directly in the views panel if single view on page

            ResultsPage page = ResultsPage;

            if (page == null)
            {
                return;
            }

            List <ResultsViewProps> views = page.Views;

            if (views.Count == 0)             // just have a single blank panel if no views
            {
                RenderEmptyPage();
                return;
            }

            UIMisc.EnteringSetup();

            //Visible = false;
            SuspendLayout();             // suspend layout while building

            if (layout == ViewLayout.RowsAndCols)
            {
                CreateRowsAndColsLayoutAndRenderViews();
            }

            else             // other common type view
            {
                CreateCommonLayoutAndRenderViews(layout);
            }

            DockPanel dp = DockManager.ActivePanel;             // get the active dock panel associated with current view

            RenderViews();

            ResumeLayout();
            //Visible = true;

            SaveLayout();

            FocusActiveView();

            QueryResultsControl qrc = QueryResultsControl.GetQrcThatContainsControl(this);

            if (qrc != null)
            {
                qrc.SetCurrentPageTabTitleAndImage();                          // update the page tab
            }
            UIMisc.LeavingSetup();

            return;
        }
        public void WhenISetYourPreferencesPageWithTableInformationCheckedAllCheckboxClickGoToPricesButton(Table table)
        {
            var electricityTariff = table.Rows[0][0];
            var payment           = table.Rows[0][1];
            var email             = table.Rows[0][2];

            _resultsPage = _helperClass.BaseClass.YourEnergyPage.GoToYourDetailsPage()
                           .ValidateTariffsInterestedIn(electricityTariff)
                           .ValidatePaymentsInterestedIn(payment, email).GoToResultsPage();
        }
Exemplo n.º 23
0
        public CalculatorSteps(ChromeDriver driver)
        {
            // Assign 'driver' to private field or use it to initialize a page object
            this.driver = driver;

            // Initialize Selenium page object
            this.basePage = new BasePage(driver);
            this.caloriesCalculatorPage = new CaloriesCalculatorPage(driver);
            this.resultsPage            = new ResultsPage(driver);
        }
Exemplo n.º 24
0
        public void NavigateToApp()
        {
            ChromeDriver driver = new ChromeDriver();

            basePage = new BasePage(driver);
            caloriesCalculatorPage = new CaloriesCalculatorPage(driver);
            resultsPage            = new ResultsPage(driver);
            basePage.openPage();
            container.RegisterInstanceAs <ChromeDriver>(driver);
        }
Exemplo n.º 25
0
        public void IAmShownAListOfResultsRelatedTo(string expectedResult)
        {
            var resultsPage = new ResultsPage(Browser);

            resultsPage
                .FirstCite()
                .Text
                .ToLowerInvariant()
                .Should()
                .Contain(expectedResult.ToLowerInvariant());
        }
        public void Setup()
        {
            driver = new ChromeDriver(); // just chose Chrome as the default browser
            // TODO: extend tests to also execute on multiple browsers

            driver.Manage().Window.Maximize();
            driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10); // set the default timeout value

            searchByIngredientsPage = null;
            resultsPage             = null;
        }
Exemplo n.º 27
0
/// <summary>
/// Remove a subquery from its parent and optionally any associated views
/// </summary>
/// <param name="sq"></param>
/// <param name="removeResultsViews"></param>
/// <param name="removeResultsPagesIfEmpty"></param>

        public static void RemoveSubQuery(
            Query sq,
            bool removeResultsViews,
            bool removeResultsPagesIfEmpty)
        {
            if (sq == null)
            {
                throw new Exception("Null subquery");
            }
            Query pq = sq.Parent;

            if (pq == null || !pq.Subqueries.Contains(sq))
            {
                throw new Exception("Subquery not contained in query");
            }
            sq.Parent = null;

            pq.Subqueries.Remove(sq);             // remove subquery from query

            if (!removeResultsViews)
            {
                return;
            }

            ResultsPages rPages = pq.ResultsPages;             // overall results pages

            sq.ResultsPages = null;

            List <ResultsViewProps> rViews = sq.GetResultsViews();

            if (rViews != null)             // any views for subquery?
            {
                for (int vi = 0; vi < rViews.Count; vi++)
                {                 // remove any views from overall query ResultsPages
                    ResultsViewProps rv = rViews[vi];
                    if (rv == null || rv.ResultsPage == null)
                    {
                        continue;
                    }
                    ResultsPage rp = rv.ResultsPage;
                    if (rp == null || !rp.Views.Contains(rv))
                    {
                        continue;
                    }
                    rp.Views.Remove(rv);

                    if (removeResultsPagesIfEmpty && rp.Views.Count == 0 &&                     // remove page if empty & requested
                        rPages != null && rPages.Pages != null && rPages.Pages.Contains(rp))
                    {
                        rPages.Remove(rp);
                    }
                }
            }
        }
Exemplo n.º 28
0
        static void RemoveTentativeView(
            ResultsViewProps view,
            QueryResultsControl qrc)
        {
            ResultsPage page = view.ResultsPage;

            page.Views.Remove(view);

            int qti = qrc.Tabs.SelectedTabPageIndex;

            qrc.RemoveTabAndPage(qti);
        }
        private bool HandleNewPage(ResultsPage <TItem> result)
        {
            if (result == null || !result.Results.Any())
            {
                return(false);
            }

            _currentItem = result.Results.First();
            _currentEntityIndexOnPage = 0;
            _currentEntityIndex++;

            return(true);
        }
Exemplo n.º 30
0
        /// <summary>
        /// Add a new empty results page
        /// </summary>

        void AddPage()
        {
            DialogResult = DialogResult.OK;             // close the selection menu
            Hide();
            SessionManager.ActivateShell();

            ResultsPage page = ResultsPages.AddNewPage(Qm.Query);

            Qrc.AddResultsPageTabPage(page);            // add tab for page
            Qrc.ConfigureResultsPage(page);             // render the empty page

            return;
        }
Exemplo n.º 31
0
        /// <summary>
        /// Get the current ResultsPagePanel
        /// </summary>
        /// <returns></returns>

        public ResultsPagePanel GetCurrentResultsPagePanel()
        {
            ResultsPage rp = GetCurrentResultsPage();

            if (rp != null)
            {
                return(rp.ResultsPagePanel as ResultsPagePanel);
            }
            else
            {
                return(null);
            }
        }
        public ResultsPage<Artist> FindArtists(string artist, ResultsPage<Artist>.GetResultsDelegate getResultsDelegate)
        {
            //http://api.songkick.com/api/3.0/search/artists.json?query={search_query}&apikey={your_api_key}
            string replyString;

            if (IsThereCachedReplyWithKey (artist)) {
                replyString = GetCachedReply (artist);
            } else {
                var uriSB = new StringBuilder (DefaultServiceUri);
                uriSB.Append (@"search/artists.json?query=");
                uriSB.Append (Uri.EscapeDataString (artist));
                uriSB.Append (@"&apikey=");
                uriSB.Append (this.apiKey);

                replyString = Downloader.Download (uriSB.ToString ());
                CacheReply (artist, replyString);
            }

            return new ResultsPage<Artist> (replyString, getResultsDelegate);
        }
Exemplo n.º 33
0
 public ResultsSteps(ResultsPage resultsPage)
 {
     this.resultsPage = resultsPage;
 }
        private void FillAdditionalInfo(RecommendedArtist artist, 
            ResultsPage<Banshee.SongKick.Recommendations.Event> songKickFirstArtistEvents)
        {
            artist.NumberOfConcerts = 0;

            if (songKickFirstArtistEvents.IsStatusOk) {
                artist.NumberOfConcerts = songKickFirstArtistEvents.results.Count;
            }

            ThreadAssist.ProxyToMain (() => {
                recommended_artist_model.Reload ();
                recommended_artist_search_view.OnUpdated ();
            });
        }
        public ResultsPage<Location> FindLocationBasedOnIP(ResultsPage<Location>.GetResultsDelegate getResultsDelegate)
        {
            // http://api.songkick.com/api/3.0/search/locations.json?location=clientip&apikey={your_api_key}
            // i.e.
            // http://api.songkick.com/api/3.0/search/locations.json?location=clientip&apikey=Qjqhc2hkfU3BaTx6

            var uriSB = new StringBuilder (DefaultServiceUri);
            uriSB.Append (@"search/locations.json?location=clientip&apikey=");
            uriSB.Append (this.apiKey);

            string replyString = Downloader.Download (uriSB.ToString ());
            return new ResultsPage<Location> (replyString, getResultsDelegate);
        }
        public ResultsPage<Event> GetLocationMusicEvents(long id, ResultsPage<Event>.GetResultsDelegate getResultsDelegate)
        {
            // http://api.songkick.com/api/3.0/metro_areas/{metro_area_id}/calendar.json?apikey={your_api_key}
            string replyString;
            string key = id.ToString ();

            if (IsThereCachedReplyWithKey (key)) {
                replyString = GetCachedReply (key);
            } else {
                var uriSB = new StringBuilder (DefaultServiceUri);
                uriSB.Append (@"metro_areas/");
                uriSB.Append (key);
                uriSB.Append (@"/calendar.json?apikey=");
                uriSB.Append (this.apiKey);

                replyString = Downloader.Download (uriSB.ToString ());
                CacheReply (key, replyString);
            }
            return new ResultsPage<Event> (replyString, getResultsDelegate);
        }
 public ResultsPage<Event> GetMetroareaMusicEvents(string id, ResultsPage<Event>.GetResultsDelegate getResultsDelegate)
 {
     return GetMetroareaMusicEvents (int.Parse (id), getResultsDelegate);
 }
        public ResultsPage<Event> GetMetroareaMusicEvents(int id, ResultsPage<Event>.GetResultsDelegate getResultsDelegate)
        {
            // url format:
            // http://api.songkick.com/api/3.0/metro_areas/{metro_area_id}/calendar.json?apikey={your_api_key}
            // example url for events in London:
            // http://api.songkick.com/api/3.0/metro_areas/24426/calendar.json?apikey=Qjqhc2hkfU3BaTx6
            string replyString;
            string key = id.ToString ();

            if (IsThereCachedReplyWithKey (key)) {
                replyString = GetCachedReply (key);
            } else {
                var uriSB = new StringBuilder (DefaultServiceUri);
                uriSB.Append (@"metro_areas/");
                uriSB.Append (key);
                uriSB.Append (@"/calendar.json?apikey=");
                uriSB.Append (this.apiKey);

                replyString = Downloader.Download (uriSB.ToString ());
                CacheReply (key, replyString);
            }

            var resultsPage = new ResultsPage<Event> (replyString, getResultsDelegate);
            return resultsPage;
        }