1- import stylize from './style-serializer'
1+ import stylize , { encodeDisallowedCharacters } from './style-serializer'
2+ import serialize from './content-serializer'
23
3- export default {
4- path,
5- query,
6- header,
7- cookie
8- }
4+ export function path ( { req, value, parameter} ) {
5+ const { name, style, explode, content} = parameter
6+
7+ if ( content ) {
8+ const effectiveMediaType = Object . keys ( content ) [ 0 ]
9+
10+ req . url = req . url . split ( `{${ name } }` ) . join (
11+ encodeDisallowedCharacters (
12+ serialize ( value , effectiveMediaType ) ,
13+ { escape : true }
14+ )
15+ )
16+ return
17+ }
918
10- function path ( { req, value, parameter} ) {
11- const { name, style, explode} = parameter
1219 const styledValue = stylize ( {
1320 key : parameter . name ,
1421 value,
@@ -20,9 +27,16 @@ function path({req, value, parameter}) {
2027 req . url = req . url . split ( `{${ name } }` ) . join ( styledValue )
2128}
2229
23- function query ( { req, value, parameter} ) {
30+ export function query ( { req, value, parameter} ) {
2431 req . query = req . query || { }
2532
33+ if ( parameter . content ) {
34+ const effectiveMediaType = Object . keys ( parameter . content ) [ 0 ]
35+
36+ req . query [ parameter . name ] = serialize ( value , effectiveMediaType )
37+ return
38+ }
39+
2640 if ( value === false ) {
2741 value = 'false'
2842 }
@@ -98,13 +112,20 @@ const PARAMETER_HEADER_BLACKLIST = [
98112 'content-type'
99113]
100114
101- function header ( { req, parameter, value} ) {
115+ export function header ( { req, parameter, value} ) {
102116 req . headers = req . headers || { }
103117
104118 if ( PARAMETER_HEADER_BLACKLIST . indexOf ( parameter . name . toLowerCase ( ) ) > - 1 ) {
105119 return
106120 }
107121
122+ if ( parameter . content ) {
123+ const effectiveMediaType = Object . keys ( parameter . content ) [ 0 ]
124+
125+ req . headers [ parameter . name ] = serialize ( value , effectiveMediaType )
126+ return
127+ }
128+
108129 if ( typeof value !== 'undefined' ) {
109130 req . headers [ parameter . name ] = stylize ( {
110131 key : parameter . name ,
@@ -116,10 +137,17 @@ function header({req, parameter, value}) {
116137 }
117138}
118139
119- function cookie ( { req, parameter, value} ) {
140+ export function cookie ( { req, parameter, value} ) {
120141 req . headers = req . headers || { }
121142 const type = typeof value
122143
144+ if ( parameter . content ) {
145+ const effectiveMediaType = Object . keys ( parameter . content ) [ 0 ]
146+
147+ req . headers . Cookie = `${ parameter . name } =${ serialize ( value , effectiveMediaType ) } `
148+ return
149+ }
150+
123151 if ( type !== 'undefined' ) {
124152 const prefix = (
125153 type === 'object' &&
0 commit comments