int SetBucketLifecycleRequest::validate()

in sdk/src/model/SetBucketLifecycleRequest.cc [111:142]


int SetBucketLifecycleRequest::validate() const
{
    int ret;
    if ((ret = OssBucketRequest::validate()) != 0) {
        return ret;
    }

    if (lifecycleRules_.size() > LifecycleRuleLimit) {
        return ARG_ERROR_LIFECYCLE_RULE_LIMIT;
    }

    if (lifecycleRules_.empty()) {
        return ARG_ERROR_LIFECYCLE_RULE_EMPTY;
    }

    for (auto const &rule : lifecycleRules_) {
        //no config rule 
        if (!rule.hasAbortMultipartUpload() &&
            !rule.hasExpiration() &&
            !rule.hasTransitionList() &&
            !rule.hasNoncurrentVersionExpiration() &&
            !rule.hasNoncurrentVersionTransitionList()) {
            return ARG_ERROR_LIFECYCLE_RULE_CONFIG_EMPTY;
        }

        if (rule.Prefix().empty() && lifecycleRules_.size() > 1) {
            return ARG_ERROR_LIFECYCLE_RULE_ONLY_ONE_FOR_BUCKET;
        }
    }

    return 0;
}