Files
simapi-cj/src/openapi/models/OpenApiOperation.cj
T
2026-09-01 20:31:26 +08:00

122 lines
3.5 KiB
Plaintext

// 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 操作对象。
*/
public class OpenApiOperation <: IOpenApiSerializable {
/**
* @brief 表示操作摘要。
*/
public var summary: ?String = None
/**
* @brief 表示操作描述。
*/
public var description: ?String = None
/**
* @brief 表示操作标识。
*/
public var operationId: ?String = None
/**
* @brief 表示操作响应集合。
*/
public var response: OpenApiResponses = OpenApiResponses()
/**
* @brief 表示操作标签集合。
*/
public var tags: ArrayList<OpenApiTag> = ArrayList<OpenApiTag>()
/**
* @brief 表示操作服务器集合。
*/
public var servers: ArrayList<OpenApiServer> = ArrayList<OpenApiServer>()
/**
* @brief 表示操作请求体。
*/
public var requestBody:? OpenApiRequestBody = None
/**
* @brief 表示操作参数集合。
*/
public var parameters: ArrayList<OpenApiParameter> = ArrayList<OpenApiParameter>()
/**
* @brief 表示操作安全需求集合。
*/
public var security: ArrayList<OpenApiSecurityRequirement> = ArrayList<OpenApiSecurityRequirement>()
/**
* @brief 创建 OpenAPI 操作对象。
*/
public init() {
}
/**
* @brief 按 OpenAPI V3 格式写出当前操作对象。
* @param writer OpenAPI 写入器。
*/
public func serializeAsV3(writer: IOpenApiWriter): Unit {
writer.startObject()
if (!tags.isEmpty()) {
writer.writeName("tags")
writer.startArray()
for (tag in tags) {
tag.serializeAsV3(writer)
}
writer.endArray()
}
if (let Some(value) <- summary) {
writer.writeName("summary")
writer.writeValue(value)
}
if (let Some(value) <- description) {
writer.writeName("description")
writer.writeValue(value)
}
if (let Some(value) <- operationId) {
writer.writeName("operationId")
writer.writeValue(value)
}
if (!servers.isEmpty()) {
writer.writeName("servers")
writer.startArray()
for (server in servers) {
server.serializeAsV3(writer)
}
writer.endArray()
}
if (!parameters.isEmpty()) {
writer.writeName("parameters")
writer.startArray()
for (param in parameters) {
param.serializeAsV3(writer)
}
writer.endArray()
}
if (!security.isEmpty()) {
writer.writeName("security")
writer.startArray()
for (sec in security) {
sec.serializeAsV3(writer)
}
writer.endArray()
}
if (!response.isEmpty()) {
writer.writeName("responses")
response.serializeAsV3(writer)
}
if (let Some(requestBody) <- requestBody) {
writer.writeName("requestBody")
requestBody.serializeAsV3(writer)
}
writer.endObject()
}
}