Esempio n. 1
0
 public async Task <ScItemsResponse> GetItemByPath(string itemPath, PayloadType itemLoadType, List <ScopeType> itemScopeTypes, string itemLanguage = "en")
 {
     try
     {
         using (ISitecoreWebApiSession session = GetSession())
         {
             IReadItemsByPathRequest request = ItemWebApiRequestBuilder.ReadItemsRequestWithPath(itemPath)
                                               .Payload(itemLoadType)
                                               .AddScope(itemScopeTypes)
                                               .Language(itemLanguage)
                                               .Build();
             return(await session.ReadItemAsync(request));
         }
     }
     catch (SitecoreMobileSdkException ex)
     {
         Log.Error("Error in GetItemByPath,  id {0} . Error: {1}", itemPath, ex.Message);
         throw ex;
     }
     catch (Exception ex)
     {
         Log.Error("Error in GetItemByPath,  id {0} . Error: {1}", itemPath, ex.Message);
         throw ex;
     }
 }
        public IReadItemsByPathRequest FillReadItemByPathGaps(IReadItemsByPathRequest userRequest)
        {
            IItemSource    mergedSource        = this.ItemSourceMerger.FillItemSourceGaps(userRequest.ItemSource);
            ISessionConfig mergedSessionConfig = this.SessionConfigMerger.FillSessionConfigGaps(userRequest.SessionSettings);

            return(new ReadItemByPathParameters(
                       mergedSessionConfig,
                       mergedSource,
                       userRequest.QueryParameters,
                       userRequest.IncludeStandardTemplateFields,
                       userRequest.ItemPath));
        }
    public IReadItemsByPathRequest FillReadItemByPathGaps(IReadItemsByPathRequest userRequest)
    {
      IItemSource mergedSource = this.ItemSourceMerger.FillItemSourceGaps(userRequest.ItemSource);
      ISessionConfig mergedSessionConfig = this.SessionConfigMerger.FillSessionConfigGaps(userRequest.SessionSettings);

      IPagingParameters pagingSettings = userRequest.PagingSettings;
      return new ReadItemByPathParameters(
        mergedSessionConfig, 
        mergedSource, 
        userRequest.QueryParameters, 
        pagingSettings,
        userRequest.ItemPath);
    }
        public async Task <ScItemsResponse> ReadItemAsync(IReadItemsByPathRequest request, CancellationToken cancelToken = default(CancellationToken))
        {
            IReadItemsByPathRequest requestCopy = request.DeepCopyGetItemByPathRequest();

            await this.GetPublicKeyAsync(cancelToken);

            IReadItemsByPathRequest autocompletedRequest = this.requestMerger.FillReadItemByPathGaps(requestCopy);

            var urlBuilder = new ItemByPathUrlBuilder(this.restGrammar, this.sscGrammar);
            var taskFlow   = new GetItemsByPathTasks(urlBuilder, this.httpClient);

            return(await RestApiCallFlow.LoadRequestFromNetworkFlow(autocompletedRequest, taskFlow, cancelToken));
        }
Esempio n. 5
0
        public IReadItemsByPathRequest FillReadItemByPathGaps(IReadItemsByPathRequest userRequest)
        {
            IItemSource    mergedSource        = this.ItemSourceMerger.FillItemSourceGaps(userRequest.ItemSource);
            ISessionConfig mergedSessionConfig = this.SessionConfigMerger.FillSessionConfigGaps(userRequest.SessionSettings);

            IPagingParameters pagingSettings = userRequest.PagingSettings;

            return(new ReadItemByPathParameters(
                       mergedSessionConfig,
                       mergedSource,
                       userRequest.QueryParameters,
                       pagingSettings,
                       userRequest.ItemPath));
        }
        public void TestBuildWithEmptyPathCausesArgumentException()
        {
            MockGetItemsByPathParameters mutableParameters = new MockGetItemsByPathParameters();

            mutableParameters.ItemSource      = LegacyConstants.DefaultSource();
            mutableParameters.ItemPath        = "";
            mutableParameters.SessionSettings = this.sessionConfig;
            mutableParameters.QueryParameters = this.payload;

            IReadItemsByPathRequest request = mutableParameters;

            TestDelegate action = () => this.builder.GetUrlForRequest(request);

            Assert.Throws <ArgumentException>(action);
        }
        public void TestBuildWithoutPayloadIsAllowed()
        {
            MockGetItemsByPathParameters mutableParameters = new MockGetItemsByPathParameters();

            mutableParameters.ItemSource      = LegacyConstants.DefaultSource();
            mutableParameters.ItemPath        = "/path/TO/iTEm";
            mutableParameters.SessionSettings = this.sessionConfig;
            mutableParameters.QueryParameters = null;

            IReadItemsByPathRequest request = mutableParameters;
            string result   = this.builder.GetUrlForRequest(request);
            string expected = "https://mobiledev1ua1.dk.sitecore.net/sitecore/api/ssc/item?database=web&language=en&path=%2fpath%2fto%2fitem";

            Assert.AreEqual(expected, result);
        }
Esempio n. 8
0
        public void TestItemPathRequestBuilderWithPathOnly()
        {
            IReadItemsByPathRequest result = ItemSSCRequestBuilder.ReadItemsRequestWithPath("/sitecore/content").Build();


            Assert.IsNotNull(result);
            Assert.IsNotNull(result.ItemSource);
            Assert.IsNotNull(result.ItemPath);
            Assert.IsNotNull(result.QueryParameters);
            Assert.IsNull(result.SessionSettings);

            Assert.AreEqual("/sitecore/content", result.ItemPath);
            Assert.IsNull(result.ItemSource.Language);
            Assert.IsNull(result.ItemSource.Database);
            Assert.IsNull(result.ItemSource.VersionNumber);
        }
Esempio n. 9
0
        public void TestNullPayloadIsNotReplacedWithDefault()
        {
            MockGetItemsByPathParameters mutableParameters = new MockGetItemsByPathParameters();

            mutableParameters.ItemSource      = LegacyConstants.DefaultSource();
            mutableParameters.ItemPath        = "/path/TO/iTEm";
            mutableParameters.SessionSettings = this.sessionConfig;
            mutableParameters.QueryParameters = new QueryParameters(null, null, null);

            IReadItemsByPathRequest request = mutableParameters;

            string result   = this.builder.GetUrlForRequest(request);
            string expected = "http://mobiledev1ua1.dk.sitecore.net/-/item/v2%2fpath%2fto%2fitem?sc_database=web&language=en";

            Assert.AreEqual(expected, result);
        }
Esempio n. 10
0
        public void TestBuildWithUnEscapedPath()
        {
            MockGetItemsByPathParameters mutableParameters = new MockGetItemsByPathParameters();

            mutableParameters.ItemSource      = LegacyConstants.DefaultSource();
            mutableParameters.ItemPath        = "/path TO iTEm";
            mutableParameters.SessionSettings = this.sessionConfig;
            mutableParameters.QueryParameters = this.payload;

            IReadItemsByPathRequest request = mutableParameters;

            string result   = this.builder.GetUrlForRequest(request);
            string expected = "http://mobiledev1ua1.dk.sitecore.net/-/item/v2%2fpath%20to%20item?sc_database=web&language=en&payload=content";

            Assert.AreEqual(expected, result);
        }
        public void TestDuplicateFieldsCauseException()
        {
            var mutableParameters = new MockGetItemsByPathParameters();

            mutableParameters.SessionSettings = this.sessionConfig;
            mutableParameters.ItemSource      = LegacyConstants.DefaultSource();
            mutableParameters.ItemPath        = "/aaa/bbb/ccc/ddd";

            string[]         fields           = { "x", "y", "x" };
            IQueryParameters duplicatedFields = new QueryParameters(fields);

            mutableParameters.QueryParameters = duplicatedFields;


            IReadItemsByPathRequest parameters = mutableParameters;

            Assert.Throws <ArgumentException>(() => this.builder.GetUrlForRequest(parameters));
        }
        public void TestBuildRequestWithPathAndFieldList()
        {
            MockGetItemsByPathParameters mutableParameters = new MockGetItemsByPathParameters();

            mutableParameters.ItemSource      = LegacyConstants.DefaultSource();
            mutableParameters.ItemPath        = "/path/TO/iTEm";
            mutableParameters.SessionSettings = this.sessionConfig;

            QueryParameters fieldsList = new QueryParameters(new string[2] {
                "x", "y"
            });

            mutableParameters.QueryParameters = fieldsList;

            IReadItemsByPathRequest request = mutableParameters;

            string result   = this.builder.GetUrlForRequest(request);
            string expected = "https://mobiledev1ua1.dk.sitecore.net/sitecore/api/ssc/item?database=web&language=en&fields=x%2cy%2citemid%2citemname%2citempath%2cparentid%2ctemplateid%2ctemplatename%2citemlanguage%2citemversion%2cdisplayname&path=%2fpath%2fto%2fitem";

            Assert.AreEqual(expected, result);
        }
Esempio n. 13
0
        public void TestBuildRequestWithPathAndFieldList()
        {
            MockGetItemsByPathParameters mutableParameters = new MockGetItemsByPathParameters();

            mutableParameters.ItemSource      = LegacyConstants.DefaultSource();
            mutableParameters.ItemPath        = "/path/TO/iTEm";
            mutableParameters.SessionSettings = this.sessionConfig;

            QueryParameters fieldsList = new QueryParameters(PayloadType.Default, null, new string[2] {
                "x", "y"
            });

            mutableParameters.QueryParameters = fieldsList;

            IReadItemsByPathRequest request = mutableParameters;

            string result   = this.builder.GetUrlForRequest(request);
            string expected = "http://mobiledev1ua1.dk.sitecore.net/-/item/v2%2fpath%2fto%2fitem?sc_database=web&language=en&payload=min&fields=x|y";

            Assert.AreEqual(expected, result);
        }
        public void TestItemPathRequestBuilderWithAllFields()
        {
            IReadItemsByPathRequest result = ItemWebApiRequestBuilder.ReadItemsRequestWithPath("/sitecore/content")
                                             .Database("master")
                                             .Language("da")
                                             .Version(100500)
                                             .Payload(PayloadType.Content)
                                             .Build();


            Assert.IsNotNull(result);
            Assert.IsNotNull(result.ItemSource);
            Assert.IsNotNull(result.ItemPath);
            Assert.IsNotNull(result.QueryParameters);
            Assert.IsNull(result.SessionSettings);

            Assert.AreEqual("/sitecore/content", result.ItemPath);
            Assert.AreEqual("da", result.ItemSource.Language);
            Assert.AreEqual("master", result.ItemSource.Database);
            Assert.AreEqual(100500, result.ItemSource.VersionNumber);
            Assert.AreEqual(PayloadType.Content, result.QueryParameters.Payload);
        }
    public async Task<ScItemsResponse> ReadItemAsync(IReadItemsByPathRequest request, CancellationToken cancelToken = default(CancellationToken))
    {
      IReadItemsByPathRequest requestCopy = request.DeepCopyGetItemByPathRequest();

      using (ICredentialsHeadersCryptor cryptor = await this.GetCredentialsCryptorAsync(cancelToken))
      {
        IReadItemsByPathRequest autocompletedRequest = this.requestMerger.FillReadItemByPathGaps(requestCopy);

        var urlBuilder = new ItemByPathUrlBuilder(this.restGrammar, this.webApiGrammar);
        var taskFlow = new GetItemsByPathTasks(urlBuilder, this.httpClient, cryptor);

        return await RestApiCallFlow.LoadRequestFromNetworkFlow(autocompletedRequest, taskFlow, cancelToken);
      }
    }
Esempio n. 16
0
 public async Task <ScItemsResponse> ReadItemAsync(IReadItemsByPathRequest request, CancellationToken cancelToken = default(CancellationToken))
 {
     return(await this.InvokeNoThrow(this.workerSession.ReadItemAsync(request, cancelToken)));
 }