// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Threading.Tasks;
using Pulumi.Serialization;
using Pulumi;

namespace TencentCloudIAC.PulumiPackage.Tencentcloud.Cdn.Inputs
{

    public sealed class DomainCompressionCompressionRuleArgs : Pulumi.ResourceArgs
    {
        [Input("algorithms", required: true)]
        private InputList<string>? _algorithms;

        /// <summary>
        /// List of algorithms, available: `gzip` and `brotli`.
        /// </summary>
        public InputList<string> Algorithms
        {
            get => _algorithms ?? (_algorithms = new InputList<string>());
            set => _algorithms = value;
        }

        /// <summary>
        /// Must be set as true, enables compression.
        /// </summary>
        [Input("compress", required: true)]
        public Input<bool> Compress { get; set; } = null!;

        [Input("fileExtensions")]
        private InputList<string>? _fileExtensions;

        /// <summary>
        /// List of file extensions like `jpg`, `txt`.
        /// </summary>
        public InputList<string> FileExtensions
        {
            get => _fileExtensions ?? (_fileExtensions = new InputList<string>());
            set => _fileExtensions = value;
        }

        /// <summary>
        /// The maximum file size to trigger compression (in bytes).
        /// </summary>
        [Input("maxLength", required: true)]
        public Input<int> MaxLength { get; set; } = null!;

        /// <summary>
        /// The minimum file size to trigger compression (in bytes).
        /// </summary>
        [Input("minLength", required: true)]
        public Input<int> MinLength { get; set; } = null!;

        [Input("rulePaths")]
        private InputList<string>? _rulePaths;

        /// <summary>
        /// List of rule paths for each `rule_type`: `*` for `all`, file ext like `jpg` for `file`, `/dir/like/` for `directory` and `/path/index.html` for `path`.
        /// </summary>
        public InputList<string> RulePaths
        {
            get => _rulePaths ?? (_rulePaths = new InputList<string>());
            set => _rulePaths = value;
        }

        /// <summary>
        /// Rule type, available: `all`, `file`, `directory`, `path`, `contentType`.
        /// </summary>
        [Input("ruleType")]
        public Input<string>? RuleType { get; set; }

        public DomainCompressionCompressionRuleArgs()
        {
        }
    }
}
