openapi_kotlin_httpclient

package
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 1, 2026 License: MIT Imports: 1 Imported by: 0

README

{{- /*gotype: github.com/primelib/primecodegen/pkg/openapi/openapigenerator.SupportOnceTemplate*/ -}}
# {{ .Metadata.DisplayName }}

A java http client library for {{ .Metadata.DisplayName }}.

## Core Library

**Coordinates**

```
implementation("{{ .Metadata.ArtifactGroupId }}:{{ .Metadata.ArtifactId }}:<version>")
```

**Create client instances using the factory, you can choose different interfaces by changing the `api` parameter.**

```java
{{ .Metadata.Name }}Api client = {{ .Metadata.Name }}Factory.create(spec -> {
    spec.api({{ .Metadata.Name }}Api.class);
    spec.baseUrl("{{ .Common.Endpoints.DefaultEndpoint }}");
{{- if .Common.Auth.HasAuthScheme "apikey" }}
    spec.apiKeyAuth(auth -> {
        auth.propertyKey("x-api-key");
        auth.apiKey("<apiKey>");
    });
{{- end }}
{{- if .Common.Auth.HasAuthScheme "basic" }}
    spec.basicAuth(auth -> {
        auth.username("<admin>");
        auth.password("<password>");
    });
{{- end }}
{{- if .Common.Auth.HasAuthScheme "bearer" }}
    spec.bearerAuth(auth -> {
        auth.valueTemplate("Bearer {token}"); // optional, default is "Bearer {token}"
        auth.token("<token>");
    });
{{- end }}
{{- if .Common.Auth.HasAuthVariant "oauth2ClientCredentialAuth" }}
    spec.oauth2ClientCredentialAuth(auth -> {
        auth.tokenEndpoint("<tokenEndpoint>");
        auth.clientId("<clientId>");
        auth.clientSecret("<clientSecret>");
    });
{{- end }}
{{- if .Common.Auth.HasAuthVariant "oauth2PasswordAuth" }}
    spec.oauth2PasswordAuth(auth -> {
        auth.tokenEndpoint("<tokenEndpoint>");
        auth.clientId("<clientId>");
        auth.clientSecret("<clientSecret>");
        auth.username("<username>");
        auth.password("<password>");
    });
{{- end }}
    //spec.meterRegistry(meterRegistry);
    //spec.logLevel("FULL");
});
```

## Spring Boot Starter

**Coordinates**

```
implementation("{{ .Metadata.ArtifactGroupId }}:{{ .Metadata.ArtifactId }}-spring-boot-starter:<version>")
```

**Auto Configuration**

| Property                                                   | Description                      | Default Value    | Allowed Values                     |
|------------------------------------------------------------|----------------------------------|------------------|------------------------------------|
| {{ .Metadata.Name | kebabCase }}.url                       | Base URL of the API              | ""               |                                    |
| {{ .Metadata.Name | kebabCase }}.backend-name              | Backend name for metrics tagging | ""               |                                    |
| {{ .Metadata.Name | kebabCase }}.log-level                 | Log level for HTTP client        | ""               | none, full                         |
| {{ .Metadata.Name | kebabCase }}.insecure                  | Disable SSL verification         | false            | false, true                        |
| {{ .Metadata.Name | kebabCase }}.auth.type                 | Type of authentication           | ""               | oauth2-client, oauth2-user, bearer |
| {{ .Metadata.Name | kebabCase }}.auth.token-endpoint       | Full token endpoint URL          | ""               | oauth2 token endpoint              |
| {{ .Metadata.Name | kebabCase }}.auth.client-id            | Client ID for authentication     | ""               | oauth2 client id                   |
| {{ .Metadata.Name | kebabCase }}.auth.client-secret        | Client secret for authentication | ""               | oauth2 client secret               |
| {{ .Metadata.Name | kebabCase }}.auth.username             | Username for authentication      | ""               | oauth2 username (oauth2-user)      |
| {{ .Metadata.Name | kebabCase }}.auth.password             | Password for authentication      | ""               | oauth2 password (oauth2-password)  |
| {{ .Metadata.Name | kebabCase }}.auth.token                | Token / API Key                  | ""               |                                    |
| {{ .Metadata.Name | kebabCase }}.auth.token-property-key   | Header key to pass the token in  | "Authorization"  |                                    |
| {{ .Metadata.Name | kebabCase }}.auth.token-value-template | Template to generate token value | "Bearer {token}" |                                    |

{{ if .Metadata.LicenseName }}
## License

This project is licensed under the [{{ .Metadata.LicenseName }}]({{ .Metadata.LicenseUrl }}) license.
{{- end }}

Documentation

Index

Constants

This section is empty.

Variables

View Source
var Template = templateapi.Config{
	ID:          "openapi-kotlin-httpclient",
	Description: "OpenAPI Server for Kotlin Spring",
	Files: []templateapi.File{

		{
			SourceTemplate:  "build.gradle.kts.core.gohtml",
			Snippets:        templateapi.DefaultSnippets,
			TargetDirectory: "core",
			TargetFileName:  "build.gradle.kts",
			Type:            templateapi.TypeSupportOnce,
			Kind:            templateapi.KindBuildSystem,
		},

		{
			SourceTemplate:  "api_factoryspec.common.gohtml",
			Snippets:        templateapi.DefaultSnippets,
			TargetDirectory: "core/src/commonMain/kotlin/{{ .Common.Packages.Root | toFilePath }}",
			TargetFileName:  "{{ .Metadata.Name }}FactorySpec.kt",
			Type:            templateapi.TypeAPIOnce,
			Kind:            templateapi.KindAPI,
		},

		{
			SourceTemplate:  "api_factory.jvm.gohtml",
			Snippets:        templateapi.DefaultSnippets,
			TargetDirectory: "core/src/jvmMain/kotlin/{{ .Common.Packages.Root | toFilePath }}",
			TargetFileName:  "Jvm{{ .Metadata.Name }}Factory.kt",
			Type:            templateapi.TypeAPIOnce,
			Kind:            templateapi.KindAPI,
		},
		{
			SourceTemplate:  "api_factoryspec.jvm.gohtml",
			Snippets:        templateapi.DefaultSnippets,
			TargetDirectory: "core/src/jvmMain/kotlin/{{ .Common.Packages.Root | toFilePath }}",
			TargetFileName:  "Jvm{{ .Metadata.Name }}FactorySpec.kt",
			Type:            templateapi.TypeAPIOnce,
			Kind:            templateapi.KindAPI,
		},

		{
			SourceTemplate:  "api_main.common.gohtml",
			Snippets:        templateapi.DefaultSnippets,
			TargetDirectory: "core/src/commonMain/kotlin/{{ .Common.Packages.Client | toFilePath }}",
			TargetFileName:  "{{ .Metadata.Name }}Api.kt",
			Type:            templateapi.TypeAPIOnce,
			Kind:            templateapi.KindAPI,
		},

		{
			SourceTemplate:  "api_main.jvm.gohtml",
			Snippets:        templateapi.DefaultSnippets,
			TargetDirectory: "core/src/jvmMain/kotlin/{{ .Common.Packages.Client | toFilePath }}",
			TargetFileName:  "Jvm{{ .Metadata.Name }}Api.kt",
			Type:            templateapi.TypeAPIOnce,
			Kind:            templateapi.KindAPI,
		},
		{
			SourceTemplate:  "operation.jvm.gohtml",
			Snippets:        templateapi.DefaultSnippets,
			TargetDirectory: "core/src/jvmMain/kotlin/{{ .Common.Packages.Operations | toFilePath }}",
			TargetFileName:  "{{ .Operation.Name }}OperationSpec.kt",
			Type:            templateapi.TypeOperationEach,
			Kind:            templateapi.KindAPI,
		},

		{
			SourceTemplate:  "api_service.common.gohtml",
			Snippets:        templateapi.DefaultSnippets,
			TargetDirectory: "core/src/commonMain/kotlin/{{ .Common.Packages.Client | toFilePath }}",
			TargetFileName:  "{{ .Service.Type }}Api.kt",
			Type:            templateapi.TypeAPIEach,
			Kind:            templateapi.KindAPI,
		},

		{
			SourceTemplate:  "api_service.jvm.gohtml",
			Snippets:        templateapi.DefaultSnippets,
			TargetDirectory: "core/src/jvmMain/kotlin/{{ .Common.Packages.Client | toFilePath }}",
			TargetFileName:  "Jvm{{ .Service.Type }}Api.kt",
			Type:            templateapi.TypeAPIEach,
			Kind:            templateapi.KindAPI,
		},

		{
			SourceTemplate:  "model.common.gohtml",
			Snippets:        templateapi.DefaultSnippets,
			TargetDirectory: "core/src/commonMain/kotlin/{{ .Common.Packages.Models | toFilePath }}",
			TargetFileName:  "{{ .Name }}.kt",
			Type:            templateapi.TypeModelEach,
			Kind:            templateapi.KindModel,
		},
		{
			SourceTemplate:  "enum.common.gohtml",
			Snippets:        templateapi.DefaultSnippets,
			TargetDirectory: "core/src/commonMain/kotlin/{{ .Common.Packages.Enums | toFilePath }}",
			TargetFileName:  "{{ .Name }}.kt",
			Type:            templateapi.TypeEnumEach,
			Kind:            templateapi.KindModel,
		},

		{
			SourceTemplate:  "response.gohtml",
			Snippets:        templateapi.DefaultSnippets,
			TargetDirectory: "core/src/commonMain/kotlin/{{ .Common.Packages.Responses | toFilePath }}",
			TargetFileName:  "{{ .Operation.Name }}Response.kt",
			Type:            templateapi.TypeOperationEach,
			Kind:            templateapi.KindAPI,
		},

		{
			SourceTemplate:  "auth_api.gohtml",
			Snippets:        templateapi.DefaultSnippets,
			TargetDirectory: "core/src/commonMain/kotlin/{{ .Common.Packages.Root | toFilePath }}/auth",
			TargetFileName:  "AuthMethod.kt",
			Type:            templateapi.TypeAPIOnce,
			Kind:            templateapi.KindAPI,
		},
		{
			SourceTemplate:  "auth_apikey.gohtml",
			Snippets:        templateapi.DefaultSnippets,
			TargetDirectory: "core/src/commonMain/kotlin/{{ .Common.Packages.Root | toFilePath }}/auth",
			TargetFileName:  "ApiKeyAuthMethod.kt",
			Type:            templateapi.TypeAPIOnce,
			Kind:            templateapi.KindAPI,
		},
		{
			SourceTemplate:  "auth_basic.gohtml",
			Snippets:        templateapi.DefaultSnippets,
			TargetDirectory: "core/src/commonMain/kotlin/{{ .Common.Packages.Root | toFilePath }}/auth",
			TargetFileName:  "BasicAuthMethod.kt",
			Type:            templateapi.TypeAPIOnce,
			Kind:            templateapi.KindAPI,
		},
		{
			SourceTemplate:  "auth_bearer.gohtml",
			Snippets:        templateapi.DefaultSnippets,
			TargetDirectory: "core/src/commonMain/kotlin/{{ .Common.Packages.Root | toFilePath }}/auth",
			TargetFileName:  "BearerAuthMethod.kt",
			Type:            templateapi.TypeAPIOnce,
			Kind:            templateapi.KindAPI,
		},
		{
			SourceTemplate:  "auth_oauth2client.gohtml",
			Snippets:        templateapi.DefaultSnippets,
			TargetDirectory: "core/src/commonMain/kotlin/{{ .Common.Packages.Root | toFilePath }}/auth",
			TargetFileName:  "OAuth2ClientCredentialAuthMethod.kt",
			Type:            templateapi.TypeAPIOnce,
			Kind:            templateapi.KindAPI,
		},
		{
			SourceTemplate:  "auth_oauth2user.gohtml",
			Snippets:        templateapi.DefaultSnippets,
			TargetDirectory: "core/src/commonMain/kotlin/{{ .Common.Packages.Root | toFilePath }}/auth",
			TargetFileName:  "OAuth2UserCredentialAuthMethod.kt",
			Type:            templateapi.TypeAPIOnce,
			Kind:            templateapi.KindAPI,
		},

		{
			SourceTemplate:  "build.gradle.kts.spring.gohtml",
			Snippets:        templateapi.DefaultSnippets,
			TargetDirectory: "spring",
			TargetFileName:  "build.gradle.kts",
			Type:            templateapi.TypeSupportOnce,
			Kind:            templateapi.KindBuildSystem,
		},
		{
			SourceTemplate:  "spring_auto_configuration.gohtml",
			Snippets:        templateapi.DefaultSnippets,
			TargetDirectory: "spring/src/main/java/{{ .Common.Packages.Root | toFilePath }}/spring",
			TargetFileName:  "{{ .Metadata.Name }}SpringAutoConfiguration.kt",
			Type:            templateapi.TypeAPIOnce,
			Kind:            templateapi.KindAPI,
		},
		{
			SourceTemplate:  "spring_auto_configuration_imports.gohtml",
			Snippets:        templateapi.DefaultSnippets,
			TargetDirectory: "spring/src/main/resources/META-INF/spring",
			TargetFileName:  "org.springframework.boot.autoconfigure.AutoConfiguration.imports",
			Type:            templateapi.TypeSupportOnce,
			Kind:            templateapi.KindAPI,
		},

		{
			Description:    "README.md",
			SourceTemplate: "readme.gohtml",
			Snippets:       templateapi.DefaultSnippets,
			TargetFileName: "README.md",
			Type:           templateapi.TypeSupportOnce,
			Kind:           templateapi.KindDocumentation,
		},

		{
			SourceTemplate: "build.gradle.kts.root.gohtml",
			Snippets:       templateapi.DefaultSnippets,
			TargetFileName: "build.gradle.kts",
			Type:           templateapi.TypeSupportOnce,
			Kind:           templateapi.KindBuildSystem,
		},
		{
			SourceTemplate: "settings.gradle.kts.gohtml",
			Snippets:       templateapi.DefaultSnippets,
			TargetFileName: "settings.gradle.kts",
			Type:           templateapi.TypeSupportOnce,
			Kind:           templateapi.KindBuildSystem,
		},
		{
			SourceTemplate:  "libs.versions.toml.gohtml",
			Snippets:        templateapi.DefaultSnippets,
			TargetDirectory: "gradle",
			TargetFileName:  "libs.versions.toml",
			Type:            templateapi.TypeSupportOnce,
			Kind:            templateapi.KindBuildSystem,
		},
		{
			SourceTemplate: "gradle.properties.gohtml",
			Snippets:       templateapi.DefaultSnippets,
			TargetFileName: "gradle.properties",
			Type:           templateapi.TypeSupportOnce,
			Kind:           templateapi.KindBuildSystem,
		},

		{
			SourceFile:      "gradle/gradle-wrapper.properties",
			Snippets:        templateapi.DefaultSnippets,
			TargetDirectory: "gradle/wrapper",
			TargetFileName:  "gradle-wrapper.properties",
			Type:            templateapi.TypeSupportOnce,
			Kind:            templateapi.KindBuildSystem,
		},
		{
			SourceFile:      "gradle/gradle-wrapper.jar",
			Snippets:        templateapi.DefaultSnippets,
			TargetDirectory: "gradle/wrapper",
			TargetFileName:  "gradle-wrapper.jar",
			Type:            templateapi.TypeSupportOnce,
			Kind:            templateapi.KindBuildSystem,
		},
		{
			SourceFile:      "gradle/gradlew",
			Snippets:        templateapi.DefaultSnippets,
			TargetDirectory: "",
			TargetFileName:  "gradlew",
			Type:            templateapi.TypeSupportOnce,
			Kind:            templateapi.KindBuildSystem,
		},
		{
			SourceFile:      "gradle/gradlew.bat",
			Snippets:        templateapi.DefaultSnippets,
			TargetDirectory: "",
			TargetFileName:  "gradlew.bat",
			Type:            templateapi.TypeSupportOnce,
			Kind:            templateapi.KindBuildSystem,
		},
	},
}

Functions

This section is empty.

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL