コード例 #1
0
        private async void SendQueryRequest()
        {
            try
            {
                using (ISitecoreSSCSession session = this.instanceSettings.GetSession())
                {
                    var request = ItemSSCRequestBuilder.StoredQuerryRequest(queryTextField.Text)
                                  .PageNumber(0)
                                  .ItemsPerPage(100)
                                  .Build();

                    this.ShowLoader();

                    ScItemsResponse response = await session.RunStoredQuerryAsync(request);

                    this.HideLoader();
                    if (response.ResultCount > 0)
                    {
                        this.ShowItemsList(response);
                    }
                    else
                    {
                        AlertHelper.ShowLocalizedAlertWithOkOption("Message", "No item found");
                    }
                }
            }
            catch (Exception e)
            {
                this.HideLoader();
                AlertHelper.ShowLocalizedAlertWithOkOption("Error", e.Message);
            }
        }
コード例 #2
0
        public async Task <PageData> GeneratePageData(string itemid, PayloadType itemLoadType, List <ScopeType> itemScopeTypes, string datasourceFieldName, string itemLanguage = "en")
        {
            ScItemsResponse response = await GetItemById(itemid, itemLoadType, itemScopeTypes, itemLanguage);

            if (response == null)
            {
                return(null);
            }

            ISitecoreItem item = response.First();

            if (item == null)
            {
                return(null);
            }

            PageData pageData = new PageData {
                PageName               = item.DisplayName,
                ItemContext            = response,
                NavigationTitle        = item.GetValueFromField(Constants.Sitecore.Fields.Navigation.NavigationTitle),
                PageType               = item.GetTemplateName(),
                DataSourceFromChildren = await GetDatasourceFromChildren(item),
                DataSourceFromField    = await GetDataSourceFromFieldName(item, datasourceFieldName)
            };

            return(pageData);
        }
コード例 #3
0
        public async void TestItemByPathRequestMutationDoesNotAffectSession()
        {
            string homePath = "/sitecore/content/home";

            IQueryParameters payload = new QueryParameters(null);

            MockGetItemsByPathParameters mockMutableRequest = new MockGetItemsByPathParameters();

            mockMutableRequest.ItemPath        = homePath;
            mockMutableRequest.QueryParameters = payload;
            mockMutableRequest.ItemSource      = this.itemSource;

            try
            {
                Task <ScItemsResponse> loadItemsTask = this.session.ReadItemAsync(mockMutableRequest);
                //      await Task.Factory.StartNew(() => mockMutableRequest.ItemPath = this.env.Items.MediaLibrary.Path);
                ScItemsResponse response = await loadItemsTask;
                var             item     = response[0];
                Assert.AreEqual(homePath.ToLowerInvariant(), item.Path.ToLowerInvariant());
            }
            catch (LoadDataFromNetworkException)
            {
                //IDLE
            }
            finally
            {
                Assert.AreEqual(1, this.itemSource.CopyInvocationCount);
                Assert.AreEqual(1, mockMutableRequest.CopyInvocationCount);
            }
        }
コード例 #4
0
        public async void TestItemByIdRequestMutationDoesNotAffectSession()
        {
            string homeId = this.env.Items.Home.Id;

            IQueryParameters payload = new QueryParameters(null);

            MockGetItemsByIdParameters mockMutableRequest = new MockGetItemsByIdParameters();

            mockMutableRequest.ItemId          = homeId;
            mockMutableRequest.QueryParameters = payload;
            mockMutableRequest.ItemSource      = this.itemSource;

            try
            {
                Task <ScItemsResponse> loadItemsTask = this.session.ReadItemAsync(mockMutableRequest);
                //      await Task.Factory.StartNew(() => mockMutableRequest.ItemId = this.env.Items.MediaLibrary.Id);
                ScItemsResponse response = await loadItemsTask;
                var             item     = response[0];
                Assert.AreEqual(homeId, item.Id.ToUpperInvariant());
            }
            catch (LoadDataFromNetworkException)
            {
                //IDLE
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
            }
            finally
            {
                Assert.AreEqual(1, this.itemSource.CopyInvocationCount);
                Assert.AreEqual(1, mockMutableRequest.CopyInvocationCount);
            }
        }
コード例 #5
0
        private async void SendRequest()
        {
            try
            {
                using (ISitecoreSSCSession session = this.instanceSettings.GetSession())
                {
                    this.ShowLoader();

                    var request = ItemSSCRequestBuilder.SitecoreSearchRequest(queryTextField.Text)
                                  .AddDescendingFieldsToSort("title")
                                  .AddAscendingFieldsToSort("title")
                                  .AddDescendingFieldsToSort("text")
                                  .Build();

                    ScItemsResponse response = await session.RunSearchAsync(request);

                    this.HideLoader();

                    if (response.ResultCount > 0)
                    {
                        this.ShowItemsList(response);
                    }
                    else
                    {
                        AlertHelper.ShowLocalizedAlertWithOkOption("Message", "No items found");
                    }
                }
            }
            catch (Exception e)
            {
                this.HideLoader();
                AlertHelper.ShowLocalizedAlertWithOkOption("Error", e.Message);
            }
        }
コード例 #6
0
        private async void SendRequest()
        {
            try
            {
                using (ISitecoreWebApiSession session = this.instanceSettings.GetSession())
                {
                    var builder = ItemWebApiRequestBuilder.ReadItemsRequestWithId(itemIdTextField.Text)
                                  .Payload(this.currentPayloadType)
                                  .AddFieldsToRead(this.fieldNameTextField.Text);

                    if (this.parentScopeButton.Selected)
                    {
                        builder = builder.AddScope(ScopeType.Parent);
                    }
                    if (this.selfScopeButton.Selected)
                    {
                        builder = builder.AddScope(ScopeType.Self);
                    }
                    if (this.childrenScopeButton.Selected)
                    {
                        builder = builder.AddScope(ScopeType.Children);
                    }

                    var request = builder.Build();

                    this.ShowLoader();

                    ScItemsResponse response = await session.ReadItemAsync(request);

                    if (response.Any())
                    {
                        this.ShowItemsList(response);

                        //items serialization test
                        ScItem item         = response[0] as ScItem;
                        string json         = JsonConvert.SerializeObject(item);
                        ScItem restoredItem = JsonConvert.DeserializeObject <ScItem>(json);
                        Console.WriteLine(restoredItem.DisplayName);
                    }
                    else
                    {
                        AlertHelper.ShowLocalizedAlertWithOkOption("Message", "Item is not exist");
                    }
                }
            }
            catch (Exception e)
            {
                this.CleanupTableViewBindings();
                AlertHelper.ShowLocalizedAlertWithOkOption("Error", e.Message);
            }
            finally
            {
                BeginInvokeOnMainThread(delegate
                {
                    this.HideLoader();
                    this.FieldsTableView.ReloadData();
                });
            }
        }
コード例 #7
0
        public void TestParseNullResponse()
        {
            ScItemsResponse response = ScItemsParser.Parse(null, "web", CancellationToken.None);

            Assert.NotNull(response);
            Assert.AreEqual(0, response.ResultCount);
            Assert.AreEqual(0, response.StatusCode);
        }
コード例 #8
0
        public async Task <ScItemsResponse> GetAllRegions()
        {
            string query = "/sitecore/content/Home//*[@@templatename='Region Item']";

            ScItemsResponse response = await this.GetItemsByQyery(query);

            return(response);
        }
コード例 #9
0
        public static async Task <ScItemsResponse> GetAllCountries()
        {
            string query = "/sitecore/content/Home//*[@@templatename='Country Item']";

            ScItemsResponse response = await NetworkHelper.GetItemsByQyery(query);

            return(response);
        }
コード例 #10
0
        private ISitecoreItem CheckCreatedItem(ScItemsResponse createResponse, TestEnvironment.Item expectedItem)
        {
            this.testData.AssertItemsCount(1, createResponse);
            ISitecoreItem resultItem = createResponse[0];

            this.testData.AssertItemsAreEqual(expectedItem, resultItem);

            return(resultItem);
        }
コード例 #11
0
        public void TestParseResponseWithEmptyItems()
        {
            string          rawResponse = "{\n  \"statusCode\": 200,\n  \"result\": {\n    \"totalCount\": 0,\n    \"resultCount\": 0,\n    \"items\": []\n  }\n}";
            ScItemsResponse response    = ScItemsParser.Parse(rawResponse, CancellationToken.None);

            Assert.AreEqual(0, response.TotalCount);
            Assert.AreEqual(0, response.ResultCount);
            Assert.AreEqual(0, response.ResultCount);
        }
コード例 #12
0
        private async void UploadRegions()
        {
            if (dataSource == null)
            {
                ScItemsResponse response = await NetworkHelper.GetAllRegions();

                TableView.Source = dataSource = new DataSource(this, response);
            }
            TableView.ReloadData();
        }
        public async void GetCountriesForRegion(ISitecoreItem region)
        {
            if (dataSource == null)
            {
                ScItemsResponse response = await NetworkHelper.GetCountriesForRegion(region);

                TableView.Source = dataSource = new DataSource(this, response);
            }

            TableView.ReloadData();
        }
コード例 #14
0
        public async void GetCitiesForCountry(ISitecoreItem country)
        {
            if (dataSource == null)
            {
                ScItemsResponse response = await NetworkHelper.GetCitiesForCountry(country);

                TableView.Source = dataSource = new DataSource(this, response);
            }

            TableView.ReloadData();
        }
コード例 #15
0
        private async void SendRequest()
        {
            try
            {
                using (ISitecoreWebApiSession session = this.instanceSettings.GetSession())
                {
                    var builder = ItemWebApiRequestBuilder.ReadItemsRequestWithPath(this.ItemPathField.Text)
                                  .Payload(this.currentPayloadType)
                                  .AddFieldsToRead(this.fieldNameTextField.Text);

                    if (this.parentScopeButton.Selected)
                    {
                        builder = builder.AddScope(ScopeType.Parent);
                    }
                    if (this.selfScopeButton.Selected)
                    {
                        builder = builder.AddScope(ScopeType.Self);
                    }
                    if (this.childrenScopeButton.Selected)
                    {
                        builder = builder.AddScope(ScopeType.Children);
                    }

                    var request = builder.Build();

                    this.ShowLoader();

                    ScItemsResponse response = await session.ReadItemAsync(request);

                    if (response.Any())
                    {
                        this.ShowItemsList(response);
                    }
                    else
                    {
                        AlertHelper.ShowLocalizedAlertWithOkOption("Message", "Item is not exist");
                    }
                }
            }
            catch (Exception e)
            {
                this.CleanupTableViewBindings();
                AlertHelper.ShowLocalizedAlertWithOkOption("Error", e.Message);
            }
            finally
            {
                BeginInvokeOnMainThread(delegate
                {
                    this.FieldsTableView.ReloadData();
                    this.HideLoader();
                });
            }
        }
コード例 #16
0
        public static async Task <ISitecoreItem> GetRegionNamed(string gerionTitle)
        {
            string query = "/sitecore/content/Home//*[@@templatename='Region Item' and contains(@Title, '" + gerionTitle + "')]";

            ScItemsResponse response = await NetworkHelper.GetItemsByQyery(query);

            if (response == null || response.ResultCount == 0)
            {
                return(null);
            }

            return(response[0]);
        }
コード例 #17
0
        public static async Task <ScItemsResponse> GetCountriesForRegion(string regionTitle)
        {
            ISitecoreItem region = await NetworkHelper.GetRegionNamed(regionTitle);

            if (region == null)
            {
                return(null);
            }

            ScItemsResponse response = await NetworkHelper.GetCountriesForRegion(region);

            return(response);
        }
コード例 #18
0
        public void TestAll20XCodesAreValid()
        {
            string responseBegin = "{\"statusCode\":";
            string responseEnd   = ",\"result\":{\"totalCount\":0,\"resultCount\":0,\"items\":[]}}";

            for (int i = 200; i < 300; ++i)
            {
                string rawResponse = responseBegin + i.ToString() + responseEnd;

                ScItemsResponse response = ScItemsParser.Parse(rawResponse, CancellationToken.None);
                Assert.AreEqual(0, response.ResultCount);
            }
        }
コード例 #19
0
        public static async Task <ScItemsResponse> GetCitiesForCountry(string countryTitle)
        {
            ISitecoreItem country = await NetworkHelper.GetCountryNamed(countryTitle);

            if (country == null)
            {
                return(null);
            }

            ScItemsResponse response = await NetworkHelper.GetCitiesForCountry(country);

            return(response);
        }
コード例 #20
0
        public async Task <ScItemsResponse> GetCitiesForCountry(string countryTitle)
        {
            ISitecoreItem country = await this.GetCountryNamed(countryTitle);

            if (country == null)
            {
                return(null);
            }

            ScItemsResponse response = await this.GetItemChildren(country);

            return(response);
        }
コード例 #21
0
        public async Task <ISitecoreItem> GetCityNamed(string cityTitle)
        {
            string query = "/sitecore/content/Home//*[@@templatename='City Item' and contains(@Title, '" + cityTitle + "')]";

            ScItemsResponse response = await this.GetItemsByQyery(query);

            if (response == null || response.ResultCount == 0)
            {
                return(null);
            }

            return(response[0]);
        }
コード例 #22
0
        public async Task <ScItemsResponse> GetCountriesForRegion(string regionTitle)
        {
            ISitecoreItem region = await this.GetRegionNamed(regionTitle);

            if (region == null)
            {
                return(null);
            }

            ScItemsResponse response = await this.GetItemChildren(region);

            return(response);
        }
コード例 #23
0
        public async void TestOutOfRangeRequestReturnsEmptyDataset()
        {
            var request = ItemWebApiRequestBuilder.ReadItemsRequestWithPath(this.testData.Items.Home.Path)
                          .AddScope(ScopeType.Children)
                          .PageNumber(10)
                          .ItemsPerPage(5)
                          .Build();

            ScItemsResponse response = await this.session.ReadItemAsync(request);

            Assert.IsNotNull(response);
            Assert.AreEqual(0, response.ResultCount);
            Assert.AreEqual(4, response.TotalCount);
        }
コード例 #24
0
        public async void TestGetPage2WithSize3ByItemIdWithChildrenScope()
        {
            var request = ItemWebApiRequestBuilder.ReadItemsRequestWithId(this.testData.Items.MediaImagesItem.Id)
                          .AddScope(ScopeType.Children)
                          .PageNumber(2)
                          .ItemsPerPage(3)
                          .Build();

            ScItemsResponse response = await this.session.ReadItemAsync(request);

            Assert.IsNotNull(response);
            Assert.AreEqual(2, response.ResultCount);
            Assert.AreEqual(8, response.TotalCount);
        }
コード例 #25
0
        public async void TestGetPage0WithSize3ByQuery()
        {
            var request = ItemWebApiRequestBuilder.ReadItemsRequestWithSitecoreQuery("/sitecore/content/Home/*")
                          .AddScope(ScopeType.Self)
                          .PageNumber(0)
                          .ItemsPerPage(3)
                          .Build();

            ScItemsResponse response = await this.session.ReadItemAsync(request);

            Assert.IsNotNull(response);
            Assert.AreEqual(3, response.ResultCount);
            Assert.AreEqual(4, response.TotalCount);
        }
コード例 #26
0
        public async Task <ScDeleteItemsListResponse> DeleteItemsAsync(IDeleteItemsBySitecoreQueryRequest deleteItemsBySitecoreQueryRequest, CancellationToken cancelToken = default(CancellationToken))
        {
            var getItemsRequest = ExtendedSSCRequestBuilder.SitecoreQueryRequest(deleteItemsBySitecoreQueryRequest.sitecoreQuery)
                                  .Database(deleteItemsBySitecoreQueryRequest.Database)
                                  .Build();

            ScItemsResponse getItemsResponse = await this.SearchBySitecoreQueryAsync(getItemsRequest, cancelToken);


            var deleteItemsRequest = ExtendedSSCRequestBuilder.DeleteItemsListRequest(getItemsResponse)
                                     .Database(deleteItemsBySitecoreQueryRequest.Database)
                                     .Build();

            var deleteItemsResponse = await this.DeleteItemsAsync(deleteItemsRequest);

            return(deleteItemsResponse);
        }
コード例 #27
0
        private static void Main(string[] args)
        {
            using (var demoCredentials = new SecureStringPasswordProvider("admin", "b"))
            {
                string instanceUrl = "http://mobiledev1ua1.dk.sitecore.net:7220";

                using
                (
                    var session =
                        SitecoreWebApiSessionBuilder.AuthenticatedSessionWithHost(instanceUrl)
                        .Credentials(demoCredentials)
                        .Site("/sitecore/shell")
                        .DefaultDatabase("web")
                        .DefaultLanguage("en")
                        .MediaLibraryRoot("/sitecore/media library")
                        .MediaPrefix("~/media/")
                        .DefaultMediaResourceExtension("ashx")
                        .BuildReadonlySession()
                )
                {
                    var request =
                        ItemWebApiRequestBuilder.ReadItemsRequestWithPath("/sitecore/content/home")
                        .AddScope(ScopeType.Self)
                        .Payload(PayloadType.Content)
                        .Build();
                    var readHomeItemTask = session.ReadItemAsync(request);

                    // @adk : cannot use "await" in main
                    Task.WaitAll(readHomeItemTask);

                    ScItemsResponse items     = readHomeItemTask.Result;
                    string          fieldText = items[0]["Text"].RawValue;

                    Console.BackgroundColor = ConsoleColor.White;
                    Console.ForegroundColor = ConsoleColor.Black;
                    Console.Clear();

                    Console.WriteLine("Home Item Text");
                    Console.WriteLine();
                    Console.WriteLine(fieldText);

                    Console.ReadKey();
                }
            }
        }
コード例 #28
0
        private async Task DeleteAllItems(string database)
        {
            var getItemsToDelet = ItemSSCRequestBuilder.ReadChildrenRequestWithId(this.testData.Items.CreateItemsHere.Id)
                                  .Database(database)
                                  .Build();

            ScItemsResponse items = await this.noThrowCleanupSession.ReadChildrenAsync(getItemsToDelet);

            if (items != null && items.ResultCount > 0)
            {
                foreach (var item in items)
                {
                    var deleteFromMaster = ItemSSCRequestBuilder.DeleteItemRequestWithId(item.Id)
                                           .Database(database)
                                           .Build();
                    await this.noThrowCleanupSession.DeleteItemAsync(deleteFromMaster);
                }
            }
        }
コード例 #29
0
        public void TestParseValidResponse()
        {
            string          rawResponse = VALID_RESPONSE;
            ScItemsResponse response    = ScItemsParser.Parse(rawResponse, "web", CancellationToken.None);

            Assert.AreEqual(1, response.ResultCount);

            ISitecoreItem item1 = response[0];

            Assert.AreEqual("Home", item1.DisplayName);
            Assert.AreEqual("web", item1.Source.Database);
            Assert.AreEqual(true, item1.HasChildren);
            Assert.AreEqual("en", item1.Source.Language);
            Assert.AreEqual("110D559F-DEA5-42EA-9C1C-8A5DF7E70EF9", item1.Id.ToUpperInvariant());

            Assert.AreEqual("/sitecore/content/Home", item1.Path);
            Assert.AreEqual(1, item1.Source.VersionNumber);

            Assert.AreEqual(16, item1.FieldsCount);
        }
コード例 #30
0
        private async void SendRequest()
        {
            try
            {
                using (ISitecoreWebApiSession session = this.instanceSettings.GetSession())
                {
                    var request = ItemWebApiRequestBuilder.CreateItemRequestWithParentId(this.pathField.Text)
                                  .ItemTemplatePath("Sample/Sample Item")
                                  .ItemName(this.nameField.Text)
                                  .AddFieldsRawValuesByNameToSet("Title", titleField.Text)
                                  .AddFieldsRawValuesByNameToSet("Text", textField.Text)
                                  .Build();

                    this.ShowLoader();

                    ScItemsResponse response = await session.CreateItemAsync(request);

                    if (response.Any())
                    {
                        ISitecoreItem item = response[0];
                        this.CreatedItemId = item.Id;
                        AlertHelper.ShowLocalizedAlertWithOkOption("The item created successfully", "Item path: " + item.Path);
                    }
                    else
                    {
                        AlertHelper.ShowLocalizedAlertWithOkOption("Message", "Item is not exist");
                    }
                }
            }
            catch (Exception e)
            {
                AlertHelper.ShowLocalizedAlertWithOkOption("Error", e.Message);
            }
            finally
            {
                BeginInvokeOnMainThread(delegate
                {
                    this.HideLoader();
                });
            }
        }
コード例 #31
0
 public void AssertItemsCount(int itemCount, ScItemsResponse response)
 {
   Assert.AreEqual(itemCount, response.TotalCount);
   Assert.AreEqual(itemCount, response.ResultCount);
 }
コード例 #32
0
    private ISitecoreItem CheckCreatedItem(ScItemsResponse createResponse, TestEnvironment.Item expectedItem)
    {
      this.testData.AssertItemsCount(1, createResponse);
      ISitecoreItem resultItem = createResponse[0];
      this.testData.AssertItemsAreEqual(expectedItem, resultItem);

      return resultItem;
    }