Пример #1
0
        public async Task <ActionResult <int> > Add([FromBody] AddArgument argument)
        {
            User user = Request.GetUser();

            if (user == null)
            {
                return(Unauthorized());
            }
            if (argument.members.Where(x => x == user.Id).Count() == 0)
            {
                argument.members.Add((int)user.Id);
            }
            return(Ok(await DAO.Group.Create(argument.name, argument.description, argument.members)));
        }
Пример #2
0
        private BuilderLayer CreateLayer(IEnumerable <string> adds, IEnumerable <string> addFolders, string layerName)
        {
            var description = new StringBuilder();

            EnsureTempFolder();
            var archive = new Archive(Path.Combine(_tempFolderPath, $"{layerName}.tar.gz"), true, new[] { _tempFolderPath }, _logger);

            foreach (var a in adds)
            {
                var arg = AddArgument.Parse(a, false);
                _logger.LogDebug($"--add {arg.Source} {arg.Dest} {arg.OwnerId} {arg.GroupId} {arg.Mode.AsOctalString()}");

                description.Append($"--add . {arg.Dest} {arg.OwnerId} {arg.GroupId} {arg.Mode.AsOctalString()} ");
                archive.CreateEntries(arg.Source, arg.Dest, arg.OwnerId, arg.GroupId, arg.Mode);
            }

            foreach (var a in addFolders ?? Enumerable.Empty <string>())
            {
                var arg = AddArgument.Parse(a, true);
                _logger.LogDebug($"--addFolder {arg.Dest} {arg.OwnerId} {arg.GroupId} {arg.Mode.AsOctalString()}");

                description.Append($"--addFolder {arg.Dest} {arg.OwnerId} {arg.GroupId} {arg.Mode.AsOctalString()} ");
                archive.CreateFolderEntry(arg.Dest, arg.OwnerId, arg.GroupId, arg.Mode);
            }

            var(digest, diffId) = archive.WriteFileAndCalcDigests();
            var layer = new BuilderLayer
            {
                Name        = layerName,
                Digest      = digest,
                DiffId      = diffId,
                Size        = archive.GetSize(),
                Description = description.ToString(),
            };

            var layerLogger = CreateLogger("LAYER");

            layerLogger.LogDebug($"{layer}");
            foreach (var e in archive.Entries)
            {
                layerLogger.LogDebug($"    {Archive.PrintEntry(e.Value.Item2)}");
            }

            return(layer);
        }