From 4569a09cbf00565858e86aa170a279abb2246b07 Mon Sep 17 00:00:00 2001 From: Ivan Smolin Date: Fri, 10 Jun 2022 14:55:33 +0300 Subject: [PATCH] add security generation - TINetworking 1.20.0 --- pom.xml | 2 +- .../touchin/codegen/TINetworkingCodegen.java | 4 +-- .../handlebars/TINetworking/OpenAPI.mustache | 17 ++++++++++++ .../handlebars/TINetworking/Plugins.mustache | 26 ------------------- .../handlebars/TINetworking/Servers.mustache | 6 ----- .../handlebars/TINetworking/api.mustache | 14 ++++------ .../handlebars/TINetworking/model.mustache | 7 +---- 7 files changed, 26 insertions(+), 50 deletions(-) create mode 100644 src/main/resources/handlebars/TINetworking/OpenAPI.mustache delete mode 100644 src/main/resources/handlebars/TINetworking/Plugins.mustache diff --git a/pom.xml b/pom.xml index c410bd8..aabc962 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ TINetworking-swagger-codegen jar TINetworking-swagger-codegen - 1.1.8 + 1.2.0 diff --git a/src/main/java/ru/touchin/codegen/TINetworkingCodegen.java b/src/main/java/ru/touchin/codegen/TINetworkingCodegen.java index 21a5527..e0ed9cc 100644 --- a/src/main/java/ru/touchin/codegen/TINetworkingCodegen.java +++ b/src/main/java/ru/touchin/codegen/TINetworkingCodegen.java @@ -208,9 +208,9 @@ public class TINetworkingCodegen extends DefaultCodegenConfig { sourceFolder, projectName + "+Servers.swift")); - supportingFiles.add(new SupportingFile("Plugins.mustache", + supportingFiles.add(new SupportingFile("OpenAPI.mustache", sourceFolder, - "Plugins.swift")); + projectName + "+OpenAPI.swift")); copyFistAllOfProperties = true; } diff --git a/src/main/resources/handlebars/TINetworking/OpenAPI.mustache b/src/main/resources/handlebars/TINetworking/OpenAPI.mustache new file mode 100644 index 0000000..5261b68 --- /dev/null +++ b/src/main/resources/handlebars/TINetworking/OpenAPI.mustache @@ -0,0 +1,17 @@ +import TINetworking + +public extension OpenAPI { + enum SecurityNames: String, Hashable { + {{#authMethods}} + case {{name}} + {{/authMethods}} + } + + static var {{projectName}}: Self { + .init(defaultServer: .default, security: [ + {{#authMethods}} + "{{name}}": {{#isApiKey}}.apiKey({{#isKeyInHeader}}.header{{/isKeyInHeader}}{{#isKeyInQuery}}.query{{/isKeyInQuery}}, parameterName: "{{keyParamName}}"){{/isApiKey}}{{#isBearer}}.http(.bearer){{/isBearer}}{{#isBasic}}.http(.basic){{/isBasic}}{{#hasMore}},{{/hasMore}} + {{/authMethods}} + ]) + } +} \ No newline at end of file diff --git a/src/main/resources/handlebars/TINetworking/Plugins.mustache b/src/main/resources/handlebars/TINetworking/Plugins.mustache deleted file mode 100644 index 6bf1d89..0000000 --- a/src/main/resources/handlebars/TINetworking/Plugins.mustache +++ /dev/null @@ -1,26 +0,0 @@ -import TIMoyaNetworking -import Alamofire - -{{#authMethods}} -{{#isApiKey}} -{{#isKeyInHeader}} -public struct {{name}}Plugin: AdditionalHeadersPlugin { - public typealias HeaderValueProvider = () -> String? - - private let headerValueProvider: HeaderValueProvider - - public init(headerValueProvider: @escaping HeaderValueProvider) { - self.headerValueProvider = headerValueProvider - } - - public var additionalHeaders: HTTPHeaders { - guard let value = headerValueProvider() else { - return HTTPHeaders() - } - - return HTTPHeaders(["{{{keyParamName}}}": value]) - } -} -{{/isKeyInHeader}} -{{/isApiKey}} -{{/authMethods}} diff --git a/src/main/resources/handlebars/TINetworking/Servers.mustache b/src/main/resources/handlebars/TINetworking/Servers.mustache index 7196a40..aa238c7 100644 --- a/src/main/resources/handlebars/TINetworking/Servers.mustache +++ b/src/main/resources/handlebars/TINetworking/Servers.mustache @@ -1,9 +1,3 @@ -// {{projectName}}+Servers.swift -// -// Generated by swagger-codegen -// https://github.com/swagger-api/swagger-codegen -// - import TINetworking public extension Server { diff --git a/src/main/resources/handlebars/TINetworking/api.mustache b/src/main/resources/handlebars/TINetworking/api.mustache index 2ec1986..e338d29 100644 --- a/src/main/resources/handlebars/TINetworking/api.mustache +++ b/src/main/resources/handlebars/TINetworking/api.mustache @@ -1,9 +1,4 @@ -{{#operations}}// -// {{classname}}.swift -// -// Generated by swagger-codegen -// https://github.com/swagger-api/swagger-codegen -// +{{#operations}} import Alamofire import TINetworking @@ -40,16 +35,16 @@ public extension EndpointRequest { - parameter {{paramName}}: {{description}} {{^required}}(optional{{#defaultValue}}, default to {{{.}}}{{/defaultValue}}){{/required}} {{/parameters}} */ - static func {{operationId}}({{#parameters}}{{paramName}}: {{#isEnum}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{#hasMore}}, {{/hasMore}}{{/parameters}}{{#hasParams}}, {{/hasParams}}server: Server? = nil) -> EndpointRequest<{{#parameters}}{{#isBodyParam}}{{{dataType}}}{{/isBodyParam}}{{/parameters}}{{^hasBodyParam}}Nothing{{/hasBodyParam}}, {{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Nothing{{/returnType}}> { + static func {{operationId}}({{#parameters}}{{paramName}}: {{#isEnum}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{#hasMore}}, {{/hasMore}}{{/parameters}}{{#hasParams}}, {{/hasParams}}server: Server? = nil, security: [[String]]? = nil) -> EndpointRequest<{{#parameters}}{{#isBodyParam}}{{{dataType}}}{{/isBodyParam}}{{/parameters}}{{^hasBodyParam}}Nothing{{/hasBodyParam}}, {{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Nothing{{/returnType}}> { .init(templatePath: "{{{path}}}", method: .init(rawValue: "{{httpMethod}}"), body: {{#hasBodyParam}}body{{/hasBodyParam}}{{^hasBodyParam}}nil{{/hasBodyParam}}, - {{#hasQueryParams}} + {{#if queryParams}} queryParameters: [ {{#each queryParams}} "{{{this.baseName}}}": .init(value: {{{this.paramName}}}, allowEmptyValue: {{#this.required}}false{{/this.required}}{{^this.required}}true{{/this.required}}), {{/each}}], - {{/hasQueryParams}} + {{/if}} {{#hasPathParams}} pathParameters: [ {{#each pathParams}} @@ -72,6 +67,7 @@ public extension EndpointRequest { {{/each}}], {{/hasCookieParams}} acceptableStatusCodes: [{{contentExtensions.x-codegen-acceptable-status-codes}}], + security: security ?? [{{#if authMethods}}[{{/if}}{{#authMethods}}"{{name}}"{{#hasMore}}, {{/hasMore}}{{/authMethods}}{{#if authMethods}}]{{/if}}], // note: OR requirement is not supported by swagger-codegen server: server) } {{/contents}} diff --git a/src/main/resources/handlebars/TINetworking/model.mustache b/src/main/resources/handlebars/TINetworking/model.mustache index 88554d0..9743476 100644 --- a/src/main/resources/handlebars/TINetworking/model.mustache +++ b/src/main/resources/handlebars/TINetworking/model.mustache @@ -1,9 +1,4 @@ -{{#models}}{{#model}}// -// {{classname}}.swift -// -// Generated by swagger-codegen -// https://github.com/swagger-api/swagger-codegen -// +{{#models}}{{#model}} import Foundation import TIFoundationUtils