source: node_modules/swagger-client/es/execute/oas3/parameter-builders.js

main
Last change on this file was d24f17c, checked in by Aleksandar Panovski <apano77@…>, 15 months ago

Initial commit

  • Property mode set to 100644
File size: 3.2 KB
Line 
1import stylize, { encodeDisallowedCharacters } from './style-serializer.js';
2import serialize from './content-serializer.js';
3export function path({
4 req,
5 value,
6 parameter
7}) {
8 const {
9 name,
10 style,
11 explode,
12 content
13 } = parameter;
14 if (content) {
15 const effectiveMediaType = Object.keys(content)[0];
16 req.url = req.url.split(`{${name}}`).join(encodeDisallowedCharacters(serialize(value, effectiveMediaType), {
17 escape: true
18 }));
19 return;
20 }
21 const styledValue = stylize({
22 key: parameter.name,
23 value,
24 style: style || 'simple',
25 explode: explode || false,
26 escape: true
27 });
28 req.url = req.url.split(`{${name}}`).join(styledValue);
29}
30export function query({
31 req,
32 value,
33 parameter
34}) {
35 req.query = req.query || {};
36 if (parameter.content) {
37 const effectiveMediaType = Object.keys(parameter.content)[0];
38 const serializedValue = serialize(value, effectiveMediaType);
39 if (serializedValue) {
40 req.query[parameter.name] = serializedValue;
41 } else if (parameter.allowEmptyValue && value !== undefined) {
42 const paramName = parameter.name;
43 req.query[paramName] = req.query[paramName] || {};
44 req.query[paramName].allowEmptyValue = true;
45 }
46 return;
47 }
48 if (value === false) {
49 value = 'false';
50 }
51 if (value === 0) {
52 value = '0';
53 }
54 if (value) {
55 const {
56 style,
57 explode,
58 allowReserved
59 } = parameter;
60 req.query[parameter.name] = {
61 value,
62 serializationOption: {
63 style,
64 explode,
65 allowReserved
66 }
67 };
68 } else if (parameter.allowEmptyValue && value !== undefined) {
69 const paramName = parameter.name;
70 req.query[paramName] = req.query[paramName] || {};
71 req.query[paramName].allowEmptyValue = true;
72 }
73}
74const PARAMETER_HEADER_BLACKLIST = ['accept', 'authorization', 'content-type'];
75export function header({
76 req,
77 parameter,
78 value
79}) {
80 req.headers = req.headers || {};
81 if (PARAMETER_HEADER_BLACKLIST.indexOf(parameter.name.toLowerCase()) > -1) {
82 return;
83 }
84 if (parameter.content) {
85 const effectiveMediaType = Object.keys(parameter.content)[0];
86 req.headers[parameter.name] = serialize(value, effectiveMediaType);
87 return;
88 }
89 if (value !== undefined && !(Array.isArray(value) && value.length === 0)) {
90 req.headers[parameter.name] = stylize({
91 key: parameter.name,
92 value,
93 style: parameter.style || 'simple',
94 explode: typeof parameter.explode === 'undefined' ? false : parameter.explode,
95 escape: false
96 });
97 }
98}
99export function cookie({
100 req,
101 parameter,
102 value
103}) {
104 req.headers = req.headers || {};
105 const type = typeof value;
106 if (parameter.content) {
107 const effectiveMediaType = Object.keys(parameter.content)[0];
108 req.headers.Cookie = `${parameter.name}=${serialize(value, effectiveMediaType)}`;
109 return;
110 }
111 if (value !== undefined && !(Array.isArray(value) && value.length === 0)) {
112 const prefix = type === 'object' && !Array.isArray(value) && parameter.explode ? '' : `${parameter.name}=`;
113 req.headers.Cookie = prefix + stylize({
114 key: parameter.name,
115 value,
116 escape: false,
117 style: parameter.style || 'form',
118 explode: typeof parameter.explode === 'undefined' ? false : parameter.explode
119 });
120 }
121}
Note: See TracBrowser for help on using the repository browser.