// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. /* * Copyright (c) 杭州颉创科技有限公司 2025. All rights reserved. * This source file is licensed under the MIT License found in the * LICENSE file in the root directory of this source tree. */ package simcu::simapi.openapi.models import std.collection.* /** * @brief 表示 OpenAPI 安全需求对象。 * * 每个实例对应一个安全需求条目,例如 {"Token": []}。 */ public class OpenApiSecurityRequirement <: IOpenApiSerializable { private let _requirements = ArrayList<(String, ArrayList)>() /** * @brief 创建 OpenAPI 安全需求对象。 */ public init() { } /** * @brief 添加一个安全方案需求。 * @param schemeName 安全方案名称。 */ public func addScheme(schemeName: String): Unit { _requirements.add((schemeName, ArrayList())) } /** * @brief 添加一个带授权范围的安全方案需求。 * @param schemeName 安全方案名称。 * @param scopes 该方案要求的授权范围集合(OAuth2 场景)。 */ public func addScheme(schemeName: String, scopes: ArrayList): Unit { _requirements.add((schemeName, scopes)) } /** * @brief 按 OpenAPI V3 格式写出当前安全需求对象。 * @param writer OpenAPI 写入器。 */ public func serializeAsV3(writer: IOpenApiWriter): Unit { writer.startObject() for ((schemeName, scopes) in _requirements) { writer.writeName(schemeName) writer.startArray() for (scope in scopes) { writer.writeValue(scope) } writer.endArray() } writer.endObject() } }