/// <summary>
        ///     Validate the package manager url and initialize the PackageManagerClient object
        /// </summary>
        public void Startup(StartupParams startupParams)
        {
            var    path   = this.GetType().Assembly.Location;
            var    config = ConfigurationManager.OpenExeConfiguration(path);
            var    key    = config.AppSettings.Settings["packageManagerAddress"];
            string url    = null;

            if (key != null)
            {
                url = key.Value;
            }

            OnMessageLogged(LogMessage.Info("Dynamo will use the package manager server at : " + url));

            if (!Uri.IsWellFormedUriString(url, UriKind.Absolute))
            {
                throw new ArgumentException("Incorrectly formatted URL provided for Package Manager address.", "url");
            }

            this.packageLoader = new PackageLoader(startupParams.PathManager.PackagesDirectory);
            this.packageLoader.MessageLogged                  += OnMessageLogged;
            this.packageLoader.RequestLoadNodeLibrary         += OnRequestLoadNodeLibrary;
            this.packageLoader.RequestLoadCustomNodeDirectory +=
                (dir) => startupParams.CustomNodeManager
                .AddUninitializedCustomNodesInPath(dir, DynamoModel.IsTestMode, true);

            var dirBuilder = new PackageDirectoryBuilder(
                new MutatingFileSystem(),
                new CustomNodePathRemapper(startupParams.CustomNodeManager, DynamoModel.IsTestMode));

            var uploadBuilder = new PackageUploadBuilder(dirBuilder, new MutatingFileCompressor());

            this.packageManagerClient = new PackageManagerClient(new GregClient(startupParams.AuthProvider, url),
                                                                 uploadBuilder, PackageLoader.RootPackagesDirectory);
        }
Beispiel #2
0
        /// <summary>
        ///     Validate the package manager url and initialize the PackageManagerClient object
        /// </summary>
        public void Startup(StartupParams startupParams)
        {
            var    path   = this.GetType().Assembly.Location;
            var    config = ConfigurationManager.OpenExeConfiguration(path);
            var    key    = config.AppSettings.Settings["packageManagerAddress"];
            string url    = null;

            if (key != null)
            {
                url = key.Value;
            }

            OnMessageLogged(LogMessage.Info("Dynamo will use the package manager server at : " + url));

            if (!Uri.IsWellFormedUriString(url, UriKind.Absolute))
            {
                throw new ArgumentException("Incorrectly formatted URL provided for Package Manager address.", "url");
            }

            PackageLoader = new PackageLoader(startupParams.PathManager);
            PackageLoader.MessageLogged  += OnMessageLogged;
            PackageLoader.PackgeLoaded   += OnPackageLoaded;
            PackageLoader.PackageRemoved += OnPackageRemoved;
            RequestLoadNodeLibraryHandler = (startupParams.LibraryLoader as ExtensionLibraryLoader).LoadLibraryAndSuppressZTSearchImport;
            //TODO: Add LoadPackages to ILibraryLoader interface in 3.0
            LoadPackagesHandler = (startupParams.LibraryLoader as ExtensionLibraryLoader).LoadPackages;
            customNodeManager   = (startupParams.CustomNodeManager as Core.CustomNodeManager);

            //TODO - in 3.0 we can add the other overload of AddUninitializedCustomNodesInPath to the ICustomNodeManager interface.
            RequestLoadCustomNodeDirectoryHandler = (dir, pkgInfo) => customNodeManager
                                                    .AddUninitializedCustomNodesInPath(dir, DynamoModel.IsTestMode, pkgInfo);

            //when the customNodeManager requests to know the owner of a customNode handle this query.
            customNodeManager.RequestCustomNodeOwner += handleCustomNodeOwnerQuery;

            //raise the public events on this extension when the package loader requests.
            PackageLoader.RequestLoadExtension           += RequestLoadExtension;
            PackageLoader.RequestAddExtension            += RequestAddExtension;
            PackageLoader.PackagesLoaded                 += LoadPackagesHandler;
            PackageLoader.RequestLoadNodeLibrary         += RequestLoadNodeLibraryHandler;
            PackageLoader.RequestLoadCustomNodeDirectory += RequestLoadCustomNodeDirectoryHandler;

            var dirBuilder = new PackageDirectoryBuilder(
                new MutatingFileSystem(),
                new CustomNodePathRemapper(startupParams.CustomNodeManager, DynamoModel.IsTestMode));

            PackageUploadBuilder.SetEngineVersion(startupParams.DynamoVersion);
            var uploadBuilder = new PackageUploadBuilder(dirBuilder, new MutatingFileCompressor());

            var packageUploadDirectory = startupParams.PathManager.DefaultPackagesDirectory;

            PackageManagerClient = new PackageManagerClient(
                new GregClient(startupParams.AuthProvider, url),
                uploadBuilder, packageUploadDirectory);

            LoadPackages(startupParams.Preferences, startupParams.PathManager);
        }
        internal PackageUploadHandle PublishAsync(Package package, IEnumerable <string> files, bool isNewVersion)
        {
            var packageUploadHandle = new PackageUploadHandle(PackageUploadBuilder.NewRequestBody(package));

            Task.Factory.StartNew(() =>
            {
                Publish(package, files, isNewVersion, packageUploadHandle);
            });

            return(packageUploadHandle);
        }
Beispiel #4
0
        private PackageUploadHandle PublishPackage(bool isNewVersion,
                                                   Package l,
                                                   List <string> files,
                                                   PackageUploadHandle packageUploadHandle)
        {
            ThreadStart start = () =>
            {
                try
                {
                    int          maxRetries = 5;
                    int          count      = 0;
                    ResponseBody ret        = null;
                    if (isNewVersion)
                    {
                        var pkg = PackageUploadBuilder.NewPackageVersion(l, files, packageUploadHandle);
                        while (ret == null && count < maxRetries)
                        {
                            count++;
                            ret = Client.ExecuteAndDeserialize(pkg);
                        }
                    }
                    else
                    {
                        var pkg = PackageUploadBuilder.NewPackage(l, files, packageUploadHandle);
                        while (ret == null && count < maxRetries)
                        {
                            count++;
                            ret = Client.ExecuteAndDeserialize(pkg);
                        }
                    }
                    if (ret == null)
                    {
                        packageUploadHandle.Error("Failed to submit.  Try again later.");
                        return;
                    }

                    if (ret != null && !ret.success)
                    {
                        packageUploadHandle.Error(ret.message);
                        return;
                    }

                    packageUploadHandle.Done(null);
                }
                catch (Exception e)
                {
                    packageUploadHandle.Error(e.GetType() + ": " + e.Message);
                }
            };

            new Thread(start).Start();

            return(packageUploadHandle);
        }
Beispiel #5
0
 public Package(string directory, string name, string versionName, string license)
 {
     RootDirectory     = directory;
     Name              = name;
     License           = license;
     VersionName       = versionName;
     LoadedTypes       = new ObservableCollection <Type>();
     LoadedAssemblies  = new ObservableCollection <PackageAssembly>();
     Dependencies      = new ObservableCollection <PackageDependency>();
     LoadedCustomNodes = new ObservableCollection <CustomNodeInfo>();
     AdditionalFiles   = new ObservableCollection <PackageFileInfo>();
     Header            = PackageUploadBuilder.NewRequestBody(this);
 }
Beispiel #6
0
        public PackageUploadHandle Publish(Package l, List <string> files, bool isNewVersion, bool isTestMode)
        {
            this.OnRequestAuthentication();

            var nv          = new ValidateAuth();
            var pkgResponse = Client.ExecuteAndDeserialize(nv);

            if (pkgResponse == null)
            {
                throw new AuthenticationException(
                          "It looks like you're not logged into Autodesk 360.  Log in to submit a package.");
            }

            var packageUploadHandle = new PackageUploadHandle(PackageUploadBuilder.NewPackageHeader(l));

            return(PublishPackage(isNewVersion, l, files, packageUploadHandle, isTestMode));
        }
Beispiel #7
0
        private PackageUploadHandle PublishPackage(bool isNewVersion,
                                                   Package l,
                                                   List <string> files,
                                                   PackageUploadHandle packageUploadHandle)
        {
            Task.Factory.StartNew(() =>
            {
                try
                {
                    ResponseBody ret = null;
                    if (isNewVersion)
                    {
                        var pkg = PackageUploadBuilder.NewPackageVersion(this.dynamoModel, l, files, packageUploadHandle);

                        packageUploadHandle.UploadState = PackageUploadHandle.State.Uploading;
                        ret = Client.ExecuteAndDeserialize(pkg);
                    }
                    else
                    {
                        var pkg = PackageUploadBuilder.NewPackage(this.dynamoModel, l, files, packageUploadHandle);

                        packageUploadHandle.UploadState = PackageUploadHandle.State.Uploading;
                        ret = Client.ExecuteAndDeserialize(pkg);
                    }
                    if (ret == null)
                    {
                        packageUploadHandle.Error("Failed to submit.  Try again later.");
                        return;
                    }

                    if (ret != null && !ret.success)
                    {
                        packageUploadHandle.Error(ret.message);
                        return;
                    }

                    packageUploadHandle.Done(null);
                }
                catch (Exception e)
                {
                    packageUploadHandle.Error(e.GetType() + ": " + e.Message);
                }
            });

            return(packageUploadHandle);
        }
Beispiel #8
0
        private void WritePackageHeader(Package package, IDirectoryInfo rootDir)
        {
            var pkgHeader = PackageUploadBuilder.NewRequestBody(package);

            // build the package header json, which will be stored with the pkg
            var jsSer        = new JsonSerializer();
            var pkgHeaderStr = jsSer.Serialize(pkgHeader);

            // write the pkg header to the root directory of the pkg
            var headerPath = Path.Combine(rootDir.FullName, PackageJsonName);

            if (fileSystem.FileExists(headerPath))
            {
                fileSystem.DeleteFile(headerPath);
            }

            fileSystem.WriteAllText(headerPath, pkgHeaderStr);
        }
        /// <summary>
        ///     Validate the package manager url and initialize the PackageManagerClient object
        /// </summary>
        public void Startup(StartupParams startupParams)
        {
            var path = this.GetType().Assembly.Location;
            var config = ConfigurationManager.OpenExeConfiguration(path);
            var key = config.AppSettings.Settings["packageManagerAddress"];
            string url = null;
            if (key != null)
            {
                url = key.Value;
            }

            OnMessageLogged(LogMessage.Info("Dynamo will use the package manager server at : " + url));

            if (!Uri.IsWellFormedUriString(url, UriKind.Absolute))
            {
                throw new ArgumentException("Incorrectly formatted URL provided for Package Manager address.", "url");
            }

            PackageLoader = new PackageLoader(startupParams.PathManager.PackagesDirectories);
            PackageLoader.MessageLogged += OnMessageLogged;
            RequestLoadNodeLibraryHandler = startupParams.LibraryLoader.LoadNodeLibrary;
            RequestLoadCustomNodeDirectoryHandler = (dir) => startupParams.CustomNodeManager
                    .AddUninitializedCustomNodesInPath(dir, DynamoModel.IsTestMode, true);

            PackageLoader.RequestLoadNodeLibrary += RequestLoadNodeLibraryHandler;
            PackageLoader.RequestLoadCustomNodeDirectory += RequestLoadCustomNodeDirectoryHandler;
                
            var dirBuilder = new PackageDirectoryBuilder(
                new MutatingFileSystem(),
                new CustomNodePathRemapper(startupParams.CustomNodeManager, DynamoModel.IsTestMode));

            var uploadBuilder = new PackageUploadBuilder(dirBuilder, new MutatingFileCompressor());

            PackageManagerClient = new PackageManagerClient(
                new GregClient(startupParams.AuthProvider, url),
                uploadBuilder, PackageLoader.DefaultPackagesDirectory);
        }
Beispiel #10
0
        internal PackageUploadHandle Publish(Package package, List <string> files, bool isNewVersion, bool isTestMode)
        {
            var packageUploadHandle = new PackageUploadHandle(PackageUploadBuilder.NewPackageHeader(package));

            return(PublishPackage(isNewVersion, package, files, packageUploadHandle, isTestMode));
        }