internal BaseRequest(RestApiCredentials credentials, BaseOptions options)
        {
            Validate(credentials);

            Validate(options);

            UserName   = credentials.UserName;
            Password   = credentials.Password;
            ProductKey = options.ProductKey;
        }
        protected override void Validate(BaseOptions options)
        {
            if (options is DotNetHtmlOptions == false)
            {
                throw new InvalidOperationException("DotNetHtmlRequest options should be instance of DotNetHtmlRequest class");
            }

            if (string.IsNullOrEmpty(options.ProductKey))
            {
                throw new ArgumentNullException(nameof(options.ProductKey));
            }

            var dotNetHtmlOptions = options as DotNetHtmlOptions;

            if (string.IsNullOrEmpty(dotNetHtmlOptions.ZipFilePath))
            {
                throw new ArgumentNullException(nameof(dotNetHtmlOptions.ZipFilePath));
            }
        }
        protected override void Validate(BaseOptions options)
        {
            if (options is JavaOptions == false)
            {
                throw new InvalidOperationException("JavaRequest options should be instance of JavaOptions class");
            }

            if (string.IsNullOrEmpty(options.ProductKey))
            {
                throw new ArgumentNullException(nameof(options.ProductKey));
            }

            var javaOptions = options as JavaOptions;

            if (string.IsNullOrEmpty(javaOptions.Version))
            {
                throw new ArgumentNullException(nameof(javaOptions.Version));
            }

            if (string.IsNullOrEmpty(javaOptions.JarFilePath))
            {
                throw new ArgumentNullException(nameof(javaOptions.JarFilePath));
            }
        }
 protected abstract void Validate(BaseOptions options);