1 | "use strict";
|
---|
2 |
|
---|
3 | var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
|
---|
4 | var _interopRequireWildcard = require("@babel/runtime-corejs3/helpers/interopRequireWildcard").default;
|
---|
5 | exports.__esModule = true;
|
---|
6 | exports.cookie = cookie;
|
---|
7 | exports.header = header;
|
---|
8 | exports.path = path;
|
---|
9 | exports.query = query;
|
---|
10 | var _styleSerializer = _interopRequireWildcard(require("./style-serializer.js"));
|
---|
11 | var _contentSerializer = _interopRequireDefault(require("./content-serializer.js"));
|
---|
12 | function path({
|
---|
13 | req,
|
---|
14 | value,
|
---|
15 | parameter
|
---|
16 | }) {
|
---|
17 | const {
|
---|
18 | name,
|
---|
19 | style,
|
---|
20 | explode,
|
---|
21 | content
|
---|
22 | } = parameter;
|
---|
23 | if (content) {
|
---|
24 | const effectiveMediaType = Object.keys(content)[0];
|
---|
25 | req.url = req.url.split(`{${name}}`).join((0, _styleSerializer.encodeDisallowedCharacters)((0, _contentSerializer.default)(value, effectiveMediaType), {
|
---|
26 | escape: true
|
---|
27 | }));
|
---|
28 | return;
|
---|
29 | }
|
---|
30 | const styledValue = (0, _styleSerializer.default)({
|
---|
31 | key: parameter.name,
|
---|
32 | value,
|
---|
33 | style: style || 'simple',
|
---|
34 | explode: explode || false,
|
---|
35 | escape: true
|
---|
36 | });
|
---|
37 | req.url = req.url.split(`{${name}}`).join(styledValue);
|
---|
38 | }
|
---|
39 | function query({
|
---|
40 | req,
|
---|
41 | value,
|
---|
42 | parameter
|
---|
43 | }) {
|
---|
44 | req.query = req.query || {};
|
---|
45 | if (parameter.content) {
|
---|
46 | const effectiveMediaType = Object.keys(parameter.content)[0];
|
---|
47 | const serializedValue = (0, _contentSerializer.default)(value, effectiveMediaType);
|
---|
48 | if (serializedValue) {
|
---|
49 | req.query[parameter.name] = serializedValue;
|
---|
50 | } else if (parameter.allowEmptyValue && value !== undefined) {
|
---|
51 | const paramName = parameter.name;
|
---|
52 | req.query[paramName] = req.query[paramName] || {};
|
---|
53 | req.query[paramName].allowEmptyValue = true;
|
---|
54 | }
|
---|
55 | return;
|
---|
56 | }
|
---|
57 | if (value === false) {
|
---|
58 | value = 'false';
|
---|
59 | }
|
---|
60 | if (value === 0) {
|
---|
61 | value = '0';
|
---|
62 | }
|
---|
63 | if (value) {
|
---|
64 | const {
|
---|
65 | style,
|
---|
66 | explode,
|
---|
67 | allowReserved
|
---|
68 | } = parameter;
|
---|
69 | req.query[parameter.name] = {
|
---|
70 | value,
|
---|
71 | serializationOption: {
|
---|
72 | style,
|
---|
73 | explode,
|
---|
74 | allowReserved
|
---|
75 | }
|
---|
76 | };
|
---|
77 | } else if (parameter.allowEmptyValue && value !== undefined) {
|
---|
78 | const paramName = parameter.name;
|
---|
79 | req.query[paramName] = req.query[paramName] || {};
|
---|
80 | req.query[paramName].allowEmptyValue = true;
|
---|
81 | }
|
---|
82 | }
|
---|
83 | const PARAMETER_HEADER_BLACKLIST = ['accept', 'authorization', 'content-type'];
|
---|
84 | function header({
|
---|
85 | req,
|
---|
86 | parameter,
|
---|
87 | value
|
---|
88 | }) {
|
---|
89 | req.headers = req.headers || {};
|
---|
90 | if (PARAMETER_HEADER_BLACKLIST.indexOf(parameter.name.toLowerCase()) > -1) {
|
---|
91 | return;
|
---|
92 | }
|
---|
93 | if (parameter.content) {
|
---|
94 | const effectiveMediaType = Object.keys(parameter.content)[0];
|
---|
95 | req.headers[parameter.name] = (0, _contentSerializer.default)(value, effectiveMediaType);
|
---|
96 | return;
|
---|
97 | }
|
---|
98 | if (value !== undefined && !(Array.isArray(value) && value.length === 0)) {
|
---|
99 | req.headers[parameter.name] = (0, _styleSerializer.default)({
|
---|
100 | key: parameter.name,
|
---|
101 | value,
|
---|
102 | style: parameter.style || 'simple',
|
---|
103 | explode: typeof parameter.explode === 'undefined' ? false : parameter.explode,
|
---|
104 | escape: false
|
---|
105 | });
|
---|
106 | }
|
---|
107 | }
|
---|
108 | function cookie({
|
---|
109 | req,
|
---|
110 | parameter,
|
---|
111 | value
|
---|
112 | }) {
|
---|
113 | req.headers = req.headers || {};
|
---|
114 | const type = typeof value;
|
---|
115 | if (parameter.content) {
|
---|
116 | const effectiveMediaType = Object.keys(parameter.content)[0];
|
---|
117 | req.headers.Cookie = `${parameter.name}=${(0, _contentSerializer.default)(value, effectiveMediaType)}`;
|
---|
118 | return;
|
---|
119 | }
|
---|
120 | if (value !== undefined && !(Array.isArray(value) && value.length === 0)) {
|
---|
121 | const prefix = type === 'object' && !Array.isArray(value) && parameter.explode ? '' : `${parameter.name}=`;
|
---|
122 | req.headers.Cookie = prefix + (0, _styleSerializer.default)({
|
---|
123 | key: parameter.name,
|
---|
124 | value,
|
---|
125 | escape: false,
|
---|
126 | style: parameter.style || 'form',
|
---|
127 | explode: typeof parameter.explode === 'undefined' ? false : parameter.explode
|
---|
128 | });
|
---|
129 | }
|
---|
130 | } |
---|