예제 #1
0
        public NodeEntity GetSubNode(NodeEntity parentFolder, string subFolderName, TypeEnum nodeType, out bool haveCreated, bool cached = true, string subFolderPassword = "******")
        {
            var key = $"{parentFolder.Key}.{subFolderName}";

            haveCreated = false;
            if (cached && _cache.ContainsKey(key))
            {
                ConsolePrinter.Write(ConsoleColor.Green, $"Loaded {nodeType} : {subFolderName} (cached)");
                return(_cache[key]);
            }

            var subFolder = parentFolder.GetChildrenAsync(type: nodeType).Result?.FirstOrDefault(f => string.Equals(f.Name, subFolderName, StringComparison.CurrentCultureIgnoreCase));

            if (subFolder != null)
            {
                subFolder.Key = key;
                if (!_cache.ContainsKey(key))
                {
                    _cache.Add(key, subFolder);
                }
                else
                {
                    _cache[key] = subFolder;
                }

                ConsolePrinter.Write(ConsoleColor.Green, $"Loaded {nodeType} : {subFolderName}");
                return(subFolder);
            }

            ConsolePrinter.Write(ConsoleColor.DarkYellow, $"Creating {nodeType} : {subFolderName}");

            //we need to create it
            subFolder = new NodeEntity(_oauthToken)
            {
                Type         = nodeType,
                Description  = subFolderName,
                Name         = subFolderName,
                UrlName      = subFolderName,
                Keywords     = new[] { subFolderName },
                Parent       = parentFolder,
                Privacy      = subFolderPassword == "NONE" ? PrivacyEnum.Public : PrivacyEnum.Unlisted,
                SecurityType = subFolderPassword == "NONE" ? SecurityTypeEnum.None : SecurityTypeEnum.Password,
                Password     = subFolderPassword == "NONE" ? null : subFolderPassword,
                PasswordHint = subFolderPassword == "NONE" ? null : "It's on your sales reciept",
                Key          = key
            };

            subFolder.CreateAsync(parentFolder).Wait();
            haveCreated = true;

            //Read it back in so we got all properties
            subFolder     = parentFolder.GetChildrenAsync(type: nodeType).Result?.FirstOrDefault(f => string.Equals(f.Name, subFolderName, StringComparison.CurrentCultureIgnoreCase));
            subFolder.Key = key;

            _cache.Add(key, subFolder);

            return(subFolder);
        }
예제 #2
0
        public ImageUploader(OAuthToken token)
        {
            _oauthToken = token;

            var site = new SiteEntity(_oauthToken);
            var user = site.GetAuthenticatedUserAsync().Result;

            var templates = user.GetAlbumTemplatesAsync().Result;

            _noBuyTemplate   = templates.Single(t => t.Name == "NoBuy");
            _defaultTemplate = templates.Single(t => t.Name == "KHainePhotography");
            _rootNode        = user.GetRootNodeAsync().Result;
            CustomersFolder  = _rootNode.GetChildrenAsync(type: TypeEnum.Folder).Result.Single(f => f.Name == "Customers");
        }