1
0
Fork 0
mirror of https://github.com/HenkKalkwater/harbour-sailfin.git synced 2025-09-06 02:32:44 +00:00

[2/3] update openapi spec: generate code

This updates the openapi spec and invokes the code generator to update
to the Jellyfin 10.10.6 API.

A big motivation to do this was because some mandatory fields have been
made obsolete and are no longer included in responses. Sailfin tries to
deserialize these mandatory fields and fails deserializing. It was evident
in the list of sessions to control.

The failing was a bit too gracefully in my opinion, it did not even show
that an error occurred, nor was it logged anywhere. It took some time
to debug.
This commit is contained in:
Chris Josten 2025-03-13 02:39:07 +01:00
parent eeb9183909
commit d685b48ec1
504 changed files with 62190 additions and 41202 deletions

View file

@ -38,12 +38,14 @@
#include <QStringList>
#include <optional>
#include "JellyfinQt/dto/castreceiverapplication.h"
#include "JellyfinQt/dto/imageresolution.h"
#include "JellyfinQt/dto/imagesavingconvention.h"
#include "JellyfinQt/dto/metadataoptions.h"
#include "JellyfinQt/dto/namevaluepair.h"
#include "JellyfinQt/dto/pathsubstitution.h"
#include "JellyfinQt/dto/repositoryinfo.h"
#include "JellyfinQt/dto/version.h"
#include "JellyfinQt/dto/trickplayoptions.h"
#include "JellyfinQt/support/jsonconv.h"
namespace Jellyfin {
@ -58,59 +60,55 @@ class ServerConfiguration {
public:
ServerConfiguration(
qint32 logFileRetentionDays,
bool isStartupWizardCompleted,
QSharedPointer<Version> previousVersion,
bool enableUPnP,
bool isStartupWizardCompleted,
bool enableMetrics,
qint32 publicPort,
bool uPnPCreateHttpPortMap,
bool enableIPV6,
bool enableIPV4,
bool enableSSDPTracing,
qint32 uDPSendCount,
qint32 uDPSendDelay,
bool ignoreVirtualInterfaces,
qint32 gatewayMonitorPeriod,
bool enableMultiSocketBinding,
bool trustAllIP6Interfaces,
bool autoDiscoveryTracing,
bool autoDiscovery,
qint32 publicHttpsPort,
qint32 httpServerPortNumber,
qint32 httpsPortNumber,
bool enableHttps,
bool enableNormalizedItemByNameIds,
bool enableNormalizedItemByNameIds,
bool isPortAuthorized,
bool quickConnectAvailable,
bool enableRemoteAccess,
bool enableCaseSensitiveItemIds,
bool disableLiveTvChannelUserDataName,
bool disableLiveTvChannelUserDataName,
QString metadataPath,
QString preferredMetadataLanguage,
QString metadataCountryCode,
QStringList sortReplaceCharacters,
QStringList sortRemoveCharacters,
QStringList sortRemoveWords,
qint32 minResumePct,
qint32 maxResumePct,
qint32 minResumeDurationSeconds,
qint32 minAudiobookResume,
qint32 maxAudiobookResume,
qint32 inactiveSessionThreshold,
qint32 libraryMonitorDelay,
bool enableDashboardResponseCaching,
ImageSavingConvention imageSavingConvention,
bool skipDeserializationForBasicTypes,
bool saveMetadataHidden,
qint32 libraryUpdateDuration,
ImageSavingConvention imageSavingConvention,
QList<MetadataOptions> metadataOptions,
bool skipDeserializationForBasicTypes,
QString serverName,
QString uICulture,
bool saveMetadataHidden,
QList<NameValuePair> contentTypes,
qint32 remoteClientBitrateLimit,
bool enableFolderView,
bool enableGroupingIntoCollections,
bool displaySpecialsWithinSeasons,
bool displaySpecialsWithinSeasons,
QStringList codecsUsed,
QList<RepositoryInfo> pluginRepositories,
bool enableExternalContentInSuggestions,
bool requireHttps,
bool enableNewOmdbSupport,
bool isRemoteIPFilterBlacklist,
qint32 imageExtractionTimeoutMs,
bool enableSimpleArtistDetection,
qint32 imageExtractionTimeoutMs,
QList<PathSubstitution> pathSubstitutions,
bool enableSlowResponseWarning,
qint64 slowResponseThresholdMs,
qint64 slowResponseThresholdMs,
QStringList corsHosts,
qint32 libraryScanFanoutConcurrency,
qint32 libraryMetadataRefreshConcurrency,
bool removeOldPlugins,
bool disablePluginImages
bool allowClientLogUpload,
qint32 dummyChapterDuration,
ImageResolution chapterImageResolution,
qint32 parallelImageEncodingLimit,
QList<CastReceiverApplication> castReceiverApplications,
QSharedPointer<TrickplayOptions> trickplayOptions
);
ServerConfiguration(const ServerConfiguration &other);
@ -154,10 +152,16 @@ public:
bool cachePathNull() const;
void setCachePathNull();
QSharedPointer<Version> previousVersion() const;
void setPreviousVersion(QSharedPointer<Version> newPreviousVersion);
/**
* @brief Gets or sets the last known version that was ran using the configuration.
*/
QString previousVersion() const;
/**
* @brief Gets or sets the last known version that was ran using the configuration.
*/
void setPreviousVersion(QString newPreviousVersion);
bool previousVersionNull() const;
void setPreviousVersionNull();
/**
* @brief Gets or sets the stringified PreviousVersion to be stored/loaded,
@ -172,15 +176,6 @@ because System.Version itself isn't xml-serializable.
bool previousVersionStrNull() const;
void setPreviousVersionStrNull();
/**
* @brief Gets or sets a value indicating whether to enable automatic port forwarding.
*/
bool enableUPnP() const;
/**
* @brief Gets or sets a value indicating whether to enable automatic port forwarding.
*/
void setEnableUPnP(bool newEnableUPnP);
/**
* @brief Gets or sets a value indicating whether to enable prometheus metrics exporting.
*/
@ -190,247 +185,11 @@ because System.Version itself isn't xml-serializable.
*/
void setEnableMetrics(bool newEnableMetrics);
/**
* @brief Gets or sets the public mapped port.
*/
qint32 publicPort() const;
/**
* @brief Gets or sets the public mapped port.
*/
void setPublicPort(qint32 newPublicPort);
/**
* @brief Gets or sets a value indicating whether the http port should be mapped as part of UPnP automatic port forwarding.
*/
bool uPnPCreateHttpPortMap() const;
/**
* @brief Gets or sets a value indicating whether the http port should be mapped as part of UPnP automatic port forwarding.
*/
void setUPnPCreateHttpPortMap(bool newUPnPCreateHttpPortMap);
/**
* @brief Gets or sets client udp port range.
*/
QString uDPPortRange() const;
/**
* @brief Gets or sets client udp port range.
*/
void setUDPPortRange(QString newUDPPortRange);
bool uDPPortRangeNull() const;
void setUDPPortRangeNull();
/**
* @brief Gets or sets a value indicating whether IPV6 capability is enabled.
*/
bool enableIPV6() const;
/**
* @brief Gets or sets a value indicating whether IPV6 capability is enabled.
*/
void setEnableIPV6(bool newEnableIPV6);
/**
* @brief Gets or sets a value indicating whether IPV4 capability is enabled.
*/
bool enableIPV4() const;
/**
* @brief Gets or sets a value indicating whether IPV4 capability is enabled.
*/
void setEnableIPV4(bool newEnableIPV4);
/**
* @brief Gets or sets a value indicating whether detailed ssdp logs are sent to the console/log.
"Emby.Dlna": "Debug" must be set in logging.default.json for this property to work.
*/
bool enableSSDPTracing() const;
/**
* @brief Gets or sets a value indicating whether detailed ssdp logs are sent to the console/log.
"Emby.Dlna": "Debug" must be set in logging.default.json for this property to work.
*/
void setEnableSSDPTracing(bool newEnableSSDPTracing);
/**
* @brief Gets or sets a value indicating whether an IP address is to be used to filter the detailed ssdp logs that are being sent to the console/log.
If the setting "Emby.Dlna": "Debug" msut be set in logging.default.json for this property to work.
*/
QString sSDPTracingFilter() const;
/**
* @brief Gets or sets a value indicating whether an IP address is to be used to filter the detailed ssdp logs that are being sent to the console/log.
If the setting "Emby.Dlna": "Debug" msut be set in logging.default.json for this property to work.
*/
void setSSDPTracingFilter(QString newSSDPTracingFilter);
bool sSDPTracingFilterNull() const;
void setSSDPTracingFilterNull();
/**
* @brief Gets or sets the number of times SSDP UDP messages are sent.
*/
qint32 uDPSendCount() const;
/**
* @brief Gets or sets the number of times SSDP UDP messages are sent.
*/
void setUDPSendCount(qint32 newUDPSendCount);
/**
* @brief Gets or sets the delay between each groups of SSDP messages (in ms).
*/
qint32 uDPSendDelay() const;
/**
* @brief Gets or sets the delay between each groups of SSDP messages (in ms).
*/
void setUDPSendDelay(qint32 newUDPSendDelay);
/**
* @brief Gets or sets a value indicating whether address names that match MediaBrowser.Model.Configuration.ServerConfiguration.VirtualInterfaceNames should be Ignore for the purposes of binding.
*/
bool ignoreVirtualInterfaces() const;
/**
* @brief Gets or sets a value indicating whether address names that match MediaBrowser.Model.Configuration.ServerConfiguration.VirtualInterfaceNames should be Ignore for the purposes of binding.
*/
void setIgnoreVirtualInterfaces(bool newIgnoreVirtualInterfaces);
/**
* @brief Gets or sets a value indicating the interfaces that should be ignored. The list can be comma separated. <seealso cref="P:MediaBrowser.Model.Configuration.ServerConfiguration.IgnoreVirtualInterfaces" />.
*/
QString virtualInterfaceNames() const;
/**
* @brief Gets or sets a value indicating the interfaces that should be ignored. The list can be comma separated. <seealso cref="P:MediaBrowser.Model.Configuration.ServerConfiguration.IgnoreVirtualInterfaces" />.
*/
void setVirtualInterfaceNames(QString newVirtualInterfaceNames);
bool virtualInterfaceNamesNull() const;
void setVirtualInterfaceNamesNull();
/**
* @brief Gets or sets the time (in seconds) between the pings of SSDP gateway monitor.
*/
qint32 gatewayMonitorPeriod() const;
/**
* @brief Gets or sets the time (in seconds) between the pings of SSDP gateway monitor.
*/
void setGatewayMonitorPeriod(qint32 newGatewayMonitorPeriod);
/**
* @brief Gets a value indicating whether multi-socket binding is available.
*/
bool enableMultiSocketBinding() const;
/**
* @brief Gets a value indicating whether multi-socket binding is available.
*/
void setEnableMultiSocketBinding(bool newEnableMultiSocketBinding);
/**
* @brief Gets or sets a value indicating whether all IPv6 interfaces should be treated as on the internal network.
Depending on the address range implemented ULA ranges might not be used.
*/
bool trustAllIP6Interfaces() const;
/**
* @brief Gets or sets a value indicating whether all IPv6 interfaces should be treated as on the internal network.
Depending on the address range implemented ULA ranges might not be used.
*/
void setTrustAllIP6Interfaces(bool newTrustAllIP6Interfaces);
/**
* @brief Gets or sets the ports that HDHomerun uses.
*/
QString hDHomerunPortRange() const;
/**
* @brief Gets or sets the ports that HDHomerun uses.
*/
void setHDHomerunPortRange(QString newHDHomerunPortRange);
bool hDHomerunPortRangeNull() const;
void setHDHomerunPortRangeNull();
/**
* @brief Gets or sets PublishedServerUri to advertise for specific subnets.
*/
QStringList publishedServerUriBySubnet() const;
/**
* @brief Gets or sets PublishedServerUri to advertise for specific subnets.
*/
void setPublishedServerUriBySubnet(QStringList newPublishedServerUriBySubnet);
bool publishedServerUriBySubnetNull() const;
void setPublishedServerUriBySubnetNull();
/**
* @brief Gets or sets a value indicating whether Autodiscovery tracing is enabled.
*/
bool autoDiscoveryTracing() const;
/**
* @brief Gets or sets a value indicating whether Autodiscovery tracing is enabled.
*/
void setAutoDiscoveryTracing(bool newAutoDiscoveryTracing);
/**
* @brief Gets or sets a value indicating whether Autodiscovery is enabled.
*/
bool autoDiscovery() const;
/**
* @brief Gets or sets a value indicating whether Autodiscovery is enabled.
*/
void setAutoDiscovery(bool newAutoDiscovery);
/**
* @brief Gets or sets the public HTTPS port.
*/
qint32 publicHttpsPort() const;
/**
* @brief Gets or sets the public HTTPS port.
*/
void setPublicHttpsPort(qint32 newPublicHttpsPort);
/**
* @brief Gets or sets the HTTP server port number.
*/
qint32 httpServerPortNumber() const;
/**
* @brief Gets or sets the HTTP server port number.
*/
void setHttpServerPortNumber(qint32 newHttpServerPortNumber);
/**
* @brief Gets or sets the HTTPS server port number.
*/
qint32 httpsPortNumber() const;
/**
* @brief Gets or sets the HTTPS server port number.
*/
void setHttpsPortNumber(qint32 newHttpsPortNumber);
/**
* @brief Gets or sets a value indicating whether to use HTTPS.
*/
bool enableHttps() const;
/**
* @brief Gets or sets a value indicating whether to use HTTPS.
*/
void setEnableHttps(bool newEnableHttps);
bool enableNormalizedItemByNameIds() const;
void setEnableNormalizedItemByNameIds(bool newEnableNormalizedItemByNameIds);
/**
* @brief Gets or sets the filesystem path of an X.509 certificate to use for SSL.
*/
QString certificatePath() const;
/**
* @brief Gets or sets the filesystem path of an X.509 certificate to use for SSL.
*/
void setCertificatePath(QString newCertificatePath);
bool certificatePathNull() const;
void setCertificatePathNull();
/**
* @brief Gets or sets the password required to access the X.509 certificate data in the file specified by MediaBrowser.Model.Configuration.ServerConfiguration.CertificatePath.
*/
QString certificatePassword() const;
/**
* @brief Gets or sets the password required to access the X.509 certificate data in the file specified by MediaBrowser.Model.Configuration.ServerConfiguration.CertificatePath.
*/
void setCertificatePassword(QString newCertificatePassword);
bool certificatePasswordNull() const;
void setCertificatePasswordNull();
/**
* @brief Gets or sets a value indicating whether this instance is port authorized.
*/
@ -449,15 +208,6 @@ Depending on the address range implemented ULA ranges might not be used.
*/
void setQuickConnectAvailable(bool newQuickConnectAvailable);
/**
* @brief Gets or sets a value indicating whether access outside of the LAN is permitted.
*/
bool enableRemoteAccess() const;
/**
* @brief Gets or sets a value indicating whether access outside of the LAN is permitted.
*/
void setEnableRemoteAccess(bool newEnableRemoteAccess);
/**
* @brief Gets or sets a value indicating whether [enable case sensitive item ids].
*/
@ -480,15 +230,6 @@ Depending on the address range implemented ULA ranges might not be used.
* @brief Gets or sets the metadata path.
*/
void setMetadataPath(QString newMetadataPath);
bool metadataPathNull() const;
void setMetadataPathNull();
QString metadataNetworkPath() const;
void setMetadataNetworkPath(QString newMetadataNetworkPath);
bool metadataNetworkPathNull() const;
void setMetadataNetworkPathNull();
/**
* @brief Gets or sets the preferred metadata language.
@ -498,8 +239,6 @@ Depending on the address range implemented ULA ranges might not be used.
* @brief Gets or sets the preferred metadata language.
*/
void setPreferredMetadataLanguage(QString newPreferredMetadataLanguage);
bool preferredMetadataLanguageNull() const;
void setPreferredMetadataLanguageNull();
/**
* @brief Gets or sets the metadata country code.
@ -509,8 +248,6 @@ Depending on the address range implemented ULA ranges might not be used.
* @brief Gets or sets the metadata country code.
*/
void setMetadataCountryCode(QString newMetadataCountryCode);
bool metadataCountryCodeNull() const;
void setMetadataCountryCodeNull();
/**
* @brief Gets or sets characters to be replaced with a ' ' in strings to create a sort name.
@ -520,8 +257,6 @@ Depending on the address range implemented ULA ranges might not be used.
* @brief Gets or sets characters to be replaced with a ' ' in strings to create a sort name.
*/
void setSortReplaceCharacters(QStringList newSortReplaceCharacters);
bool sortReplaceCharactersNull() const;
void setSortReplaceCharactersNull();
/**
* @brief Gets or sets characters to be removed from strings to create a sort name.
@ -531,8 +266,6 @@ Depending on the address range implemented ULA ranges might not be used.
* @brief Gets or sets characters to be removed from strings to create a sort name.
*/
void setSortRemoveCharacters(QStringList newSortRemoveCharacters);
bool sortRemoveCharactersNull() const;
void setSortRemoveCharactersNull();
/**
* @brief Gets or sets words to be removed from strings to create a sort name.
@ -542,8 +275,6 @@ Depending on the address range implemented ULA ranges might not be used.
* @brief Gets or sets words to be removed from strings to create a sort name.
*/
void setSortRemoveWords(QStringList newSortRemoveWords);
bool sortRemoveWordsNull() const;
void setSortRemoveWordsNull();
/**
* @brief Gets or sets the minimum percentage of an item that must be played in order for playstate to be updated.
@ -590,6 +321,17 @@ Depending on the address range implemented ULA ranges might not be used.
*/
void setMaxAudiobookResume(qint32 newMaxAudiobookResume);
/**
* @brief Gets or sets the threshold in minutes after a inactive session gets closed automatically.
If set to 0 the check for inactive sessions gets disabled.
*/
qint32 inactiveSessionThreshold() const;
/**
* @brief Gets or sets the threshold in minutes after a inactive session gets closed automatically.
If set to 0 the check for inactive sessions gets disabled.
*/
void setInactiveSessionThreshold(qint32 newInactiveSessionThreshold);
/**
* @brief Gets or sets the delay in seconds that we will wait after a file system change to try and discover what has been added/removed
Some delay is necessary with some items because their creation is not atomic. It involves the creation of several
@ -604,15 +346,13 @@ different directories and files.
void setLibraryMonitorDelay(qint32 newLibraryMonitorDelay);
/**
* @brief Gets or sets a value indicating whether [enable dashboard response caching].
Allows potential contributors without visual studio to modify production dashboard code and test changes.
* @brief Gets or sets the duration in seconds that we will wait after a library updated event before executing the library changed notification.
*/
bool enableDashboardResponseCaching() const;
qint32 libraryUpdateDuration() const;
/**
* @brief Gets or sets a value indicating whether [enable dashboard response caching].
Allows potential contributors without visual studio to modify production dashboard code and test changes.
* @brief Gets or sets the duration in seconds that we will wait after a library updated event before executing the library changed notification.
*/
void setEnableDashboardResponseCaching(bool newEnableDashboardResponseCaching);
void setLibraryUpdateDuration(qint32 newLibraryUpdateDuration);
ImageSavingConvention imageSavingConvention() const;
@ -623,8 +363,6 @@ Allows potential contributors without visual studio to modify production dashboa
QList<MetadataOptions> metadataOptions() const;
void setMetadataOptions(QList<MetadataOptions> newMetadataOptions);
bool metadataOptionsNull() const;
void setMetadataOptionsNull();
bool skipDeserializationForBasicTypes() const;
@ -635,22 +373,11 @@ Allows potential contributors without visual studio to modify production dashboa
QString serverName() const;
void setServerName(QString newServerName);
bool serverNameNull() const;
void setServerNameNull();
QString baseUrl() const;
void setBaseUrl(QString newBaseUrl);
bool baseUrlNull() const;
void setBaseUrlNull();
QString uICulture() const;
void setUICulture(QString newUICulture);
bool uICultureNull() const;
void setUICultureNull();
bool saveMetadataHidden() const;
@ -661,8 +388,6 @@ Allows potential contributors without visual studio to modify production dashboa
QList<NameValuePair> contentTypes() const;
void setContentTypes(QList<NameValuePair> newContentTypes);
bool contentTypesNull() const;
void setContentTypesNull();
qint32 remoteClientBitrateLimit() const;
@ -684,81 +409,21 @@ Allows potential contributors without visual studio to modify production dashboa
void setDisplaySpecialsWithinSeasons(bool newDisplaySpecialsWithinSeasons);
/**
* @brief Gets or sets the subnets that are deemed to make up the LAN.
*/
QStringList localNetworkSubnets() const;
/**
* @brief Gets or sets the subnets that are deemed to make up the LAN.
*/
void setLocalNetworkSubnets(QStringList newLocalNetworkSubnets);
bool localNetworkSubnetsNull() const;
void setLocalNetworkSubnetsNull();
/**
* @brief Gets or sets the interface addresses which Jellyfin will bind to. If empty, all interfaces will be used.
*/
QStringList localNetworkAddresses() const;
/**
* @brief Gets or sets the interface addresses which Jellyfin will bind to. If empty, all interfaces will be used.
*/
void setLocalNetworkAddresses(QStringList newLocalNetworkAddresses);
bool localNetworkAddressesNull() const;
void setLocalNetworkAddressesNull();
QStringList codecsUsed() const;
void setCodecsUsed(QStringList newCodecsUsed);
bool codecsUsedNull() const;
void setCodecsUsedNull();
QList<RepositoryInfo> pluginRepositories() const;
void setPluginRepositories(QList<RepositoryInfo> newPluginRepositories);
bool pluginRepositoriesNull() const;
void setPluginRepositoriesNull();
bool enableExternalContentInSuggestions() const;
void setEnableExternalContentInSuggestions(bool newEnableExternalContentInSuggestions);
/**
* @brief Gets or sets a value indicating whether the server should force connections over HTTPS.
*/
bool requireHttps() const;
/**
* @brief Gets or sets a value indicating whether the server should force connections over HTTPS.
*/
void setRequireHttps(bool newRequireHttps);
bool enableNewOmdbSupport() const;
void setEnableNewOmdbSupport(bool newEnableNewOmdbSupport);
/**
* @brief Gets or sets the filter for remote IP connectivity. Used in conjuntion with <seealso cref="P:MediaBrowser.Model.Configuration.ServerConfiguration.IsRemoteIPFilterBlacklist" />.
*/
QStringList remoteIPFilter() const;
/**
* @brief Gets or sets the filter for remote IP connectivity. Used in conjuntion with <seealso cref="P:MediaBrowser.Model.Configuration.ServerConfiguration.IsRemoteIPFilterBlacklist" />.
*/
void setRemoteIPFilter(QStringList newRemoteIPFilter);
bool remoteIPFilterNull() const;
void setRemoteIPFilterNull();
/**
* @brief Gets or sets a value indicating whether <seealso cref="P:MediaBrowser.Model.Configuration.ServerConfiguration.RemoteIPFilter" /> contains a blacklist or a whitelist. Default is a whitelist.
*/
bool isRemoteIPFilterBlacklist() const;
/**
* @brief Gets or sets a value indicating whether <seealso cref="P:MediaBrowser.Model.Configuration.ServerConfiguration.RemoteIPFilter" /> contains a blacklist or a whitelist. Default is a whitelist.
*/
void setIsRemoteIPFilterBlacklist(bool newIsRemoteIPFilterBlacklist);
qint32 imageExtractionTimeoutMs() const;
@ -768,20 +433,6 @@ Allows potential contributors without visual studio to modify production dashboa
QList<PathSubstitution> pathSubstitutions() const;
void setPathSubstitutions(QList<PathSubstitution> newPathSubstitutions);
bool pathSubstitutionsNull() const;
void setPathSubstitutionsNull();
bool enableSimpleArtistDetection() const;
void setEnableSimpleArtistDetection(bool newEnableSimpleArtistDetection);
QStringList uninstalledPlugins() const;
void setUninstalledPlugins(QStringList newUninstalledPlugins);
bool uninstalledPluginsNull() const;
void setUninstalledPluginsNull();
/**
* @brief Gets or sets a value indicating whether slow server responses should be logged as a warning.
@ -809,19 +460,6 @@ Allows potential contributors without visual studio to modify production dashboa
* @brief Gets or sets the cors hosts.
*/
void setCorsHosts(QStringList newCorsHosts);
bool corsHostsNull() const;
void setCorsHostsNull();
/**
* @brief Gets or sets the known proxies.
*/
QStringList knownProxies() const;
/**
* @brief Gets or sets the known proxies.
*/
void setKnownProxies(QStringList newKnownProxies);
bool knownProxiesNull() const;
void setKnownProxiesNull();
/**
* @brief Gets or sets the number of days we should retain activity logs.
@ -862,55 +500,65 @@ Allows potential contributors without visual studio to modify production dashboa
void setRemoveOldPlugins(bool newRemoveOldPlugins);
/**
* @brief Gets or sets a value indicating whether plugin image should be disabled.
* @brief Gets or sets a value indicating whether clients should be allowed to upload logs.
*/
bool disablePluginImages() const;
bool allowClientLogUpload() const;
/**
* @brief Gets or sets a value indicating whether plugin image should be disabled.
* @brief Gets or sets a value indicating whether clients should be allowed to upload logs.
*/
void setDisablePluginImages(bool newDisablePluginImages);
void setAllowClientLogUpload(bool newAllowClientLogUpload);
/**
* @brief Gets or sets the dummy chapter duration in seconds, use 0 (zero) or less to disable generation alltogether.
*/
qint32 dummyChapterDuration() const;
/**
* @brief Gets or sets the dummy chapter duration in seconds, use 0 (zero) or less to disable generation alltogether.
*/
void setDummyChapterDuration(qint32 newDummyChapterDuration);
ImageResolution chapterImageResolution() const;
void setChapterImageResolution(ImageResolution newChapterImageResolution);
/**
* @brief Gets or sets the limit for parallel image encoding.
*/
qint32 parallelImageEncodingLimit() const;
/**
* @brief Gets or sets the limit for parallel image encoding.
*/
void setParallelImageEncodingLimit(qint32 newParallelImageEncodingLimit);
/**
* @brief Gets or sets the list of cast receiver applications.
*/
QList<CastReceiverApplication> castReceiverApplications() const;
/**
* @brief Gets or sets the list of cast receiver applications.
*/
void setCastReceiverApplications(QList<CastReceiverApplication> newCastReceiverApplications);
QSharedPointer<TrickplayOptions> trickplayOptions() const;
void setTrickplayOptions(QSharedPointer<TrickplayOptions> newTrickplayOptions);
protected:
qint32 m_logFileRetentionDays;
bool m_isStartupWizardCompleted;
QString m_cachePath;
QSharedPointer<Version> m_previousVersion = QSharedPointer<Version>();
QString m_previousVersion;
QString m_previousVersionStr;
bool m_enableUPnP;
bool m_enableMetrics;
qint32 m_publicPort;
bool m_uPnPCreateHttpPortMap;
QString m_uDPPortRange;
bool m_enableIPV6;
bool m_enableIPV4;
bool m_enableSSDPTracing;
QString m_sSDPTracingFilter;
qint32 m_uDPSendCount;
qint32 m_uDPSendDelay;
bool m_ignoreVirtualInterfaces;
QString m_virtualInterfaceNames;
qint32 m_gatewayMonitorPeriod;
bool m_enableMultiSocketBinding;
bool m_trustAllIP6Interfaces;
QString m_hDHomerunPortRange;
QStringList m_publishedServerUriBySubnet;
bool m_autoDiscoveryTracing;
bool m_autoDiscovery;
qint32 m_publicHttpsPort;
qint32 m_httpServerPortNumber;
qint32 m_httpsPortNumber;
bool m_enableHttps;
bool m_enableNormalizedItemByNameIds;
QString m_certificatePath;
QString m_certificatePassword;
bool m_isPortAuthorized;
bool m_quickConnectAvailable;
bool m_enableRemoteAccess;
bool m_enableCaseSensitiveItemIds;
bool m_disableLiveTvChannelUserDataName;
QString m_metadataPath;
QString m_metadataNetworkPath;
QString m_preferredMetadataLanguage;
QString m_metadataCountryCode;
QStringList m_sortReplaceCharacters;
@ -921,13 +569,13 @@ protected:
qint32 m_minResumeDurationSeconds;
qint32 m_minAudiobookResume;
qint32 m_maxAudiobookResume;
qint32 m_inactiveSessionThreshold;
qint32 m_libraryMonitorDelay;
bool m_enableDashboardResponseCaching;
qint32 m_libraryUpdateDuration;
ImageSavingConvention m_imageSavingConvention;
QList<MetadataOptions> m_metadataOptions;
bool m_skipDeserializationForBasicTypes;
QString m_serverName;
QString m_baseUrl;
QString m_uICulture;
bool m_saveMetadataHidden;
QList<NameValuePair> m_contentTypes;
@ -935,28 +583,24 @@ protected:
bool m_enableFolderView;
bool m_enableGroupingIntoCollections;
bool m_displaySpecialsWithinSeasons;
QStringList m_localNetworkSubnets;
QStringList m_localNetworkAddresses;
QStringList m_codecsUsed;
QList<RepositoryInfo> m_pluginRepositories;
bool m_enableExternalContentInSuggestions;
bool m_requireHttps;
bool m_enableNewOmdbSupport;
QStringList m_remoteIPFilter;
bool m_isRemoteIPFilterBlacklist;
qint32 m_imageExtractionTimeoutMs;
QList<PathSubstitution> m_pathSubstitutions;
bool m_enableSimpleArtistDetection;
QStringList m_uninstalledPlugins;
bool m_enableSlowResponseWarning;
qint64 m_slowResponseThresholdMs;
QStringList m_corsHosts;
QStringList m_knownProxies;
std::optional<qint32> m_activityLogRetentionDays = std::nullopt;
qint32 m_libraryScanFanoutConcurrency;
qint32 m_libraryMetadataRefreshConcurrency;
bool m_removeOldPlugins;
bool m_disablePluginImages;
bool m_allowClientLogUpload;
qint32 m_dummyChapterDuration;
ImageResolution m_chapterImageResolution;
qint32 m_parallelImageEncodingLimit;
QList<CastReceiverApplication> m_castReceiverApplications;
QSharedPointer<TrickplayOptions> m_trickplayOptions = QSharedPointer<TrickplayOptions>();
private:
// Private constructor which generates an invalid object, for use withing ServerConfiguration::fromJson();