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)); }
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); }
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); }
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); }
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); }
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); } }
public async Task <ScItemsResponse> ReadItemAsync(IReadItemsByPathRequest request, CancellationToken cancelToken = default(CancellationToken)) { return(await this.InvokeNoThrow(this.workerSession.ReadItemAsync(request, cancelToken))); }