diff --git a/src/DynamoCore/Configuration/ExecutionSession.cs b/src/DynamoCore/Configuration/ExecutionSession.cs index efb62792d36..b738d2f7a89 100644 --- a/src/DynamoCore/Configuration/ExecutionSession.cs +++ b/src/DynamoCore/Configuration/ExecutionSession.cs @@ -26,6 +26,7 @@ public ExecutionSession(Scheduler.UpdateGraphAsyncTask updateTask, DynamoModel m parameters[ParameterKeys.LastExecutionDuration] = new TimeSpan(updateTask.ExecutionEndTime.TickCount - updateTask.ExecutionStartTime.TickCount); parameters[ParameterKeys.PackagePaths] = pathManager.PackagesDirectories; parameters[ParameterKeys.Logger] = model.Logger; + parameters[ParameterKeys.NoNetworkMode] = model.NoNetworkMode; } /// diff --git a/src/DynamoCore/DynamoCore.csproj b/src/DynamoCore/DynamoCore.csproj index 41229b0a294..90f6f6b66f4 100644 --- a/src/DynamoCore/DynamoCore.csproj +++ b/src/DynamoCore/DynamoCore.csproj @@ -31,7 +31,7 @@ - + @@ -130,22 +130,22 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + @@ -158,49 +158,49 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/DynamoCore/Models/DynamoModel.cs b/src/DynamoCore/Models/DynamoModel.cs index 7065d8a8659..5a8b921de8a 100644 --- a/src/DynamoCore/Models/DynamoModel.cs +++ b/src/DynamoCore/Models/DynamoModel.cs @@ -237,7 +237,7 @@ public static string Version internal bool IsServiceMode { get; set; } /// - /// True if Dynamo starts up in offline mode. + /// True if Dynamo is used in offline mode. /// internal bool NoNetworkMode { get; } diff --git a/src/DynamoCoreWpf/DynamoCoreWpf.csproj b/src/DynamoCoreWpf/DynamoCoreWpf.csproj index 770e54a9b4c..487c2353362 100644 --- a/src/DynamoCoreWpf/DynamoCoreWpf.csproj +++ b/src/DynamoCoreWpf/DynamoCoreWpf.csproj @@ -464,7 +464,7 @@ - + @@ -2263,19 +2263,19 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + @@ -2400,36 +2400,36 @@ - + - + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + diff --git a/src/DynamoCoreWpf/PublicAPI.Unshipped.txt b/src/DynamoCoreWpf/PublicAPI.Unshipped.txt index ace018da3a9..b5fc2e51946 100644 --- a/src/DynamoCoreWpf/PublicAPI.Unshipped.txt +++ b/src/DynamoCoreWpf/PublicAPI.Unshipped.txt @@ -2930,6 +2930,7 @@ Dynamo.ViewModels.PreferencesViewModel.UseHardwareAcceleration.get -> bool Dynamo.ViewModels.PreferencesViewModel.UseHardwareAcceleration.set -> void Dynamo.ViewModels.PreferencesViewModel.UseHostScaleUnits.get -> bool Dynamo.ViewModels.PreferencesViewModel.UseHostScaleUnits.set -> void +Dynamo.ViewModels.PreferencesViewModel.NoNetworkMode.get -> bool Dynamo.ViewModels.PreviewState Dynamo.ViewModels.PreviewState.ExecutionPreview = 1 -> Dynamo.ViewModels.PreviewState Dynamo.ViewModels.PreviewState.Hover = 2 -> Dynamo.ViewModels.PreviewState @@ -5922,4 +5923,4 @@ virtual Dynamo.Wpf.ViewModels.Watch3D.DefaultWatch3DViewModel.UpdateHelpers() -> virtual Dynamo.Wpf.ViewModels.Watch3D.DefaultWatch3DViewModel.ZoomToFit(object parameter) -> void virtual Dynamo.Wpf.ViewModels.Watch3D.HelixWatch3DViewModel.OnWatchExecution() -> void virtual Dynamo.Wpf.ViewModels.Watch3D.HelixWatch3DViewModel.UpdateUpstream() -> void -virtual UI.Prompts.PortPropertiesEditPrompt.OnPropertyChanged(System.ComponentModel.PropertyChangedEventArgs e) -> void +virtual UI.Prompts.PortPropertiesEditPrompt.OnPropertyChanged(System.ComponentModel.PropertyChangedEventArgs e) -> void \ No newline at end of file diff --git a/src/DynamoCoreWpf/ViewModels/Core/DynamoViewModel.cs b/src/DynamoCoreWpf/ViewModels/Core/DynamoViewModel.cs index 936493cf666..bc6cc6d4e5f 100644 --- a/src/DynamoCoreWpf/ViewModels/Core/DynamoViewModel.cs +++ b/src/DynamoCoreWpf/ViewModels/Core/DynamoViewModel.cs @@ -2839,12 +2839,12 @@ internal void ShowPackageManager(object parameters) internal bool CanShowPackageManagerSearch(object parameters) { - return !model.IsServiceMode; + return !model.IsServiceMode && !model.NoNetworkMode; } internal bool CanShowPackageManager(object parameters) { - return !model.IsServiceMode; + return !model.IsServiceMode && !model.NoNetworkMode; } /// diff --git a/src/DynamoCoreWpf/ViewModels/Menu/PreferencesViewModel.cs b/src/DynamoCoreWpf/ViewModels/Menu/PreferencesViewModel.cs index c0dd48deacd..8d68c5ad5c0 100644 --- a/src/DynamoCoreWpf/ViewModels/Menu/PreferencesViewModel.cs +++ b/src/DynamoCoreWpf/ViewModels/Menu/PreferencesViewModel.cs @@ -1346,6 +1346,24 @@ private void AddPythonEnginesOptions() /// public TrustedPathViewModel TrustedPathsViewModel { get; set; } + private bool noNetworkMode; + + /// + /// True if Dynamo is used in offline mode. + /// + public bool NoNetworkMode + { + get => noNetworkMode; + private set + { + if (noNetworkMode != value) + { + noNetworkMode = value; + RaisePropertyChanged(nameof(NoNetworkMode)); + } + } + } + /// /// Returns a boolean value indicating if the Settings importing was successful or not /// @@ -1469,6 +1487,8 @@ public PreferencesViewModel(DynamoViewModel dynamoViewModel) this.pythonScriptEditorTextOptions = dynamoViewModel.PythonScriptEditorTextOptions; this.dynamoViewModel = dynamoViewModel; + NoNetworkMode = dynamoViewModel.Model.NoNetworkMode; + if (dynamoViewModel.PackageManagerClientViewModel != null) { installedPackagesViewModel = new InstalledPackagesViewModel(dynamoViewModel, dynamoViewModel.PackageManagerClientViewModel.PackageManagerExtension.PackageLoader); diff --git a/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerClientViewModel.cs b/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerClientViewModel.cs index 116a616f867..b57dc83891a 100644 --- a/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerClientViewModel.cs +++ b/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerClientViewModel.cs @@ -343,7 +343,7 @@ public void PublishCurrentWorkspace(object m) public bool CanPublishCurrentWorkspace(object m) { - return DynamoViewModel.Model.CurrentWorkspace is CustomNodeWorkspaceModel && AuthenticationManager.HasAuthProvider; + return DynamoViewModel.Model.CurrentWorkspace is CustomNodeWorkspaceModel && AuthenticationManager.HasAuthProvider && !Model.NoNetworkMode; } public void PublishNewPackage(object m) @@ -363,7 +363,7 @@ public void PublishNewPackage(object m) public bool CanPublishNewPackage(object m) { - return AuthenticationManager.HasAuthProvider; + return AuthenticationManager.HasAuthProvider && !Model.NoNetworkMode; } public void PublishCustomNode(Function m) @@ -393,7 +393,7 @@ public void PublishCustomNode(Function m) public bool CanPublishCustomNode(Function m) { - return AuthenticationManager.HasAuthProvider && m != null; + return AuthenticationManager.HasAuthProvider && m != null && !Model.NoNetworkMode; } public void PublishSelectedNodes(object m) @@ -453,7 +453,7 @@ public void PublishSelectedNodes(object m) public bool CanPublishSelectedNodes(object m) { return DynamoSelection.Instance.Selection.Count > 0 && - DynamoSelection.Instance.Selection.All(x => x is Function) && AuthenticationManager.HasAuthProvider; ; + DynamoSelection.Instance.Selection.All(x => x is Function) && AuthenticationManager.HasAuthProvider && !Model.NoNetworkMode; } private void ShowNodePublishInfo() diff --git a/src/DynamoCoreWpf/Views/Menu/PreferencesView.xaml b/src/DynamoCoreWpf/Views/Menu/PreferencesView.xaml index f63a3bf4882..fb40fc5ae70 100644 --- a/src/DynamoCoreWpf/Views/Menu/PreferencesView.xaml +++ b/src/DynamoCoreWpf/Views/Menu/PreferencesView.xaml @@ -14,6 +14,7 @@ xmlns:fa="clr-namespace:FontAwesome5;assembly=FontAwesome5.Net" xmlns:packagemanager="clr-namespace:Dynamo.Wpf.Views.PackageManager" xmlns:trustedpaths="clr-namespace:Dynamo.Wpf.Views" + xmlns:converters="clr-namespace:Dynamo.Controls;assembly=DynamoCoreWpf" xmlns:wpfControls="clr-namespace:Dynamo.Wpf.Controls" d:DataContext="{d:DesignInstance Type=viewModels:PreferencesViewModel}" WindowStartupLocation="CenterOwner" @@ -1900,7 +1901,19 @@ + Text="{x:Static p:Resources.InstalledPackagePartialHyperlinkMessage}" + IsHitTestVisible="{Binding NoNetworkMode, Converter={StaticResource InverseBooleanConverter}}"> + + + + . diff --git a/src/DynamoMLDataPipeline/DynamoMLDataPipeline.csproj b/src/DynamoMLDataPipeline/DynamoMLDataPipeline.csproj index d70de1d7a9d..b22d6e79724 100644 --- a/src/DynamoMLDataPipeline/DynamoMLDataPipeline.csproj +++ b/src/DynamoMLDataPipeline/DynamoMLDataPipeline.csproj @@ -11,7 +11,7 @@ - + diff --git a/src/DynamoPackages/DynamoPackages.csproj b/src/DynamoPackages/DynamoPackages.csproj index c409d05e0f5..6c116ff0f0c 100644 --- a/src/DynamoPackages/DynamoPackages.csproj +++ b/src/DynamoPackages/DynamoPackages.csproj @@ -30,7 +30,7 @@ - + diff --git a/src/DynamoPackages/PackageManagerClient.cs b/src/DynamoPackages/PackageManagerClient.cs index b808f243a38..66aeed29628 100644 --- a/src/DynamoPackages/PackageManagerClient.cs +++ b/src/DynamoPackages/PackageManagerClient.cs @@ -2,7 +2,10 @@ using System.Collections.Generic; using System.IO; using System.Linq; +using System.Net; +using System.Net.Http; using System.Text.Json; +using System.Threading; using System.Threading.Tasks; using Dynamo.Graph.Workspaces; using Greg; @@ -49,14 +52,18 @@ public string BaseUrl get { return this.client.BaseUrl; } } + internal readonly bool NoNetworkMode; + #endregion - internal PackageManagerClient(IGregClient client, IPackageUploadBuilder builder, string packageUploadDirectory) + internal PackageManagerClient(IGregClient client, IPackageUploadBuilder builder, string packageUploadDirectory, + bool noNetworkMode = false) { this.packageUploadDirectory = packageUploadDirectory; this.uploadBuilder = builder; this.client = client; this.packageMaintainers = new Dictionary(); + this.NoNetworkMode = noNetworkMode; } internal bool Upvote(string packageId) @@ -340,13 +347,13 @@ internal PackageManagerResult Undeprecate(string name) internal bool DoesCurrentUserOwnPackage(Package package,string username) { bool value; - if (this.packageMaintainers.Count > 0 && this.packageMaintainers.TryGetValue(package.Name, out value)) { + if (packageMaintainers.Count > 0 && packageMaintainers.TryGetValue(package.Name, out value)) { return value; } var pkg = new PackageInfo(package.Name, new Version(package.VersionName)); var mnt = GetPackageMaintainers(pkg); value = (mnt != null) && (mnt.maintainers.Any(maintainer => maintainer.username.Equals(username))); - this.packageMaintainers[package.Name] = value; + packageMaintainers[package.Name] = value; return value; } @@ -386,7 +393,7 @@ internal void LoadCompatibilityMap() { compatibilityMap = new Dictionary>(); - var compatibilityMapList = this.CompatibilityMap(); + var compatibilityMapList = CompatibilityMap(); PackageManagerClient.compatibilityMapList = compatibilityMapList; // Loads the full CompatibilityMap as a side-effect foreach (var host in compatibilityMapList) diff --git a/src/DynamoPackages/PackageManagerExtension.cs b/src/DynamoPackages/PackageManagerExtension.cs index 257eb61a63e..2782118f0b9 100644 --- a/src/DynamoPackages/PackageManagerExtension.cs +++ b/src/DynamoPackages/PackageManagerExtension.cs @@ -2,12 +2,14 @@ using System.Collections.Generic; using System.Collections.Specialized; using System.Linq; +using System.Net.Http; using System.Reflection; using Dynamo.Extensions; using Dynamo.Graph.Workspaces; using Dynamo.Interfaces; using Dynamo.Logging; using Dynamo.Models; +using Dynamo.Session; using Greg; using Greg.Responses; @@ -157,12 +159,13 @@ public void Startup(StartupParams startupParams) var packageUploadDirectory = startupParams.PathManager.DefaultPackagesDirectory; - PackageManagerClient = new PackageManagerClient( - new GregClient(startupParams.AuthProvider, url), - uploadBuilder, packageUploadDirectory); - noNetworkMode = startupParams.NoNetworkMode; + var client = noNetworkMode ? new GregClient(startupParams.AuthProvider, url, + new HttpClient(new NoNetworkModeHandler())) : new GregClient(startupParams.AuthProvider, url); + PackageManagerClient = new PackageManagerClient(client, uploadBuilder, packageUploadDirectory, noNetworkMode); + + //we don't ask dpm for the compatibility map in offline mode. if (!noNetworkMode) { diff --git a/src/DynamoPackages/Properties/Resources.Designer.cs b/src/DynamoPackages/Properties/Resources.Designer.cs index 44c2d96fe09..eea0f4fcff2 100644 --- a/src/DynamoPackages/Properties/Resources.Designer.cs +++ b/src/DynamoPackages/Properties/Resources.Designer.cs @@ -78,6 +78,15 @@ public static string CannotRemovePackageAssemblyTitle { } } + /// + /// Looks up a localized string similar to Package download is disabled in no-network mode.. + /// + public static string DownloadPackageDisabled { + get { + return ResourceManager.GetString("DownloadPackageDisabled", resourceCulture); + } + } + /// /// Looks up a localized string similar to The folder '{0}' does not exist. /// diff --git a/src/DynamoPackages/Properties/Resources.en-US.resx b/src/DynamoPackages/Properties/Resources.en-US.resx index 36b2910a0d1..49e86589f20 100644 --- a/src/DynamoPackages/Properties/Resources.en-US.resx +++ b/src/DynamoPackages/Properties/Resources.en-US.resx @@ -124,6 +124,9 @@ Cannot update assembly + + Package download is disabled in no-network mode. + The folder '{0}' does not exist This warning message is shown (during start up) when user specifies additional folders in DynamoSettings.xml file but the folders do not exist. @@ -140,4 +143,4 @@ {0} was not scanned for packages because a preference setting disabled loading from that location." This warning message is shown when a package directory is skipped due to a preference setting disabling loads from that location type. - + \ No newline at end of file diff --git a/src/DynamoPackages/Properties/Resources.resx b/src/DynamoPackages/Properties/Resources.resx index 36b2910a0d1..49e86589f20 100644 --- a/src/DynamoPackages/Properties/Resources.resx +++ b/src/DynamoPackages/Properties/Resources.resx @@ -124,6 +124,9 @@ Cannot update assembly + + Package download is disabled in no-network mode. + The folder '{0}' does not exist This warning message is shown (during start up) when user specifies additional folders in DynamoSettings.xml file but the folders do not exist. @@ -140,4 +143,4 @@ {0} was not scanned for packages because a preference setting disabled loading from that location." This warning message is shown when a package directory is skipped due to a preference setting disabling loads from that location type. - + \ No newline at end of file diff --git a/src/Libraries/CoreNodeModels/WebRequest.cs b/src/Libraries/CoreNodeModels/WebRequest.cs index 492439eada2..0f27f887a3c 100644 --- a/src/Libraries/CoreNodeModels/WebRequest.cs +++ b/src/Libraries/CoreNodeModels/WebRequest.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using CoreNodeModels.Properties; using DSCore; @@ -9,7 +9,7 @@ namespace CoreNodeModels { [NodeName("Web Request")] - [NodeDescription("WebRequestDescription", typeof(Resources))] + [NodeDescription(nameof(Resources.WebRequestDescription), typeof(Resources))] [NodeCategory(BuiltinNodeCategories.CORE_WEB)] [IsDesignScriptCompatible] [OutPortTypes("var[]..[]")] diff --git a/src/Libraries/CoreNodes/Web.cs b/src/Libraries/CoreNodes/Web.cs index 518a45714da..c546e23d622 100644 --- a/src/Libraries/CoreNodes/Web.cs +++ b/src/Libraries/CoreNodes/Web.cs @@ -2,6 +2,8 @@ using System.IO; using Autodesk.DesignScript.Runtime; using Dynamo.Configuration; +using Dynamo.Events; +using Dynamo.Session; namespace DSCore { @@ -10,6 +12,9 @@ public class Web { public static string WebRequestByUrl(string url) { + // Prevent the node from executing in no network mode. + ExecutionSessionHelper.ThrowIfNoNetworkMode(); + if (string.IsNullOrEmpty(url)) { throw new ArgumentException(Properties.Resources.WebRequestNullUrlMessage); diff --git a/src/NodeServices/DynamoServices.csproj b/src/NodeServices/DynamoServices.csproj index caae8a34e55..a2bfa4ba341 100644 --- a/src/NodeServices/DynamoServices.csproj +++ b/src/NodeServices/DynamoServices.csproj @@ -25,4 +25,20 @@ + + + True + True + Resources.resx + + + + + + + + ResXFileCodeGenerator + Resources.Designer.cs + + \ No newline at end of file diff --git a/src/NodeServices/ExecutionSession.cs b/src/NodeServices/ExecutionSession.cs index 480d841eff0..db550990698 100644 --- a/src/NodeServices/ExecutionSession.cs +++ b/src/NodeServices/ExecutionSession.cs @@ -1,4 +1,10 @@ +using System; using System.Collections.Generic; +using System.Net; +using System.Net.Http; +using System.Threading; +using System.Threading.Tasks; +using Dynamo.Events; namespace Dynamo.Session { @@ -81,5 +87,55 @@ public class ParameterKeys /// The return value is an ILogger /// public static readonly string Logger = nameof(Logger); + + /// + /// True if Dynamo is used in offline mode. + /// + public static readonly string NoNetworkMode = nameof(NoNetworkMode); + } + + public static class ExecutionSessionHelper + { + /// + /// Throw exception in no-network mode. + /// This helper method can be used to display a warning on a node that + /// needs to be prevented from running when no-network mode is enabled. + /// + /// + public static void ThrowIfNoNetworkMode() + { + var session = ExecutionEvents.ActiveSession; + if (session != null) + { + if ((bool)session.GetParameterValue(ParameterKeys.NoNetworkMode)) + { + throw new InvalidOperationException(DynamoServices.Properties.Resources.WebRequestOfflineWarning); + } + } + } + } + + /// + /// Custom HTTP message handler to simulate an "offline mode" (no-network mode) for network requests. + /// It can be used to intercept all outgoing HTTP requests and returns a predefined response indicating that the + /// application is offline. + /// + public class NoNetworkModeHandler : DelegatingHandler + { + public NoNetworkModeHandler() : base(new HttpClientHandler()) + { + } + + protected override Task SendAsync( + HttpRequestMessage request, CancellationToken cancellationToken) + { + var json = "{\"success\":false,\"message\":\"Application is in offline mode\",\"content\":null}"; + var response = new HttpResponseMessage(HttpStatusCode.ServiceUnavailable) + { + Content = new StringContent(json, System.Text.Encoding.UTF8, "application/json"), + ReasonPhrase = "Offline Mode Enabled" + }; + return Task.FromResult(response); + } } } diff --git a/src/NodeServices/Properties/Resources.Designer.cs b/src/NodeServices/Properties/Resources.Designer.cs new file mode 100644 index 00000000000..7722b3a5469 --- /dev/null +++ b/src/NodeServices/Properties/Resources.Designer.cs @@ -0,0 +1,72 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace DynamoServices.Properties { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("DynamoServices.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Looks up a localized string similar to The Web Request node is unavailable in No Network mode.. + /// + internal static string WebRequestOfflineWarning { + get { + return ResourceManager.GetString("WebRequestOfflineWarning", resourceCulture); + } + } + } +} diff --git a/src/NodeServices/Properties/Resources.en-US.resx b/src/NodeServices/Properties/Resources.en-US.resx new file mode 100644 index 00000000000..9091fe5abde --- /dev/null +++ b/src/NodeServices/Properties/Resources.en-US.resx @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + The Web Request node is unavailable in No Network mode. + + diff --git a/src/NodeServices/Properties/Resources.resx b/src/NodeServices/Properties/Resources.resx new file mode 100644 index 00000000000..9091fe5abde --- /dev/null +++ b/src/NodeServices/Properties/Resources.resx @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + The Web Request node is unavailable in No Network mode. + + diff --git a/src/PackageDetailsViewExtension/PackageDetailsViewExtension.csproj b/src/PackageDetailsViewExtension/PackageDetailsViewExtension.csproj index 43a12c841a1..af3c2c15b98 100644 --- a/src/PackageDetailsViewExtension/PackageDetailsViewExtension.csproj +++ b/src/PackageDetailsViewExtension/PackageDetailsViewExtension.csproj @@ -14,7 +14,7 @@ false - + diff --git a/src/Tools/NodeDocumentationMarkdownGenerator/NodeDocumentationMarkdownGenerator.csproj b/src/Tools/NodeDocumentationMarkdownGenerator/NodeDocumentationMarkdownGenerator.csproj index 81a3426f27a..3ae5d61e936 100644 --- a/src/Tools/NodeDocumentationMarkdownGenerator/NodeDocumentationMarkdownGenerator.csproj +++ b/src/Tools/NodeDocumentationMarkdownGenerator/NodeDocumentationMarkdownGenerator.csproj @@ -12,7 +12,7 @@ - + diff --git a/test/DynamoCoreTests/DynamoCoreTests.csproj b/test/DynamoCoreTests/DynamoCoreTests.csproj index 678a9b0f7c0..fca4afde67b 100644 --- a/test/DynamoCoreTests/DynamoCoreTests.csproj +++ b/test/DynamoCoreTests/DynamoCoreTests.csproj @@ -34,7 +34,7 @@ - + all compile; build; native; contentfiles; analyzers; buildtransitive diff --git a/test/DynamoCoreWpf2Tests/DynamoCoreWpf2Tests.csproj b/test/DynamoCoreWpf2Tests/DynamoCoreWpf2Tests.csproj index 8cd45eaa220..c66ee9af32a 100644 --- a/test/DynamoCoreWpf2Tests/DynamoCoreWpf2Tests.csproj +++ b/test/DynamoCoreWpf2Tests/DynamoCoreWpf2Tests.csproj @@ -36,7 +36,7 @@ - + all compile; build; native; contentfiles; analyzers; buildtransitive diff --git a/test/DynamoCoreWpf2Tests/PackageManager/PackageManagerControlTests.cs b/test/DynamoCoreWpf2Tests/PackageManager/PackageManagerControlTests.cs index ead9b7272ab..63798baaed7 100644 --- a/test/DynamoCoreWpf2Tests/PackageManager/PackageManagerControlTests.cs +++ b/test/DynamoCoreWpf2Tests/PackageManager/PackageManagerControlTests.cs @@ -23,7 +23,7 @@ public void SearchBoxControlTextTests() { // Setup var mockGreg = new Mock(); - var clientmock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty); + var clientmock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty, false); var pmCVM = new Mock(ViewModel, clientmock.Object) { CallBase = true }; var packageManagerSearchViewModel = new PackageManagerSearchViewModel(pmCVM.Object); packageManagerSearchViewModel.RegisterTransientHandlers(); diff --git a/test/DynamoCoreWpf2Tests/PackageManager/PackageManagerSearchElementViewModelTests.cs b/test/DynamoCoreWpf2Tests/PackageManager/PackageManagerSearchElementViewModelTests.cs index 885f81cd7d0..8b337a269df 100644 --- a/test/DynamoCoreWpf2Tests/PackageManager/PackageManagerSearchElementViewModelTests.cs +++ b/test/DynamoCoreWpf2Tests/PackageManager/PackageManagerSearchElementViewModelTests.cs @@ -49,7 +49,7 @@ public void TestPackageManagerSearchElementCanInstall() string formItFilterName = "FormIt"; var mockGreg = new Mock(); - var clientmock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty); + var clientmock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty, false); var pmCVM = new Mock(ViewModel, clientmock.Object) { CallBase = true }; ; var ext = Model.GetPackageManagerExtension(); @@ -203,7 +203,7 @@ public void PackageSearchDialogSearchIntersectAgainstHostFilters() List intersectionPackagesName = new List { "DynamoTestPackage1", "DynamoTestPackage2" }; var mockGreg = new Mock(); - var clientmock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty); + var clientmock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty, false); var pmCVM = new Mock(ViewModel, clientmock.Object) {CallBase=true }; var packageManagerSearchViewModel = new PackageManagerSearchViewModel(pmCVM.Object); @@ -306,7 +306,7 @@ public void PackageSearchDialogSearchTestStatusFilters() List deprecatedPackagesName = new List { "DynamoTestPackage1", "DynamoTestPackage2" }; var mockGreg = new Mock(); - var clientmock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty); + var clientmock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty, false); var pmCVM = new Mock(ViewModel, clientmock.Object) { CallBase = true }; var packageManagerSearchViewModel = new PackageManagerSearchViewModel(pmCVM.Object); @@ -454,7 +454,7 @@ public void PackageSearchDialogSearchTestDependencyFilters() List noDependencyPackagesName = new List { "DynamoIronPython2.7", "dynamo", "mise en barre", "Test-PackageDependencyFilter" }; var mockGreg = new Mock(); - var clientmock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty); + var clientmock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty, false); var pmCVM = new Mock(ViewModel, clientmock.Object) { CallBase = true }; var packageManagerSearchViewModel = new PackageManagerSearchViewModel(pmCVM.Object); @@ -579,7 +579,7 @@ public void PackageSearchDialogSearchTestCompatibilityFilters() List unknownCompatibilityPackagesName = new List { "DynamoXCompatPackage" }; var mockGreg = new Mock(); - var clientmock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty); + var clientmock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty, false); var pmCVM = new Mock(ViewModel, clientmock.Object) { CallBase = true }; var packageManagerSearchViewModel = new PackageManagerSearchViewModel(pmCVM.Object); @@ -696,7 +696,7 @@ public void PackageSearchDialogSearchDifferentLanguage() List packageHeaders = new List(); var mockGreg = new Mock(); - var clientmock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty); + var clientmock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty, false); var pmCVM = new Mock(ViewModel, clientmock.Object) { CallBase = true }; List cachedPackages = new List(); foreach (var packageName in packagesNameDifferentLanguages) @@ -762,7 +762,7 @@ public void PackageSearchOrderAfterTextReset() List packagesVotes = new List { 50, 60, 90, 40 }; var mockGreg = new Mock(); - var clientmock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty); + var clientmock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty, false); var pmCVM = new Mock(ViewModel, clientmock.Object) { CallBase = true }; var packageManagerSearchVM = new PackageManagerSearchViewModel(pmCVM.Object); packageManagerSearchVM.RegisterTransientHandlers(); @@ -859,7 +859,7 @@ public void PackageSearchWithWhitespaceInName() List packageHeaders = new List(); var mockGreg = new Mock(); - var clientMock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty); + var clientMock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty, false); var pmCVM = new Mock(ViewModel, clientMock.Object) { CallBase = true }; List cachedPackages = new List(); foreach (var packageName in packagesListNames) @@ -1225,7 +1225,7 @@ public void HostCompatibilityFiltersExclusivity() { var mockGreg = new Mock(); - var clientMock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty); + var clientMock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty, false); var pmCVM = new Mock(ViewModel, clientMock.Object) { CallBase = true }; var pmSVM = new PackageManagerSearchViewModel(pmCVM.Object); pmSVM.RegisterTransientHandlers(); diff --git a/test/DynamoCoreWpf2Tests/PackageManager/PackageManagerUITests.cs b/test/DynamoCoreWpf2Tests/PackageManager/PackageManagerUITests.cs index 3ee4f301967..160e59af31a 100644 --- a/test/DynamoCoreWpf2Tests/PackageManager/PackageManagerUITests.cs +++ b/test/DynamoCoreWpf2Tests/PackageManager/PackageManagerUITests.cs @@ -1202,7 +1202,7 @@ public void PackageManagerDownloadsBeforeInstalling() var mockGreg = new Mock(); - var clientmock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty); + var clientmock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty, false); var pmVmMock = new Mock(ViewModel, clientmock.Object) { CallBase = true }; var sharedEngineVersion = DynamoModel.Version; @@ -1318,7 +1318,7 @@ public void PackageManagerWarnWhenInstallingPackageTargetingOtherHost() var mockGreg = new Mock(); - var clientmock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty); + var clientmock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty, false); var pmVmMock = new Mock(ViewModel, clientmock.Object); var pmMock = new Mock(); @@ -1424,7 +1424,7 @@ public void PackageManagerWarnWhenInstallingPackageTargetingOtherHost() public void InstallsPackagesEvenIfSomeFailToDownloadShouldNotThrow() { var mockGreg = new Mock(); - var clientmock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty); + var clientmock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty, false); var pmVmMock = new PackageManagerClientViewModel(ViewModel, clientmock.Object); Assert.DoesNotThrow(() => { diff --git a/test/DynamoCoreWpf2Tests/PackageManager/PackageManagerViewModelTests.cs b/test/DynamoCoreWpf2Tests/PackageManager/PackageManagerViewModelTests.cs index 14f1c2ce0a6..8ed917a941e 100644 --- a/test/DynamoCoreWpf2Tests/PackageManager/PackageManagerViewModelTests.cs +++ b/test/DynamoCoreWpf2Tests/PackageManager/PackageManagerViewModelTests.cs @@ -17,7 +17,7 @@ internal class PackageManagerViewModelTests : SystemTestBase public void PackageManagerLoadAllViewModelsTests() { var mockGreg = new Mock(); - var clientmock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty); + var clientmock = new Mock(mockGreg.Object, MockMaker.Empty(), string.Empty, false); var pmCVM = new Mock(ViewModel, clientmock.Object) { CallBase = true }; ; var packageManagerSearchViewModel = new PackageManagerSearchViewModel(pmCVM.Object); diff --git a/test/DynamoCoreWpf3Tests/DynamoCoreWpf3Tests.csproj b/test/DynamoCoreWpf3Tests/DynamoCoreWpf3Tests.csproj index f18f32b9690..ed0d1e60e80 100644 --- a/test/DynamoCoreWpf3Tests/DynamoCoreWpf3Tests.csproj +++ b/test/DynamoCoreWpf3Tests/DynamoCoreWpf3Tests.csproj @@ -36,7 +36,7 @@ - + all compile; build; native; contentfiles; analyzers; buildtransitive diff --git a/test/DynamoCoreWpfTests/DynamoCoreWpfTests.csproj b/test/DynamoCoreWpfTests/DynamoCoreWpfTests.csproj index ed9647d3705..86f9d74579a 100644 --- a/test/DynamoCoreWpfTests/DynamoCoreWpfTests.csproj +++ b/test/DynamoCoreWpfTests/DynamoCoreWpfTests.csproj @@ -37,7 +37,7 @@ - + all compile; build; native; contentfiles; analyzers; buildtransitive diff --git a/test/Libraries/PackageManagerTests/PackageManagerTests.csproj b/test/Libraries/PackageManagerTests/PackageManagerTests.csproj index 94d85227180..2dd46a2fe1b 100644 --- a/test/Libraries/PackageManagerTests/PackageManagerTests.csproj +++ b/test/Libraries/PackageManagerTests/PackageManagerTests.csproj @@ -20,7 +20,7 @@ - + all compile; build; native; contentfiles; analyzers; buildtransitive