示例#1
0
        public async Task <Item> GetItemAsync(GetItemCommand command)
        {
            var device   = _config.Sitecore.Device;
            var database = _config.Sitecore.Database;
            var cdn      = _config.Sitecore.Cdn;
            var query    = new StringBuilder();

            query.Append(_config.ServerUrl);
            query.Append("/-/lightcore/item/");
            query.Append(command.PathOrId);
            query.AppendFormat("?sc_database={0}", database);
            query.AppendFormat("&sc_lang={0}", command.Language.Name);
            query.AppendFormat("&sc_device={0}", device);
            query.AppendFormat("&cdn={0}", cdn);

            if (command.ItemFields.Any())
            {
                query.AppendFormat("&itemfields={0}", string.Join(",", command.ItemFields));
            }

            if (command.ChildFields.Any())
            {
                query.AppendFormat("&childfields={0}", string.Join(",", command.ChildFields));
            }

            return(ItemFactory.Create(await GetAsync(query.ToString())).FirstOrDefault());
        }
        /// <summary>
        ///     Создание и вызов нужной команды
        /// </summary>
        /// <param name="command">название команды</param>
        /// <returns>Команда</returns>
        private ICommand CallCommand(string command)
        {
            ICommand newCommand = null;

            switch (command)
            {
            case "create":
                newCommand = new CreateCommand(productCatalog, currentArgs);
                break;

            case "list":
                newCommand = new ListCommand(productCatalog, currentArgs);
                break;

            case "delete":
                newCommand = new DeleteCommand(productCatalog, currentArgs);
                break;

            case "add-count":
                newCommand = new AddCountCommand(productCatalog, currentArgs);
                break;

            case "sub-count":
                newCommand = new SubstractCountCommand(productCatalog, currentArgs);
                break;

            case "get-item":
                newCommand = new GetItemCommand(productCatalog, currentArgs);
                break;
            }

            return(newCommand);
        }
示例#3
0
        public async Task <Item> GetItemAsync(GetItemCommand command)
        {
            var file = $"e:\\temp\\Lightcore\\web\\{command.Language.Name}\\default\\{command.PathOrId}\\item.json";

            if (!File.Exists(file))
            {
                return(null);
            }

            using (var stream = File.OpenRead(file))
            {
                using (var memory = new MemoryStream())
                {
                    await stream.CopyToAsync(memory);

                    memory.Position = 0;

                    using (var streamReader = new StreamReader(memory))
                    {
                        using (JsonReader jsonReader = new JsonTextReader(streamReader))
                        {
                            var apiResponse = _serializer.Deserialize <ServerResponseModel>(jsonReader);

                            return(ItemFactory.Create(apiResponse).FirstOrDefault());
                        }
                    }
                }
            }
        }
        public async Task<Item> GetItemAsync(GetItemCommand command)
        {
            var device = _config.Sitecore.Device;
            var database = _config.Sitecore.Database;
            var cdn = _config.Sitecore.Cdn;
            var query = new StringBuilder();

            query.Append(_config.ServerUrl);
            query.Append("/-/lightcore/item/");
            query.Append(command.PathOrId);
            query.AppendFormat("?sc_database={0}", database);
            query.AppendFormat("&sc_lang={0}", command.Language.Name);
            query.AppendFormat("&sc_device={0}", device);
            query.AppendFormat("&cdn={0}", cdn);

            if (command.ItemFields.Any())
            {
                query.AppendFormat("&itemfields={0}", string.Join(",", command.ItemFields));
            }

            if (command.ChildFields.Any())
            {
                query.AppendFormat("&childfields={0}", string.Join(",", command.ChildFields));
            }

            return ItemFactory.Create(await GetAsync(query.ToString())).FirstOrDefault();
        }
示例#5
0
        public async Task <Item> GetItemAsync(GetItemCommand command)
        {
            var database        = _server.Connection.GetDatabase();
            var snapshotVersion = await GetSnapshotVersion(database);

            var id = await GetId(snapshotVersion, command.PathOrId, database);

            var key   = (snapshotVersion + ":version:" + id + ":" + command.Language.Name).ToLowerInvariant();
            var value = await database.StringGetAsync(key);

            if (value.IsNullOrEmpty)
            {
                if (!command.Language.Name.Equals(Language.Default.Name))
                {
                    key   = (snapshotVersion + ":version:" + id + ":" + Language.Default.Name).ToLowerInvariant();
                    value = await database.StringGetAsync(key);
                }

                if (value.IsNullOrEmpty)
                {
                    return(null);
                }
            }

            return(ItemSerializer.Deserialize(value.ToString()));
        }
示例#6
0
        public async Task <List <EwsTask> > DownloadFolderContentAsync(IEnumerable <EwsItemIdentifier> identifiers, EwsItemType ewsItemType)
        {
            if (!identifiers.Any())
            {
                return(new List <EwsTask>());
            }

            var parameter = new GetItemParameter(ewsItemType);

            foreach (var identifier in identifiers)
            {
                parameter.ItemIdentifiers.Add(identifier);
            }

            var command = new GetItemCommand(parameter, this.settings);

            var result = await command.Execute();

            // set item type
            foreach (var ewsTask in result.Data.Tasks)
            {
                ewsTask.Type = ewsItemType;
            }

            return(result.Data.Tasks);
        }
示例#7
0
        public void ShouldGetItemFromDataStorage(GetItemCommand sut, Item item)
        {
            // arrange
            sut.DataStorage.GetSitecoreItem(item.ID, item.Language, item.Version).Returns(item);
            sut.Initialize(item.ID, item.Language, item.Version);

            // act
            var result = ReflectionUtil.CallMethod(sut, "DoExecute");

            // assert
            result.Should().Be(item);
        }