diff --git a/templates/fn.handlebars b/templates/fn.handlebars index 460cbd3..10bc261 100644 --- a/templates/fn.handlebars +++ b/templates/fn.handlebars @@ -2,7 +2,7 @@ /* eslint-disable */ /* Code generated by ng-openapi-gen DO NOT EDIT. */ -import { HttpClient, HttpContext, HttpResponse } from '@angular/common/http'; +import { HttpClient, HttpContext, HttpResponse, httpResource, HttpResourceRef, HttpResourceOptions } from '@angular/common/http'; import { Observable } from 'rxjs'; import { filter, map } from 'rxjs/operators'; import { {{@root.responseClass}} } from '{{pathToRoot}}{{@root.responseFile}}'; @@ -20,7 +20,13 @@ export interface {{paramsType}} { {{/requestBody}} } -export function {{importName}}(http: HttpClient, rootUrl: string, params{{^operation.parametersRequired}}?{{/operation.parametersRequired}}: {{paramsType}}, context?: HttpContext): Observable<{{@root.responseClass}}<{{{resultType}}}>> { +export const {{importName}} = { + Obs: {{importName}}$Obs, + Signal: {{importName}}$Signal, + PATH: '{{{operation.path}}}' +}; + +export function {{importName}}$Obs(http: HttpClient, rootUrl: string, params{{^operation.parametersRequired}}?{{/operation.parametersRequired}}: {{paramsType}}, context?: HttpContext): Observable<{{@root.responseClass}}<{{{resultType}}}>> { const rb = new {{@root.requestBuilderClass}}(rootUrl, {{importName}}.PATH, '{{operation.method}}'); if (params) { {{#operation.parameters}} @@ -41,4 +47,21 @@ export function {{importName}}(http: HttpClient, rootUrl: string, params{{^opera ); } -{{importName}}.PATH = '{{{operation.path}}}'; + +export function {{importName}}$Signal(http: HttpClient, rootUrl: string, paramsCallback{{^operation.parametersRequired}}?{{/operation.parametersRequired}}: () => {{paramsType}} | undefined, httpResourceOptions?: HttpResourceOptions<{{{resultType}}} | undefined, unknown>, context?: HttpContext): HttpResourceRef<{{{resultType}}} | undefined> { + return httpResource(() => { + let params = paramsCallback ? paramsCallback() : undefined; + const rb = new {{@root.requestBuilderClass}}(rootUrl, {{importName}}.PATH, '{{operation.method}}'); + if (params) { + {{#operation.parameters}} + rb.{{in}}('{{{name}}}', params{{{varAccess}}}, {{{parameterOptions}}}); + {{/operation.parameters}} + {{#requestBody}} + rb.body(params.body, '{{{mediaType}}}'); + {{/requestBody}} + } else { + return undefined; + } + return rb.build({ responseType: '{{{responseType}}}', accept: '{{{accept}}}', context }) + }, httpResourceOptions); +} \ No newline at end of file diff --git a/templates/operationBody.handlebars b/templates/operationBody.handlebars index b25cc97..6023199 100644 --- a/templates/operationBody.handlebars +++ b/templates/operationBody.handlebars @@ -3,3 +3,7 @@ map((r: {{@root.responseClass}}<{{{resultType}}}>): {{{resultType}}} => r.body) ); } + + {{{bodyMethodTsComments}}}{{methodName}}$Signal({{>operationParametersSignal}}): HttpResourceRef<{{{resultType}}} | undefined> { + return {{importName}}.Signal(this.http, this.rootUrl, params, httpResourceOptions, context) + } diff --git a/templates/operationParametersSignal.handlebars b/templates/operationParametersSignal.handlebars new file mode 100644 index 0000000..a9ab92e --- /dev/null +++ b/templates/operationParametersSignal.handlebars @@ -0,0 +1 @@ +params{{^operation.parametersRequired}}?{{/operation.parametersRequired}}: () => {{paramsType}} | undefined, httpResourceOptions?: HttpResourceOptions<{{{resultType}}} | undefined, unknown>, context?: HttpContext \ No newline at end of file diff --git a/templates/operationResponse.handlebars b/templates/operationResponse.handlebars index 29e962e..4eb3479 100644 --- a/templates/operationResponse.handlebars +++ b/templates/operationResponse.handlebars @@ -1,3 +1,3 @@ {{{responseMethodTsComments}}}{{responseMethodName}}({{>operationParameters}}): Observable<{{@root.responseClass}}<{{{resultType}}}>> { - return {{importName}}(this.http, this.rootUrl, params, context); - } + return {{importName}}.Obs(this.http, this.rootUrl, params, context); + } \ No newline at end of file diff --git a/templates/service.handlebars b/templates/service.handlebars index e8b581e..96ed787 100644 --- a/templates/service.handlebars +++ b/templates/service.handlebars @@ -2,7 +2,7 @@ /* eslint-disable */ /* Code generated by ng-openapi-gen DO NOT EDIT. */ -import { HttpClient, HttpContext } from '@angular/common/http'; +import { HttpClient, HttpContext, HttpResourceRef, HttpResourceOptions } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; import { map } from 'rxjs/operators';