diff --git a/Apprise/Apprise.csproj b/Apprise/Apprise.csproj index 0a789ddf..a62295e1 100644 Binary files a/Apprise/Apprise.csproj and b/Apprise/Apprise.csproj differ diff --git a/Apprise/Plugin.cs b/Apprise/Plugin.cs index f12c5128..ac9f3450 100644 --- a/Apprise/Plugin.cs +++ b/Apprise/Plugin.cs @@ -3,7 +3,7 @@ namespace FileFlows.Apprise; public class Plugin : FileFlows.Plugin.IPlugin { public string Name => "Apprise Nodes"; - public string MinimumVersion => "0.5.2.690"; + public string MinimumVersion => "0.6.1.900"; public void Init() { diff --git a/BasicNodes/BasicNodes.csproj b/BasicNodes/BasicNodes.csproj index e1e53544..f5a66865 100644 Binary files a/BasicNodes/BasicNodes.csproj and b/BasicNodes/BasicNodes.csproj differ diff --git a/BasicNodes/Plugin.cs b/BasicNodes/Plugin.cs index a71395ca..9aa56529 100644 --- a/BasicNodes/Plugin.cs +++ b/BasicNodes/Plugin.cs @@ -5,7 +5,7 @@ namespace FileFlows.BasicNodes public class Plugin : FileFlows.Plugin.IPlugin { public string Name => "Basic Nodes"; - public string MinimumVersion => "0.5.2.690"; + public string MinimumVersion => "0.6.1.900"; public void Init() { } } diff --git a/ChecksumNodes/ChecksumNodes.csproj b/ChecksumNodes/ChecksumNodes.csproj index 1d587c5c..b69b792b 100644 Binary files a/ChecksumNodes/ChecksumNodes.csproj and b/ChecksumNodes/ChecksumNodes.csproj differ diff --git a/ChecksumNodes/Plugin.cs b/ChecksumNodes/Plugin.cs index 17b376e9..23ca459f 100644 --- a/ChecksumNodes/Plugin.cs +++ b/ChecksumNodes/Plugin.cs @@ -3,7 +3,7 @@ namespace ChecksumNodes public class Plugin : IPlugin { public string Name => "Checksum Nodes"; - public string MinimumVersion => "0.5.2.690"; + public string MinimumVersion => "0.6.1.900"; public void Init() { diff --git a/CollectionNodes/CollectionNodes.csproj b/CollectionNodes/CollectionNodes.csproj index e11220f9..14567a58 100644 Binary files a/CollectionNodes/CollectionNodes.csproj and b/CollectionNodes/CollectionNodes.csproj differ diff --git a/CollectionNodes/Plugin.cs b/CollectionNodes/Plugin.cs index fbcaad23..627e6b4c 100644 --- a/CollectionNodes/Plugin.cs +++ b/CollectionNodes/Plugin.cs @@ -6,7 +6,7 @@ namespace CollectionNodes public class Plugin : IPlugin { public string Name => "Collection Nodes"; - public string MinimumVersion => "0.5.2.690"; + public string MinimumVersion => "0.6.1.900"; [Folder(1)] [Required] diff --git a/DiscordNodes/DiscordNodes.csproj b/DiscordNodes/DiscordNodes.csproj index 0c29df03..03705af6 100644 Binary files a/DiscordNodes/DiscordNodes.csproj and b/DiscordNodes/DiscordNodes.csproj differ diff --git a/DiscordNodes/Plugin.cs b/DiscordNodes/Plugin.cs index dc3c5021..2827a322 100644 --- a/DiscordNodes/Plugin.cs +++ b/DiscordNodes/Plugin.cs @@ -3,7 +3,7 @@ namespace FileFlows.DiscordNodes; public class Plugin : FileFlows.Plugin.IPlugin { public string Name => "Discord"; - public string MinimumVersion => "0.5.2.690"; + public string MinimumVersion => "0.6.1.900"; public void Init() { diff --git a/EmailNodes/EmailNodes.csproj b/EmailNodes/EmailNodes.csproj index 9f862235..363aced3 100644 Binary files a/EmailNodes/EmailNodes.csproj and b/EmailNodes/EmailNodes.csproj differ diff --git a/EmailNodes/Plugin.cs b/EmailNodes/Plugin.cs index f170190c..b945fe77 100644 --- a/EmailNodes/Plugin.cs +++ b/EmailNodes/Plugin.cs @@ -3,7 +3,7 @@ public class Plugin : IPlugin { public string Name => "Email"; - public string MinimumVersion => "0.5.2.690"; + public string MinimumVersion => "0.6.1.900"; public void Init() { diff --git a/Emby/Emby.csproj b/Emby/Emby.csproj index 2f3b21c2..6641c68d 100644 Binary files a/Emby/Emby.csproj and b/Emby/Emby.csproj differ diff --git a/Emby/Plugin.cs b/Emby/Plugin.cs index 8bbcb43e..b8206ac4 100644 --- a/Emby/Plugin.cs +++ b/Emby/Plugin.cs @@ -3,7 +3,7 @@ namespace FileFlows.Emby; public class Plugin : FileFlows.Plugin.IPlugin { public string Name => "Emby"; - public string MinimumVersion => "0.5.2.690"; + public string MinimumVersion => "0.6.1.900"; public void Init() { diff --git a/Gotify/Gotify.csproj b/Gotify/Gotify.csproj index ab12d49c..2c5aaf02 100644 Binary files a/Gotify/Gotify.csproj and b/Gotify/Gotify.csproj differ diff --git a/Gotify/Plugin.cs b/Gotify/Plugin.cs index 58d7f182..9e331ba6 100644 --- a/Gotify/Plugin.cs +++ b/Gotify/Plugin.cs @@ -3,7 +3,7 @@ namespace FileFlows.Gotify; public class Plugin : FileFlows.Plugin.IPlugin { public string Name => "Gotify Nodes"; - public string MinimumVersion => "0.5.2.690"; + public string MinimumVersion => "0.6.1.900"; public void Init() { diff --git a/ImageNodes/ImageNodes.csproj b/ImageNodes/ImageNodes.csproj index bf789a4a..68716761 100644 Binary files a/ImageNodes/ImageNodes.csproj and b/ImageNodes/ImageNodes.csproj differ diff --git a/ImageNodes/Plugin.cs b/ImageNodes/Plugin.cs index b3c740e3..9efe5bee 100644 --- a/ImageNodes/Plugin.cs +++ b/ImageNodes/Plugin.cs @@ -3,7 +3,7 @@ namespace FileFlows.ImageNodes; public class Plugin : FileFlows.Plugin.IPlugin { public string Name => "Image Nodes"; - public string MinimumVersion => "0.5.2.690"; + public string MinimumVersion => "0.6.1.900"; public void Init() { diff --git a/MetaNodes/MetaNodes.csproj b/MetaNodes/MetaNodes.csproj index 7f87b0c8..125d5b5e 100644 Binary files a/MetaNodes/MetaNodes.csproj and b/MetaNodes/MetaNodes.csproj differ diff --git a/MetaNodes/Plugin.cs b/MetaNodes/Plugin.cs index 4a55ec9a..41cf1cde 100644 --- a/MetaNodes/Plugin.cs +++ b/MetaNodes/Plugin.cs @@ -5,7 +5,7 @@ namespace MetaNodes public class Plugin : FileFlows.Plugin.IPlugin { public string Name => "Meta Nodes"; - public string MinimumVersion => "0.5.2.690"; + public string MinimumVersion => "0.6.1.900"; public void Init() { } } diff --git a/MusicNodes/MusicNodes.csproj b/MusicNodes/MusicNodes.csproj index f2d6889b..d9becabf 100644 Binary files a/MusicNodes/MusicNodes.csproj and b/MusicNodes/MusicNodes.csproj differ diff --git a/MusicNodes/Plugin.cs b/MusicNodes/Plugin.cs index b3ff5e29..581c743d 100644 --- a/MusicNodes/Plugin.cs +++ b/MusicNodes/Plugin.cs @@ -6,7 +6,7 @@ namespace FileFlows.MusicNodes public class Plugin : FileFlows.Plugin.IPlugin { public string Name => "Music Nodes"; - public string MinimumVersion => "0.5.2.690"; + public string MinimumVersion => "0.6.1.900"; public void Init() { diff --git a/Plex/Plex.csproj b/Plex/Plex.csproj index 001cc0ff..f04e9d6d 100644 Binary files a/Plex/Plex.csproj and b/Plex/Plex.csproj differ diff --git a/Plex/Plugin.cs b/Plex/Plugin.cs index 400c7676..a7ff5372 100644 --- a/Plex/Plugin.cs +++ b/Plex/Plugin.cs @@ -3,7 +3,7 @@ namespace FileFlows.Plex; public class Plugin : FileFlows.Plugin.IPlugin { public string Name => "Plex"; - public string MinimumVersion => "0.5.2.690"; + public string MinimumVersion => "0.6.1.900"; public void Init() { diff --git a/VideoNodes/Plugin.cs b/VideoNodes/Plugin.cs index 4edb0eff..37df9f0a 100644 --- a/VideoNodes/Plugin.cs +++ b/VideoNodes/Plugin.cs @@ -6,7 +6,7 @@ namespace FileFlows.VideoNodes public class Plugin : FileFlows.Plugin.IPlugin { public string Name => "Video Nodes"; - public string MinimumVersion => "0.5.2.690"; + public string MinimumVersion => "0.6.1.900"; public void Init() { diff --git a/VideoNodes/VideoNodes.csproj b/VideoNodes/VideoNodes.csproj index 5e3954d8..4d5d4ac9 100644 Binary files a/VideoNodes/VideoNodes.csproj and b/VideoNodes/VideoNodes.csproj differ diff --git a/build/utils/PluginInfoGenerator/FileFlows.ServerShared.dll b/build/utils/PluginInfoGenerator/FileFlows.ServerShared.dll index eaf852c5..7c182e3c 100644 Binary files a/build/utils/PluginInfoGenerator/FileFlows.ServerShared.dll and b/build/utils/PluginInfoGenerator/FileFlows.ServerShared.dll differ diff --git a/build/utils/PluginInfoGenerator/FileFlows.ServerShared.pdb b/build/utils/PluginInfoGenerator/FileFlows.ServerShared.pdb index 0ae12b44..dccab33e 100644 Binary files a/build/utils/PluginInfoGenerator/FileFlows.ServerShared.pdb and b/build/utils/PluginInfoGenerator/FileFlows.ServerShared.pdb differ diff --git a/build/utils/PluginInfoGenerator/FileFlows.ServerShared.xml b/build/utils/PluginInfoGenerator/FileFlows.ServerShared.xml index 57f8b4fb..d20c0252 100644 --- a/build/utils/PluginInfoGenerator/FileFlows.ServerShared.xml +++ b/build/utils/PluginInfoGenerator/FileFlows.ServerShared.xml @@ -4,6 +4,97 @@ FileFlows.ServerShared + + + A logger that outputs to the console + + + + + Logs an information message + + Any arguments for the log message + + + + Logs an debug message + + Any arguments for the log message + + + + Logs an warning message + + Any arguments for the log message + + + + Logs an error message + + Any arguments for the log message + + + + Gets a tail of the log + NOTE: NOT IMPLEMENTED + + The number of lines to fetch + NOT IMPLEMENTED + + + + Gets the instance of the ILogger being used + + + + + A Logger that writes its output to file + + + + + Creates a file logger + + The path where to save the log file to + The prefix to use for the log file name + + + + Logs an information message + + Any arguments for the log message + + + + Logs an debug message + + Any arguments for the log message + + + + Logs an warning message + + Any arguments for the log message + + + + Logs an error message + + Any arguments for the log message + + + + Gets an isntance of the ILogger being used + + + + + Gets a tail of the log + NOTE: NOT IMPLEMENTED + + The number of lines to fetch + NOT IMPLEMENTED + Globals variables @@ -49,6 +140,13 @@ Gets if this is a Node or Server + + + Initializes the Directory Helper + + True if running inside a docker + True if running on a node + Gets the base directory of FileFlows @@ -105,6 +203,11 @@ Gets the location of the node configuration file + + + A helper for interacting with files + + Removes illegal file/path characters from a string @@ -119,18 +222,507 @@ The filename The fingerprint + + + Helper used for UI Forms + + + + + Gets the form fields of a give type of object + + The type of object to load the form fields of + The model used to bind to the form fields + A list of all form fields + This class will allow hot reloading of an plugin assembly so they can be update This class should return nothing from a Plugin assembly and just common C# objects + + + Gets a list of all the plugins directories + + a list of all the plugins directories + This needs to return an instance so the FlowExecutor can use it... The flow part - an insstance of the plugin node + an instance of the plugin node + + + + The time helper provides help methods regarding scheduling + + + + + Gets the integer index of the current time quarter + A time quarter is a 15minute block, starting on Sunday at midnight. + + The integer index of the current time quater + + + + Checks if the current time is in the supplied schedule + + The schedule to check + true if the current time is within the schedule + + + + A logger that outputs to the console + + + + + Logs an information message + + Any arguments for the log message + + + + Logs an debug message + + Any arguments for the log message + + + + Logs an warning message + + Any arguments for the log message + + + + Logs an error message + + Any arguments for the log message + + + + Gets a tail of the log + NOTE: NOT IMPLEMENTED + + The number of lines to fetch + NOT IMPLEMENTED + + + + Gets the instance of the ILogger being used + + + + + The registration model data used when registering a node with the FileFlows server + + + + + Gets or sets the address (hostname or IP aaddres) of the node + + + + + Gets or sets the temporary path used by this node + + + + + Gets or sets the number of flow runners this node can run + + + + + Gets or sets if this node is enabled + + + + + Gets or sets any mappings this node uses + Mappings allow a file or folder local to the Server to be mapped to a location local to the Node + + + + + Gets or sets the type of operating system this node is running on + + + + + Gets or sets the version of this node + + + + + Mapping for server files and folders to files and folders local to a node + + + + + Gets or sets the address on the server to map + + + + + Gets or sets the local equivalent path on the node + + + + + Interface for a Flow Runner, which is responsible for executing a flow and processing files + + + + + Called when a flow execution starts + + The information about the flow execution + The updated information + + + + Called when the flow execution has completed + + The information about the flow execution + a completed task + + + + Called to update the status of the flow execution on the server + + The information about the flow execution + a completed task + + + + A flow runner which is responsible for executing a flow and processing files + + + + + Gets or sets the function that will load the flow runner when Load is called + This is used in unit testing to mock this runner + + + + + Loads a Flow Runner instance and returns it + + a flow runner instance + + + + Called when a flow execution starts + + The information about the flow execution + The updated information + + + + Called when the flow execution has completed + + The information about the flow execution + a completed task + + + + Called to update the status of the flow execution on the server + + The information about the flow execution + a completed task + + + + Interface for communicating with FileFlows server for flows + + + + + Gets a flow by its UID + + The UID of the flow + An instance of the flow if found, otherwise null + + + + Gets the Failure Flow for a specific library + This is the flow that is called if the flow fails + + The UID of the library + An instance of the Failure Flow if found + + + + Service for communicating with FileFlows server for flows + + + + + Gets or sets the function used to load an instance of the IFlowService + + + + + Loads an instance of the IFlowService + + an instance of the IFlowService + + + + Gets a flow by its UID + + The UID of the flow + An instance of the flow if found, otherwise null + + + + Gets the Failure Flow for a specific library + This is the flow that is called if the flow fails + + The UID of the library + An instance of the Failure Flow if found + + + + Interface for communicating with FileFlows server for library files + + + + + Gets the next library file queued for processing + + The name of the node requesting a library file + The UID of the node + The UID of the worker on the node + If found, the next library file to process, otherwise null + + + + Gets a library file by its UID + + The UID of the library file + The library file if found, otherwise null + + + + Deletes a library file + + The UID of the library file + a completed task + + + + Updates a library file + + The library file to update + The newly updated library file + + + + Saves the full library file log + + The UID of the library file + The full plain text log to save + If it was successfully saved or not + + + + Tests if a library file exists on server. + This is used to test if a mapping issue exists on the node, and will be called if a Node cannot find the library file + + The UID of the library file + True if it exists on the server, otherwise false + + + + Service for communicating with FileFlows server for library files + + + + + Gets or sets a function to load an instance of ILibraryFileService by the Load function + + + + + Loads an instance of the ILibraryFileService + + an instance of the ILibraryFileService + + + + Deletes a library file + + The UID of the library file + a completed task + + + + Tests if a library file exists on server. + This is used to test if a mapping issue exists on the node, and will be called if a Node cannot find the library file + + The UID of the library file + True if it exists on the server, otherwise false + + + + Gets a library file by its UID + + The UID of the library file + The library file if found, otherwise null + + + + Gets the next library file queued for processing + + The name of the node requesting a library file + The UID of the node + The UID of the worker on the node + If found, the next library file to process, otherwise null + + + + Saves the full library file log + + The UID of the library file + The full plain text log to save + If it was successfully saved or not + + + + Updates a library file + + The library file to update + The newly updated library file + + + + Interface for communicating with FileFlows server for libraries + + + + + Gets a library by its UID + + The UID of the library + An instance of the library if found + + + + Service for communicating with FileFlows server for libraries + + + + + Gets or sets a function to load an instance of a ILibraryService + + + + + Loads an instance of the library service + + an instance of the library service + + + + Gets a library by its UID + + The UID of the library + An instance of the library if found + + + + An interface for communicating with the server for all Processing Node related actions + + + + + Gets a processing node by its physical address + + The address (hostname or IP address) of the node + An instance of the processing node + + + + Gets an instance of the internal processing node + + an instance of the internal processing node + + + + Gets a tool path by name + + The name of the tool + a tool path + + + + Clears all workers on the node. + This is called when a node first starts up, if a node crashed when workers were running this will reset them + + The UID of the node + a completed task + + + + An Service for communicating with the server for all Processing Node related actions + + + + + Gets or sets a function used to load new instances of the service + + + + + Loads an instance of the node service + + an instance of the node service + + + + Clears all workers on the node. + This is called when a node first starts up, if a node crashed when workers were running this will reset them + + The UID of the node + a completed task + + + + Gets an instance of the internal processing node + + an instance of the internal processing node + + + + Gets a tool path by name + + The name of the tool + a tool path + + + + Gets a processing node by its physical address + + The address (hostname or IP address) of the node + An instance of the processing node + + + + Registers a node with FileFlows + + The URL of the FileFlows Server + The address (Hostname or IP Address) of the node + The temporary path location of the node + The amount of flow runners this node can execute + If this node is enabled or not + Any mappings for the node + An instance of the registered node + If fails to register, an exception will be thrown @@ -169,6 +761,11 @@ Plugin service + + + Gets or sets a function used to load new instances of the service + + Loads an instance of the plugin service @@ -203,6 +800,49 @@ the updated plugininfo This not yet implemented + + + A service lets you communicate with the FileFLows server + + + + + Gets or sets the Base URL of the FileFlows server + + + + + Interface for the Settings service which allows accessing of all the system settings + + + + + Gets the system settings + + the system settings + + + + An instance of the Settings Service which allows accessing of the system settings + + + + + A loader to load an instance of the Settings + + + + + Loads an instance of the settings service + + an instance of the settings service + + + + Gets the system settings + + the system settings + An interface of the System Service @@ -295,6 +935,12 @@ A update has been downloaded + + + Prepares the application to be shutdown + Called after the update has been downloaded, but before it has run + + Downloads an update @@ -307,5 +953,66 @@ if auto updates are enabled + + + Downloads a file and saves it + + The url of the file to download + the location to save the file + throws if the file fails to download + + + + A worker that will run at a set schedule + + + + + Available schedule types + + + + + Gets or sets the amount seconds between each execution of this worker + + + + + Gets or sets the schedule of this worker + + + + + Creates an instance of a worker + + the type of schedule this worker runs at + the interval of this worker + + + + Start the worker + + + + + Stop the worker + + + + + A manager for the workers that run in the system + + + + + Starts a list of workers and keeps track of them + + A list of workers to start + + + + Stops all the currently running workers + + diff --git a/build/utils/PluginInfoGenerator/FileFlows.Shared.dll b/build/utils/PluginInfoGenerator/FileFlows.Shared.dll index 4b18ad0e..48914891 100644 Binary files a/build/utils/PluginInfoGenerator/FileFlows.Shared.dll and b/build/utils/PluginInfoGenerator/FileFlows.Shared.dll differ diff --git a/build/utils/PluginInfoGenerator/FileFlows.Shared.pdb b/build/utils/PluginInfoGenerator/FileFlows.Shared.pdb index a11fb18b..cd822efc 100644 Binary files a/build/utils/PluginInfoGenerator/FileFlows.Shared.pdb and b/build/utils/PluginInfoGenerator/FileFlows.Shared.pdb differ diff --git a/build/utils/PluginInfoGenerator/FileFlows.Shared.xml b/build/utils/PluginInfoGenerator/FileFlows.Shared.xml index 31d8b24f..95040533 100644 --- a/build/utils/PluginInfoGenerator/FileFlows.Shared.xml +++ b/build/utils/PluginInfoGenerator/FileFlows.Shared.xml @@ -4,6 +4,77 @@ FileFlows.Shared + + + A class used to convert objects from one type to another + + + + + Converts an object to a specific type + + The type to convert to + The object to convert + The converted object + + + + Converts a IEnumeable to an array + + The IEnumerable to convert + The type of array to create + the type of the array to create + An array of the IEnumerable + + + + Converts a IEnumeable to an list + + The IEnumerable to convert + The type of array to create + the type of the array to create + An list of the IEnumerable + + + + A list of types of operating systems + + + + + Unknown operating system + + + + + Windows operating system + + + + + Linux operating system + + + + + Mac/Apple operating system + + + + + A type of Flow + + + + + A standard flow + + + + + A special flow that is executed when a flow fails during execution + + Extension methods used by FileFlows @@ -39,11 +110,203 @@ the string to lowercase the lowercased string + + + Formatter used to format bytes to a file size string + + + + + Formats a value as a file size + + the value to format + the value as a file size + + + + The sizable units + + + + + Formats a byte value as a string + + The size in bytes + The size in a formatted string + + + + A formatter will format an object as a string + + + + + A list of available formatter instances + + + + + Formats a value + + the value to format + the formatted value + + + + Formats a value + + the formatter to use + the value to format + the formatted value + + + + A helper for HTTP processing of requests + + + + + Gets or sets the HTTP Client used + + + + + Gets or sets the logger used + + + + + Performs a GET request + + the type of object returned by the request + the URL to call + the request result + + + + Performs a GET request + + the type of object returned by the request + the URL to call + the number of seconds before a timeout occurs + if no logging should be done for this request + the request result + + + + Performs a POST request + + the URL to call + any data to send with the request + if no logging should be done for this request + the request result + + + + Performs a POST request + + the type of object returned by the request + the URL to call + any data to send with the request + the number of seconds before a timeout occurs + the request result + + + + Performs a PUT request + + the URL to call + any data to send with the request + the request result + + + + Performs a PUT request + + the type of object returned by the request + the URL to call + any data to send with the request + the request result + + + + Perform a DELETE request + + the URL to call + any data to send with the request + the request result + + + + Logs a message to the log + + the message to log + + + + Makes a HTTP Request + + The request method + The URL of the request + Any data to be sent with the request + the number of seconds to wait before a timeout + if the request show record nothing to the log + The request object returned + a processing result of the request + + + + Converts an object to a json string content result + + the object to convert + the object as a json string content + + + + Utility to convert a plain text log to a colorized HTML log + + + + + Converts a plain text log to a HTML log + + the plain text log + an HTML version of the log + + + + Colorizes a section and converts to HTML + + The section to colorize + the colorized string + + + + HTML encodes a string + + the string to encode + the HTML encoded string + Clones an object + + + Clones an object + + the object to clone + the object type to clone + a cloned instance + + + + Clones an object + + the object to clone + A cloned instance + Checks if objects are teh same reference @@ -64,11 +327,973 @@ the object the objec hashcode + + + Array extensions + + + + + Method to perform a foreach + + the array to foreach + the action to perform on each item + + + + Array transverse + + + + + Array positional indexes + + + + + Transfers an array + + the array to transverse + + + + Step to the next item in the array + + true if successful + + + + Generic helper methods for objecst + + + + + Tests if two objects are logically the same + + The first object to test + The second object to test + true if the objects are logically the same + + + + JSON Convert for validators + + + + + Tests if an object type can be converted + + the type to test + true if can be converted, otherwise false + + + + Read and convert the JSON to T. + + + A converter may throw any Exception, but should throw JsonException when the JSON is invalid. + + The to read from. + The being converted. + The being used. + The value that was converted. + Note that the value of determines if the converter handles null JSON tokens. + + + + Write the value as JSON. + + + A converter may throw any Exception, but should throw JsonException when the JSON + cannot be created. + + The to write to. + The value to convert. Note that the value of determines if the converter handles values. + The being used. + + + + Converter used when flattening a Language json file to Dictionary + + + + + Write the value as JSON. + + + A converter may throw any Exception, but should throw JsonException when the JSON + cannot be created. + + The to write to. + The value to convert. Note that the value of determines if the converter handles values. + The being used. + + + + Read and convert the JSON to T. + + + A converter may throw any Exception, but should throw JsonException when the JSON is invalid. + + The to read from. + The being converted. + The being used. + The value that was converted. + Note that the value of determines if the converter handles null JSON tokens. + + + + Creates an IDictionary instance + + an IDictionary instance + + + + A logger used to write log messages + + + + + Gets or sets the instance of ILogger + + + + + An element field is a UI component that is displayed in the web browser + + + + + Gets or sets the order of which to display this filed + + + + + Gets or sets the type of this field + + + + + Gets or sets the name of this field + + Gets or sets optional place holder text, this can be a translation key + + + Gets or sets the input type of this field + + + + + Gets or sets if this field is only only a UI field + and value will not be saved + + + + + Gets or sets the variables {} available to this field + + + + + Gets or sets the parameters of the field + + + + + Gets or sets the validators for the field + + + + + A delegate used when a value change event + + + + + A event that is raised when the value changes + + + + + A delegate used for the disabled change event + + + + + An event that is raised when the disable state of the field is changed + + + + + A delegate for when the conditions of the field changes + + + + + An event that is raised when the conditions of the field changes + + + + + Invokes the value changed event + + The sender of the invoker + The value to invoke + + + + Gets or sets the conditions used to disable this field + + + + + Gets or sets the conditions used to show this field + + + + + Invokes a condition + + the condition to invokte + the condition state + + + + A condition that determines if a element field is shown or disabled + + + + + Get or sets the Field this condition is attached to + + + + + Gets or sets the property this condition evaluates + + + + + Gets or sets the value used to when evaluating the condition + + + + + Gets or sets if the match is inversed, ie is not the value + + + + + Gets or sets if this condition is a match + + + + + Gets or sets the owner who owns this conditoin + + + + + Constructs a condition + + + + + Constructs a condition + + the field the condition is attached to + the initial value of the field + the value to evaluate for + if the condition should NOT match the value + + + + Sets the field + + the field + the fields initial value + + + + Fired when the field value changes + + the sender object + the new field value + + + + Test if the condition matches the given object value + + the value to test the condition against + true if the condition is matches + + + + Condition to test if a field is empty + + + + + Constructs a empty condition + + the field this condition is attached to + the initial value of the field + + + + Test if the condition matches the given object value + + the value to test the condition against + true if the condition is matches + + + + An item in the file browser + + + + + Gets or sets the short name of an item in the file browser + + + + + Gets or sets the fullname of the item + + + + + Gets or sets if the item is a path + + + + + Gets or sets if the item is a parent item + + + + + Gets or sets if the item is a drive + + + + + A file flow object + This is the base object for all database objects + + + + + Gets or sets the UID of the item + + + + + Gets or sets the name of the item + + + + + Gets or sets the date this item was created + + + + + Gets or sets the date this item was last modified + + + + + Interface used for unique objects. + This mean only one object of this type can exist in the database + + + + + Gets or sets the UID of the item + + + + + A flow + + + + + Gets or sets if the flow is enabled + + + + + Gets or sets the description of the flow + + + + + Gets or sets the type of flow + + + + + Gets or sets the template this flow is based on + + + + + Gets or sets the parts of this flow + + + + + A model for a flow templates + + + + + Gets or sets the flow + + + + + Gets or sets fields used in the template + + + + + Gets or sets the order this template appears + + + + + Gets or sets if this flow template should be saved after creation + + + + + Gets or sets the type of flow + + + + + A field used in templates + + + + + Gets or sets the UID of the template field + + + + + Gets or sets the type of the field + + + + + Gets or sets if this field is required + + + + + Gets or sets the name of this field + + + + + Gets or sets the label for this field + + + + + Gets or sets the help text for this field + + + + + Gets or sets the default value for this field + + + + + Gets or sets the value of this field + + + + + Gets or sets the parameters for this field + + + + + A flow element/node is a element that is a part of the flow + + + + + Gets or sets the UID of the element + + + + + Gets or sets the name of the element + + + + + Gets or sets the display name of the element + + + + + Formats the name and translated if needed + + the name to format + the formateted name + + + + Gets or sets the icon of the element + + + + + Gets or sets any variables this element exports + + + + + Gets or sets if no editor should be shown to the user when first adding this element + + + + + Gets or sets the number of inputs this element has + + + + + Gets or sets the number of outputs this element has + + + + + Gets or sets the url to the the help page for this node + + + + + Gets or sets the type of flow element + + + + + Gets or sets if this element is available to failure flows + + + + + Gets or sets the group this element belongs to + + + + + Gets or sets the output labels for this element + + + + + Gets or sets the fields this element has + + + + + Gets or sets the model for this element + + + + + Information used during the flow execution + + + + + Gets or sets the UID of the flow + + + + + Gets or sets the UID of the node execution this flow + + + + + Gets or sets the name of the Node executing this flow + + + + + Gets or sets the executing log for of the flow + + + + + Gets or sets the library file being executed + + + + + Gets or sets the relative file being executed + + + + + Gets or sets an object reference of the library + that the library file belongs + + + + + Gets or sets the path of the library + + + + + Gets or sets if a fingerprint should be taken of the final file + + + + + Gets or sets the size of the original file being processed + + + + + Gets or sets the file that is currently being worked on/executed + + + + + Gets or sets if the working file is actually a directory + + + + + Gets or sets the total parts in the flow that is executing + + + + + Gets or sets the index of the flow part that is currently executing + + + + + Gets or sets the name of the flow part that is currently executing + + + + + Gets or sets the current percent of the executing flow part + + + + + Gets or sets when the last update was reported to the server + + + + + Gets or sets when the flow execution started + + + + + Gets the total processing time of the flow + + + + + A flow part is a part/node of a flow that exeuctes + + + + + Gets or sets the UID of the flow part + + + + + Gets or sets the name of the flow part + + + + + Gets or sets the FlowElementUid this flow part is an instance of + This is the full name of the flow element, Namespace.TypeName + + + + + Gets or sets the x coordinate where this part appears on the canvas + + + + + Gets or sets the y coordinate where this part appears on the canvas + + + + + Gets or sets the icon of the flow part + + + + + Gets or sets the label of this flow part + + + + + Gets or sets the number of inputs this part has + + + + + Gets or sets the number of outputs this part has + + + + + Gets or sets the output connections of this flow part + + + + + Gets or sets the type of the flow part + + + + + Gets or sets the model of this flow part + + + + + A flow connection connects the input of a node to the output of another node + + + + + Gets or sets the Input number of the connecting node + + + + + Gets or sets the Output number of the connecitng node + + + + + Gets or sets the UID of input node this connection connects to + + + + + Flow worker status detailing information about a currently executing flow + + + + + Gets or sets the a unique id for this flow executor. + This is used so the flow can be cancelled and will be uniquely + generated when the flow starts + + + + + Gets or sets the current file being processed + + + + + Gets or sets the relative file of the executing file + + + + + Gets or sets an object reference of the library + where the currently executing file belongs + + + + + Gets or sets the current flow part + + + + + Gets or sets the current workign file + + + + + Gets the current process status + + + + + Gets or sets the total parts of the flow + + + + + Gets or sets the index of current flow part + + + + + Gets or sets the name of the current flow part + + + + + Gets or sets the percentage of the currently executing flow part + + + + + Gets or sets when this flow was started + + + + + Gets the current total processing time of the flow + + + + + The processing status + + + + + Waiting to be processed + + + + + Processing a file/folder + + + + + A model of the library file used in the UI + This model is used to reduce the data sent to the client browser + + + + + Gets or sets the UID of the library file + + + + + Gets or sets the name of the library file + + + + + Gets or sets the relative path of the file + This is the fullname of the file without the library path + + + + + Gets or sets a name of a file this is a duplicate of + + + + + Gets or sets the final size of the file after processing + + + + + Gets or sets the name of the flow that executed this file + + + + + Gets or sets the name of the library this file belongs + + + + + Gets or sets the name of the processing node that is executing/executed this file + + + + + Gets or sets the size of the original library file + + + + + Gets or sets the output path of the final file + + + + + Gets or sets the processing time taken of the file + + + + + A library that FileFlows will monitor for files to process + + + + + Gets or sets if this library is enabled + + + + + Gets or sets the path of the library + + + + + Gets or sets the filter used to determine what files to add ot the library files + + + + + Gets or sets the template this library is based on + + + + + Gets or sets the description of the library + + + + + Gets or sets the flow this library uses + + + + + Gets or sets if this library should be routinely scanned, + or if false, will listen for file system events. + If off the library will still be fully scanned every other hour + + If this library monitors for folders or files @@ -89,6 +1314,11 @@ Gets or sets if hidden files and folders should be excluded from the library + + + Gets or sets the schedule for this library + + When the library was last scanned @@ -114,11 +1344,223 @@ Gets or sets the processing priority of this library + + + Processing priority, used to prioritize library files for processing + + + + + Lowest priority + + + + + Low priority + + + + + Normal priority + + + + + High priority + + + + + Highest priority + + + + + A library file is a file that FileFlows will process + + + + + Gets or sets the relative path of the library file. + This is the path relative to the library + + + + + Gets or sets the path of the final output file + + + + + Gets or sets the flow that executed this file + + Gets or sets a list of nodes that were executed against this library file + + + Gets or sets the library this library files belongs to + + + + + Gets or sets an object reference to an existing + library file that this file is a duplicate of + + + + + Gets or sets the size of the original library file + + + + + Gets or sets the size of the final file after processing + + + + + Gets or sets the fingerprint of the file + + + + + Gets or sets the node tha this processing/has processed the file + + + + + Gets or sets the UID of the worker that is executing this library file + + + + + Gets or sets when the file began processing + + + + + Gets or sets when the file finished processing + + + + + Gets or sets the processing status of the file + + + + + Gets or sets the order of the file when the file should be processed + + + + + Gets or sets if this library file is a directory + + + + + Gets the total processing time of the library file + + + + + Possible status of library files + + + + + The library is disabled and the file will not be processed + + + + + The library is out of schedule and will not process until it is in the processing schedule + + + + + The file has not been processed + + + + + The file has been successfully processed + + + + + The file is currently processing + + + + + The file cannot be processed as the flow configured for the library can not be found + + + + + THe file was processed, but exited with a failure + + + + + The file is a duplicate of an existing library file + + + + + The file could not be processed due to a mapping issue + + + + + A node/flow part that has been executed + + + + + Gets or sets the name of the node part + + + + + Gets or sets the UID of the node part + + + + + Gets or sets the time it took to process this node + + + + + Gets or sets the output from this node + + + + + Library status + + + + + Gets or sets the name of the status + + + + + Gets or sets the file status + + + + + Gets or sets the number of library files in this status + + Arguments for hte Next Library File request @@ -144,6 +1586,128 @@ Gets or sets the worker UID + + + Information about a plugin in FileFlows + + + + + Gets or sets if the plugin is enabled + + + + + Gets or sets the plugin version + + + + + Gets or sets if the plugin is deleted + + + + + Gets or sets if this plugin has settings + + + + + Gets or sets the URL of this plugin + + + + + Gets or sets the authors of the plugin + + + + + Gets or sets the description of the plugin + + + + + Gets or sets the minimum version of FileFlows this plugin requires + + + + + Gets or sets the name of the package of this plugin. + The packages name is the .ffplugin file + + + + + Gets or sets a list of settings elements used to construct the settings form + + + + + Gets or sets a list of elements/flowparts/nodes this plugin has + + + + + Gets or sets the model for plugin info + + + + + Gets or sets the latest version of this plugin + + + + + Gets if there is an update available for this plugin + + + + + Information about a plugin package + + + + + Gets or sets the name of the plugin + + + + + Gets or sets the version of the plugin + + + + + Gets or sets the authors of the plugin + + + + + Gets or sets the URL for the plugin + + + + + Gets or sets the description of the plugin + + + + + Gets or sets the package name of the plugin + The .ffplugin file + + + + + Gets or sets the minimum FileFlows version this plugin needs + + + + + Gets or sets the available flow elements/node in this plugin + + A processing node used by FileFlows to process Library Files @@ -243,6 +1807,42 @@ The mapped path The unmapped path + + + A list of UIDs used for deleting/enabled etc + + + + + Gets or sets the UIDs + + + + + A HTTP request result + + the type of object the request returns + + + + Gets or sets if the request was successful + + + + + Gets or sets the HTML body of the request + + + + + Gets or sets the parsed response object + + + + + Settings for FileFlows + + Gets or sets if plugins should automatically be updated when new version are available online @@ -288,10 +1888,238 @@ Gets or sets the FileFlows version number + + + Information about how a library has shrunk after processing + + + + + Gets or sets the original size of the library files + in the library + + + + + Gets or sets the final size of the library files + in the library + + + + + Gets or sets number of processed files in the library + + + + + Gets the different of original size minus the final size, + i.e. how much the library has shrunk after processing + + + + + Statistics of overall processed files + + + + + Gets or set the nodes that have been executed + + + + + Records a node execution + + The node to record + + + + Statistics for executed nodes + + + + + Gets or sets the UID of the node + + + + + Gets or sets the recorded outputs of this node + + + + + Information about an executed node + + + + + Gets or set the output of the executed node + + + + + Gets or sets the processing time of the executed node + + + + + A tool in FileFlows, e.g. an external application + + + + + Gets or sets the path of the tool + + + + + Translater is responsible for language translations + + + + + Gets or sets the logger used by the translater when there are any translation issues + + + + + Translates a string if the string needs trnslating + + The string to translate if needed + The translated string if needed, otherwise the original string + + + + Gets if the translator has been initialized + + + + + Checks if a string needs translating + + The string to test + if the string needs to be translated or not + + + + Initializes the translator + + a list of translation json files + + + + Deserialized a json string and flattens it into a Dictionary using dot notation + + The json string to flatten + a dictionary of the flatten json string + + + + Translates a string + + The string to translate + any translation parameters + if translation warnings should be suppressed and not printed to the log + the translated string + + + + Attempts to translate from a range of possible keys. + The first key found in the translation dictionary will be returned + + a list of possible translation keys + any translation parameters + if translation warnings should be suppressed and not printed to the log + the translated string + + + + Translates a string if there is a translation for it + + the key to translate + the default string to return if no translation is found + the translated string or default if not found + Used instead of null + + + Validates a value + + the value to validate + If the value is valid or not + + + + Validates a string against a regular expression + + + + + Gets or sets the expression to validate against + + + + + Validates the value against the regular expression + + the value to validate + true if valid otherwise false + + + + A validator to validate a number between a range of values + + + + + Gets or sets the minimum valid number + + + + + Gets or sets the maximum valid number + + + + + Validates a value against the range + + the value to validate + true if the value is valid, otherwise false + + + + Validator to a validate a object has a value + + + + + Validates the object has a value + + The value to validate + true if the value has a propre value + + + + A validator used to validate a value + + + + + Gets the name of the type of validator + + + + + Validates a value using the validator + + the value to validate + true if the value is valid, otherwise false + diff --git a/build/utils/PluginInfoGenerator/PluginInfoGenerator.dll b/build/utils/PluginInfoGenerator/PluginInfoGenerator.dll index 478a8033..366a8df4 100644 Binary files a/build/utils/PluginInfoGenerator/PluginInfoGenerator.dll and b/build/utils/PluginInfoGenerator/PluginInfoGenerator.dll differ diff --git a/build/utils/PluginInfoGenerator/PluginInfoGenerator.pdb b/build/utils/PluginInfoGenerator/PluginInfoGenerator.pdb index 7ed6fdbb..f2cddec8 100644 Binary files a/build/utils/PluginInfoGenerator/PluginInfoGenerator.pdb and b/build/utils/PluginInfoGenerator/PluginInfoGenerator.pdb differ