@@ -25,7 +25,6 @@ import {
25
25
ArrayParameterObjectCollectionFormat ,
26
26
BodyParameterObject ,
27
27
FormDataParameterObject ,
28
- HeaderParameterObject ,
29
28
ParameterObject ,
30
29
ParameterObjectCodec ,
31
30
PathParameterObject ,
@@ -53,13 +52,18 @@ import {
53
52
} from '../../common/data/serialized-fragment' ;
54
53
import { sequenceOptionEither } from '../../../../utils/option' ;
55
54
import { identity } from 'fp-ts/lib/function' ;
55
+ import {
56
+ fromSerializedHeaderParameter ,
57
+ getSerializedHeaderParameterType ,
58
+ SerializedHeaderParameter ,
59
+ } from '../../common/data/serialized-header-parameters' ;
56
60
57
61
interface Parameters {
58
62
readonly pathParameters : PathParameterObject [ ] ;
59
63
readonly serializedPathParameters : SerializedPathParameter [ ] ;
60
64
readonly serializedQueryParameter : Option < SerializedType > ;
61
65
readonly serializedBodyParameter : Option < SerializedType > ;
62
- readonly headerParameters : HeaderParameterObject [ ] ;
66
+ readonly serializedHeadersParameter : Option < SerializedType > ;
63
67
readonly formDataParameters : FormDataParameterObject [ ] ;
64
68
readonly queryString : Option < SerializedFragment > ;
65
69
}
@@ -79,7 +83,7 @@ const getParameters = combineReader(
79
83
const serializedPathParameters : SerializedPathParameter [ ] = [ ] ;
80
84
const serializedQueryParameters : SerializedType [ ] = [ ] ;
81
85
const bodyParameters : BodyParameterObject [ ] = [ ] ;
82
- const headerParameters : HeaderParameterObject [ ] = [ ] ;
86
+ const serializedHeaderParameters : SerializedHeaderParameter [ ] = [ ] ;
83
87
const formDataParameters : FormDataParameterObject [ ] = [ ] ;
84
88
const queryStringFragments : SerializedFragment [ ] = [ ] ;
85
89
@@ -129,7 +133,13 @@ const getParameters = combineReader(
129
133
break ;
130
134
}
131
135
case 'header' : {
132
- headerParameters . push ( resolved . right ) ;
136
+ const serializedParameter = pipe (
137
+ serialized . right ,
138
+ fromSerializedHeaderParameter ( resolved . right . name ) ,
139
+ getSerializedHeaderParameterType ,
140
+ ) ;
141
+
142
+ serializedHeaderParameters . push ( serializedParameter ) ;
133
143
break ;
134
144
}
135
145
case 'formData' : {
@@ -195,6 +205,16 @@ const getParameters = combineReader(
195
205
sequenceOptionEither ,
196
206
) ;
197
207
208
+ const serializedHeadersParameter = pipe (
209
+ nonEmptyArray . fromArray ( serializedHeaderParameters ) ,
210
+ option . map ( parameters =>
211
+ pipe (
212
+ intercalateSerializedTypes ( serializedType ( ';' , ',' , [ ] , [ ] ) , parameters ) ,
213
+ getSerializedObjectType ( ) ,
214
+ ) ,
215
+ ) ,
216
+ ) ;
217
+
198
218
const queryString = pipe (
199
219
nonEmptyArray . fromArray ( queryStringFragments ) ,
200
220
option . map ( queryStringFragments =>
@@ -215,7 +235,7 @@ const getParameters = combineReader(
215
235
serializedPathParameters,
216
236
serializedQueryParameter,
217
237
serializedBodyParameter,
218
- headerParameters ,
238
+ serializedHeadersParameter ,
219
239
formDataParameters,
220
240
queryString,
221
241
} ) ) ;
@@ -258,7 +278,8 @@ export const serializeOperationObject = combineReader(
258
278
( parameters , serializedResponses , clientRef ) => {
259
279
const hasQueryParameters = isSome ( parameters . serializedQueryParameter ) ;
260
280
const hasBodyParameters = isSome ( parameters . serializedBodyParameter ) ;
261
- const hasParameters = hasQueryParameters || hasBodyParameters ;
281
+ const hasHeaderParameters = isSome ( parameters . serializedHeadersParameter ) ;
282
+ const hasParameters = hasQueryParameters || hasBodyParameters || hasHeaderParameters ;
262
283
263
284
const bodyType = pipe (
264
285
parameters . serializedBodyParameter ,
@@ -282,10 +303,22 @@ export const serializeOperationObject = combineReader(
282
303
option . getOrElse ( ( ) => '' ) ,
283
304
) ;
284
305
306
+ const headersType = pipe (
307
+ parameters . serializedHeadersParameter ,
308
+ option . map ( headers => `headers: ${ headers . type } ` ) ,
309
+ option . getOrElse ( ( ) => '' ) ,
310
+ ) ;
311
+
312
+ const headersIO = pipe (
313
+ parameters . serializedHeadersParameter ,
314
+ option . map ( headers => `const headers = ${ headers . io } .encode(parameters.headers)` ) ,
315
+ option . getOrElse ( ( ) => '' ) ,
316
+ ) ;
317
+
285
318
const argsType = concatIf (
286
319
hasParameters ,
287
320
parameters . serializedPathParameters . map ( p => p . type ) ,
288
- [ `parameters: { ${ queryType } ${ bodyType } }` ] ,
321
+ [ `parameters: { ${ queryType } ${ bodyType } ${ headersType } }` ] ,
289
322
) . join ( ',' ) ;
290
323
291
324
const type = `
@@ -303,13 +336,15 @@ export const serializeOperationObject = combineReader(
303
336
${ operationName } : (${ argsIO } ) => {
304
337
${ bodyIO }
305
338
${ queryIO }
339
+ ${ headersIO }
306
340
307
341
return e.httpClient.chain(
308
342
e.httpClient.request({
309
343
url: ${ getURL ( url , parameters . serializedPathParameters ) } ,
310
344
method: '${ method } ',
311
345
${ when ( hasQueryParameters , 'query,' ) }
312
346
${ when ( hasBodyParameters , 'body,' ) }
347
+ ${ when ( hasHeaderParameters , 'headers' ) }
313
348
}),
314
349
value =>
315
350
pipe(
@@ -342,6 +377,10 @@ export const serializeOperationObject = combineReader(
342
377
parameters . queryString ,
343
378
option . map ( p => p . dependencies ) ,
344
379
) ,
380
+ pipe (
381
+ parameters . serializedHeadersParameter ,
382
+ option . map ( p => p . dependencies ) ,
383
+ ) ,
345
384
] ) ,
346
385
] ) ,
347
386
] ;
0 commit comments