int SetBucketCorsRequest::validate()

in sdk/src/model/SetBucketCorsRequest.cc [103:138]


int SetBucketCorsRequest::validate() const
{
    int ret = OssBucketRequest::validate();
    if (ret) return ret;

    if (ruleList_.size() > BucketCorsRuleLimit)
        return ARG_ERROR_CORS_RULE_LIMIT;

    for (auto const &rule : ruleList_) {

        if (rule.AllowedOrigins().empty())
            return ARG_ERROR_CORS_ALLOWEDORIGINS_EMPTY;

        if (CountOfAsterisk(rule.AllowedOrigins()) > 1)
            return ARG_ERROR_CORS_ALLOWEDORIGINS_ASTERISK_COUNT;

        if (rule.AllowedMethods().empty())
            return ARG_ERROR_CORS_ALLOWEDMETHODS_EMPTY;

        if (!InAllowedMethods(rule.AllowedMethods()))
            return ARG_ERROR_CORS_ALLOWEDMETHODS_VALUE;

        if (CountOfAsterisk(rule.AllowedHeaders()) > 1)
            return ARG_ERROR_CORS_ALLOWEDHEADERS_ASTERISK_COUNT;

        if (CountOfAsterisk(rule.ExposeHeaders()) > 0)
            return ARG_ERROR_CORS_EXPOSEHEADERS_ASTERISK_COUNT;

        if ((rule.MaxAgeSeconds() != CORSRule::UNSET_AGE_SEC) &&
            (rule.MaxAgeSeconds() < 0 || rule.MaxAgeSeconds() > 999999999)) {
            return ARG_ERROR_CORS_MAXAGESECONDS_RANGE;
        }
    }

    return 0;
}