Skip to content

Commit c4d704a

Browse files
committed
simplify base64 case in OpenAPIGeneratorReferenceTests
1 parent 8f36c19 commit c4d704a

File tree

5 files changed

+12
-442
lines changed

5 files changed

+12
-442
lines changed

Tests/OpenAPIGeneratorReferenceTests/Resources/Docs/petstore.yaml

Lines changed: 4 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -225,40 +225,6 @@ paths:
225225
text/plain:
226226
schema:
227227
type: string
228-
/pets/{petId}/audio:
229-
parameters:
230-
- $ref: '#/components/parameters/path.petId'
231-
put:
232-
summary: Upload an audio recording
233-
operationId: uploadAudioForPet
234-
requestBody:
235-
required: true
236-
description: Base64-encoded audio
237-
content:
238-
application/json:
239-
schema:
240-
type: string
241-
format: byte
242-
responses:
243-
'200':
244-
description: Echoes audio back
245-
content:
246-
application/json:
247-
schema:
248-
type: string
249-
format: byte
250-
'412':
251-
description: Audio is not acceptable
252-
content:
253-
application/json:
254-
schema:
255-
type: string
256-
'500':
257-
description: Server error
258-
content:
259-
text/plain:
260-
schema:
261-
type: string
262228
components:
263229
headers:
264230
TracingHeader:
@@ -299,6 +265,10 @@ components:
299265
type: string
300266
tag:
301267
type: string
268+
genome:
269+
description: "Pet genome (base64-encoded)"
270+
type: string
271+
format: byte
302272
kind:
303273
$ref: '#/components/schemas/PetKind'
304274
MixedAnyOf:

Tests/OpenAPIGeneratorReferenceTests/Resources/ReferenceSources/Petstore/Client.swift

Lines changed: 0 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -484,82 +484,4 @@ public struct Client: APIProtocol {
484484
}
485485
)
486486
}
487-
/// Upload an audio recording
488-
///
489-
/// - Remark: HTTP `PUT /pets/{petId}/audio`.
490-
/// - Remark: Generated from `#/paths//pets/{petId}/audio/put(uploadAudioForPet)`.
491-
public func uploadAudioForPet(_ input: Operations.uploadAudioForPet.Input) async throws
492-
-> Operations.uploadAudioForPet.Output
493-
{
494-
try await client.send(
495-
input: input,
496-
forOperation: Operations.uploadAudioForPet.id,
497-
serializer: { input in
498-
let path = try converter.renderedPath(template: "/pets/{}/audio", parameters: [input.path.petId])
499-
var request: HTTPTypes.HTTPRequest = .init(soar_path: path, method: .put)
500-
suppressMutabilityWarning(&request)
501-
converter.setAcceptHeader(in: &request.headerFields, contentTypes: input.headers.accept)
502-
let body: OpenAPIRuntime.HTTPBody?
503-
switch input.body {
504-
case let .json(value):
505-
body = try converter.setRequiredRequestBodyAsJSON(
506-
value,
507-
headerFields: &request.headerFields,
508-
contentType: "application/json; charset=utf-8"
509-
)
510-
}
511-
return (request, body)
512-
},
513-
deserializer: { response, responseBody in
514-
switch response.status.code {
515-
case 200:
516-
let contentType = converter.extractContentTypeIfPresent(in: response.headerFields)
517-
let body: Operations.uploadAudioForPet.Output.Ok.Body
518-
if try contentType == nil
519-
|| converter.isMatchingContentType(received: contentType, expectedRaw: "application/json")
520-
{
521-
body = try await converter.getResponseBodyAsJSON(
522-
OpenAPIRuntime.Base64EncodedData.self,
523-
from: responseBody,
524-
transforming: { value in .json(value) }
525-
)
526-
} else {
527-
throw converter.makeUnexpectedContentTypeError(contentType: contentType)
528-
}
529-
return .ok(.init(body: body))
530-
case 412:
531-
let contentType = converter.extractContentTypeIfPresent(in: response.headerFields)
532-
let body: Operations.uploadAudioForPet.Output.PreconditionFailed.Body
533-
if try contentType == nil
534-
|| converter.isMatchingContentType(received: contentType, expectedRaw: "application/json")
535-
{
536-
body = try await converter.getResponseBodyAsJSON(
537-
Swift.String.self,
538-
from: responseBody,
539-
transforming: { value in .json(value) }
540-
)
541-
} else {
542-
throw converter.makeUnexpectedContentTypeError(contentType: contentType)
543-
}
544-
return .preconditionFailed(.init(body: body))
545-
case 500:
546-
let contentType = converter.extractContentTypeIfPresent(in: response.headerFields)
547-
let body: Operations.uploadAudioForPet.Output.InternalServerError.Body
548-
if try contentType == nil
549-
|| converter.isMatchingContentType(received: contentType, expectedRaw: "text/plain")
550-
{
551-
body = try converter.getResponseBodyAsBinary(
552-
OpenAPIRuntime.HTTPBody.self,
553-
from: responseBody,
554-
transforming: { value in .plainText(value) }
555-
)
556-
} else {
557-
throw converter.makeUnexpectedContentTypeError(contentType: contentType)
558-
}
559-
return .internalServerError(.init(body: body))
560-
default: return .undocumented(statusCode: response.status.code, .init())
561-
}
562-
}
563-
)
564-
}
565487
}

Tests/OpenAPIGeneratorReferenceTests/Resources/ReferenceSources/Petstore/Server.swift

Lines changed: 0 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -70,11 +70,6 @@ extension APIProtocol {
7070
method: .put,
7171
path: server.apiPathComponentsWithServerPrefix("/pets/{petId}/avatar")
7272
)
73-
try transport.register(
74-
{ try await server.uploadAudioForPet(request: $0, body: $1, metadata: $2) },
75-
method: .put,
76-
path: server.apiPathComponentsWithServerPrefix("/pets/{petId}/audio")
77-
)
7873
}
7974
}
8075
fileprivate extension UniversalServer where APIHandler: APIProtocol {
@@ -597,95 +592,4 @@ fileprivate extension UniversalServer where APIHandler: APIProtocol {
597592
}
598593
)
599594
}
600-
/// Upload an audio recording
601-
///
602-
/// - Remark: HTTP `PUT /pets/{petId}/audio`.
603-
/// - Remark: Generated from `#/paths//pets/{petId}/audio/put(uploadAudioForPet)`.
604-
func uploadAudioForPet(request: HTTPRequest, body: HTTPBody?, metadata: ServerRequestMetadata) async throws -> (
605-
HTTPResponse, HTTPBody?
606-
) {
607-
try await handle(
608-
request: request,
609-
requestBody: body,
610-
metadata: metadata,
611-
forOperation: Operations.uploadAudioForPet.id,
612-
using: { APIHandler.uploadAudioForPet($0) },
613-
deserializer: { request, requestBody, metadata in
614-
let path: Operations.uploadAudioForPet.Input.Path = .init(
615-
petId: try converter.getPathParameterAsURI(
616-
in: metadata.pathParameters,
617-
name: "petId",
618-
as: Components.Parameters.path_period_petId.self
619-
)
620-
)
621-
let headers: Operations.uploadAudioForPet.Input.Headers = .init(
622-
accept: try converter.extractAcceptHeaderIfPresent(in: request.headerFields)
623-
)
624-
let contentType = converter.extractContentTypeIfPresent(in: request.headerFields)
625-
let body: Operations.uploadAudioForPet.Input.Body
626-
if try contentType == nil
627-
|| converter.isMatchingContentType(received: contentType, expectedRaw: "application/json")
628-
{
629-
body = try await converter.getRequiredRequestBodyAsJSON(
630-
OpenAPIRuntime.Base64EncodedData.self,
631-
from: requestBody,
632-
transforming: { value in .json(value) }
633-
)
634-
} else {
635-
throw converter.makeUnexpectedContentTypeError(contentType: contentType)
636-
}
637-
return Operations.uploadAudioForPet.Input(path: path, headers: headers, body: body)
638-
},
639-
serializer: { output, request in
640-
switch output {
641-
case let .ok(value):
642-
suppressUnusedWarning(value)
643-
var response = HTTPResponse(soar_statusCode: 200)
644-
suppressMutabilityWarning(&response)
645-
let body: HTTPBody
646-
switch value.body {
647-
case let .json(value):
648-
try converter.validateAcceptIfPresent("application/json", in: request.headerFields)
649-
body = try converter.setResponseBodyAsJSON(
650-
value,
651-
headerFields: &response.headerFields,
652-
contentType: "application/json; charset=utf-8"
653-
)
654-
}
655-
return (response, body)
656-
case let .preconditionFailed(value):
657-
suppressUnusedWarning(value)
658-
var response = HTTPResponse(soar_statusCode: 412)
659-
suppressMutabilityWarning(&response)
660-
let body: HTTPBody
661-
switch value.body {
662-
case let .json(value):
663-
try converter.validateAcceptIfPresent("application/json", in: request.headerFields)
664-
body = try converter.setResponseBodyAsJSON(
665-
value,
666-
headerFields: &response.headerFields,
667-
contentType: "application/json; charset=utf-8"
668-
)
669-
}
670-
return (response, body)
671-
case let .internalServerError(value):
672-
suppressUnusedWarning(value)
673-
var response = HTTPResponse(soar_statusCode: 500)
674-
suppressMutabilityWarning(&response)
675-
let body: HTTPBody
676-
switch value.body {
677-
case let .plainText(value):
678-
try converter.validateAcceptIfPresent("text/plain", in: request.headerFields)
679-
body = try converter.setResponseBodyAsBinary(
680-
value,
681-
headerFields: &response.headerFields,
682-
contentType: "text/plain"
683-
)
684-
}
685-
return (response, body)
686-
case let .undocumented(statusCode, _): return (.init(soar_statusCode: statusCode), nil)
687-
}
688-
}
689-
)
690-
}
691595
}

0 commit comments

Comments
 (0)