@grafana/openapi-to-k6 0.1.2 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/.github/workflows/publish.yaml +2 -0
  2. package/.github/workflows/tests.yaml +14 -6
  3. package/README.md +49 -14
  4. package/dist/cli.js +18 -2
  5. package/dist/constants.js +8 -2
  6. package/dist/{generator.js → generator/index.js} +7 -13
  7. package/dist/{k6SdkClient.js → generator/k6Client.js} +148 -161
  8. package/examples/basic_schema/single/k6-script.sample.ts +11 -0
  9. package/examples/basic_schema/single/simpleAPI.ts +87 -0
  10. package/examples/basic_schema/split/k6-script.sample.ts +11 -0
  11. package/examples/basic_schema/split/simpleAPI.schemas.ts +9 -0
  12. package/examples/basic_schema/split/simpleAPI.ts +85 -0
  13. package/examples/basic_schema/tags/default.ts +85 -0
  14. package/examples/basic_schema/tags/k6-script.sample.ts +11 -0
  15. package/examples/basic_schema/tags/simpleAPI.schemas.ts +9 -0
  16. package/examples/form_data_schema/single/formDataAPI.ts +115 -0
  17. package/examples/form_data_schema/{k6-script.sample.ts → single/k6-script.sample.ts} +2 -2
  18. package/examples/form_data_schema/split/formDataAPI.schemas.ts +24 -0
  19. package/examples/form_data_schema/split/formDataAPI.ts +98 -0
  20. package/examples/form_data_schema/split/k6-script.sample.ts +11 -0
  21. package/examples/form_data_schema/tags/default.ts +98 -0
  22. package/examples/form_data_schema/tags/formDataAPI.schemas.ts +24 -0
  23. package/examples/form_data_schema/tags/k6-script.sample.ts +11 -0
  24. package/examples/form_url_encoded_data_schema/single/formURLEncodedAPI.ts +112 -0
  25. package/examples/form_url_encoded_data_schema/{k6-script.sample.ts → single/k6-script.sample.ts} +2 -2
  26. package/examples/form_url_encoded_data_schema/split/formURLEncodedAPI.schemas.ts +24 -0
  27. package/examples/form_url_encoded_data_schema/split/formURLEncodedAPI.ts +98 -0
  28. package/examples/form_url_encoded_data_schema/split/k6-script.sample.ts +11 -0
  29. package/examples/form_url_encoded_data_schema/tags/default.ts +98 -0
  30. package/examples/form_url_encoded_data_schema/tags/formURLEncodedAPI.schemas.ts +24 -0
  31. package/examples/form_url_encoded_data_schema/tags/k6-script.sample.ts +11 -0
  32. package/examples/form_url_encoded_data_with_query_params_schema/single/formURLEncodedAPIWithQueryParameters.ts +128 -0
  33. package/examples/form_url_encoded_data_with_query_params_schema/{k6-script.sample.ts → single/k6-script.sample.ts} +2 -2
  34. package/examples/form_url_encoded_data_with_query_params_schema/split/formURLEncodedAPIWithQueryParameters.schemas.ts +35 -0
  35. package/examples/form_url_encoded_data_with_query_params_schema/split/formURLEncodedAPIWithQueryParameters.ts +104 -0
  36. package/examples/form_url_encoded_data_with_query_params_schema/split/k6-script.sample.ts +14 -0
  37. package/examples/form_url_encoded_data_with_query_params_schema/tags/default.ts +104 -0
  38. package/examples/form_url_encoded_data_with_query_params_schema/tags/formURLEncodedAPIWithQueryParameters.schemas.ts +35 -0
  39. package/examples/form_url_encoded_data_with_query_params_schema/tags/k6-script.sample.ts +14 -0
  40. package/examples/get_request_with_path_parameters_schema/{k6-script.sample.ts → single/k6-script.sample.ts} +2 -2
  41. package/examples/get_request_with_path_parameters_schema/single/simpleAPI.ts +94 -0
  42. package/examples/get_request_with_path_parameters_schema/split/k6-script.sample.ts +11 -0
  43. package/examples/get_request_with_path_parameters_schema/split/simpleAPI.schemas.ts +12 -0
  44. package/examples/get_request_with_path_parameters_schema/split/simpleAPI.ts +90 -0
  45. package/examples/get_request_with_path_parameters_schema/tags/default.ts +90 -0
  46. package/examples/get_request_with_path_parameters_schema/tags/k6-script.sample.ts +11 -0
  47. package/examples/get_request_with_path_parameters_schema/tags/simpleAPI.schemas.ts +12 -0
  48. package/examples/headers_schema/single/headerDemoAPI.ts +202 -0
  49. package/examples/headers_schema/{k6-script.sample.ts → single/k6-script.sample.ts} +2 -2
  50. package/examples/headers_schema/split/headerDemoAPI.schemas.ts +32 -0
  51. package/examples/headers_schema/split/headerDemoAPI.ts +184 -0
  52. package/examples/headers_schema/split/k6-script.sample.ts +25 -0
  53. package/examples/headers_schema/tags/default.ts +182 -0
  54. package/examples/headers_schema/tags/headerDemoAPI.schemas.ts +32 -0
  55. package/examples/headers_schema/tags/k6-script.sample.ts +25 -0
  56. package/examples/no_title_schema/{k6-script.sample.ts → single/k6-script.sample.ts} +2 -2
  57. package/examples/no_title_schema/single/k6Client.ts +87 -0
  58. package/examples/{basic_schema → no_title_schema/split}/k6-script.sample.ts +2 -2
  59. package/examples/no_title_schema/split/k6Client.schemas.ts +9 -0
  60. package/examples/no_title_schema/split/k6Client.ts +85 -0
  61. package/examples/no_title_schema/tags/default.ts +85 -0
  62. package/examples/no_title_schema/tags/k6-script.sample.ts +11 -0
  63. package/examples/no_title_schema/tags/k6Client.schemas.ts +9 -0
  64. package/examples/post_request_with_query_params/single/exampleAPI.ts +126 -0
  65. package/examples/post_request_with_query_params/{k6-script.sample.ts → single/k6-script.sample.ts} +2 -2
  66. package/examples/post_request_with_query_params/split/exampleAPI.schemas.ts +33 -0
  67. package/examples/post_request_with_query_params/split/exampleAPI.ts +105 -0
  68. package/examples/post_request_with_query_params/split/k6-script.sample.ts +14 -0
  69. package/examples/post_request_with_query_params/tags/default.ts +105 -0
  70. package/examples/post_request_with_query_params/tags/exampleAPI.schemas.ts +33 -0
  71. package/examples/post_request_with_query_params/tags/k6-script.sample.ts +14 -0
  72. package/examples/query_params_schema/single/exampleAPI.ts +120 -0
  73. package/examples/query_params_schema/{k6-script.sample.ts → single/k6-script.sample.ts} +2 -2
  74. package/examples/query_params_schema/split/exampleAPI.schemas.ts +37 -0
  75. package/examples/query_params_schema/split/exampleAPI.ts +94 -0
  76. package/examples/query_params_schema/split/k6-script.sample.ts +11 -0
  77. package/examples/query_params_schema/tags/default.ts +94 -0
  78. package/examples/query_params_schema/tags/exampleAPI.schemas.ts +37 -0
  79. package/examples/query_params_schema/tags/k6-script.sample.ts +11 -0
  80. package/examples/simple_post_request_schema/{exampleAPI.ts → single/exampleAPI.ts} +49 -49
  81. package/examples/simple_post_request_schema/{k6-script.sample.ts → single/k6-script.sample.ts} +2 -2
  82. package/examples/simple_post_request_schema/split/exampleAPI.schemas.ts +47 -0
  83. package/examples/simple_post_request_schema/split/exampleAPI.ts +99 -0
  84. package/examples/simple_post_request_schema/split/k6-script.sample.ts +13 -0
  85. package/examples/simple_post_request_schema/tags/default.ts +99 -0
  86. package/examples/simple_post_request_schema/tags/exampleAPI.schemas.ts +47 -0
  87. package/examples/simple_post_request_schema/tags/k6-script.sample.ts +13 -0
  88. package/images/openapi-to-k6.png +0 -0
  89. package/package.json +2 -2
  90. package/src/cli.ts +28 -2
  91. package/src/constants.ts +7 -1
  92. package/src/{generator.ts → generator/index.ts} +8 -21
  93. package/src/{k6SdkClient.ts → generator/k6Client.ts} +174 -222
  94. package/src/type.d.ts +3 -4
  95. package/tests/e2e/schema.json +8 -0
  96. package/tests/e2e/{k6Script.ts → single/k6Script.ts} +7 -2
  97. package/tests/e2e/split/k6Script.ts +82 -0
  98. package/tests/e2e/tags/k6Script.ts +106 -0
  99. package/tests/functional-tests/fixtures/schemas/basic_schema.json +1 -4
  100. package/tests/functional-tests/fixtures/schemas/form_data_schema.json +4 -4
  101. package/tests/functional-tests/fixtures/schemas/form_url_encoded_data_schema.json +3 -3
  102. package/tests/functional-tests/fixtures/schemas/form_url_encoded_data_with_query_params_schema.json +2 -2
  103. package/tests/functional-tests/fixtures/schemas/get_request_with_path_parameters_schema.json +2 -2
  104. package/tests/functional-tests/fixtures/schemas/headers_schema.json +7 -8
  105. package/tests/functional-tests/fixtures/schemas/no_title_schema.json +2 -5
  106. package/tests/functional-tests/fixtures/schemas/post_request_with_query_params.json +3 -4
  107. package/tests/functional-tests/fixtures/schemas/query_params_schema.json +3 -3
  108. package/tests/functional-tests/fixtures/schemas/simple_post_request_schema.json +3 -5
  109. package/tests/functional-tests/generator.test.ts +46 -5
  110. package/examples/basic_schema/simpleAPI.ts +0 -87
  111. package/examples/form_data_schema/formDataAPI.ts +0 -115
  112. package/examples/form_url_encoded_data_schema/formURLEncodedAPI.ts +0 -114
  113. package/examples/form_url_encoded_data_with_query_params_schema/formURLEncodedAPIWithQueryParameters.ts +0 -130
  114. package/examples/get_request_with_path_parameters_schema/simpleAPI.ts +0 -94
  115. package/examples/headers_schema/headerDemoAPI.ts +0 -196
  116. package/examples/no_title_schema/K6Client.ts +0 -86
  117. package/examples/post_request_with_query_params/exampleAPI.ts +0 -124
  118. package/examples/query_params_schema/exampleAPI.ts +0 -118
  119. package/examples/update_examples.sh +0 -21
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Automatically generated by @grafana/openapi-to-k6: 0.2.0
3
+ * Do not edit manually.
4
+ * Form Data API
5
+ * OpenAPI spec version: 1.0.0
6
+ */
7
+ export type PostUpload400 = {
8
+ error?: string
9
+ success?: boolean
10
+ }
11
+
12
+ export type PostUpload200 = {
13
+ message?: string
14
+ success?: boolean
15
+ }
16
+
17
+ export type PostUploadBody = {
18
+ /** Description of the file */
19
+ description?: string
20
+ /** File to upload */
21
+ file: Blob
22
+ /** User ID associated with the upload */
23
+ userId: string
24
+ }
@@ -0,0 +1,11 @@
1
+ import { FormDataAPIClient } from './formDataAPI.ts'
2
+
3
+ const baseUrl = '<BASE_URL>'
4
+ const client = new FormDataAPIClient({ baseUrl })
5
+
6
+ export default function () {
7
+ /**
8
+ * Upload files and data
9
+ */
10
+ const postUploadResponseData = client.postUpload(postUploadBody)
11
+ }
@@ -0,0 +1,112 @@
1
+ /**
2
+ * Automatically generated by @grafana/openapi-to-k6: 0.2.0
3
+ * Do not edit manually.
4
+ * Form URL Encoded API
5
+ * OpenAPI spec version: 1.0.0
6
+ */
7
+ import { URL } from 'https://jslib.k6.io/url/1.0.0/index.js'
8
+ import http from 'k6/http'
9
+ import type { Params, Response } from 'k6/http'
10
+ export type PostSubmitForm400 = {
11
+ error?: string
12
+ success?: boolean
13
+ }
14
+
15
+ export type PostSubmitForm200 = {
16
+ message?: string
17
+ success?: boolean
18
+ }
19
+
20
+ export type PostSubmitFormBody = {
21
+ /** Age of the user */
22
+ age?: number
23
+ /** Email address of the user */
24
+ email: string
25
+ /** Name of the user */
26
+ name: string
27
+ }
28
+
29
+ /**
30
+ * This is the base client to use for interacting with the API.
31
+ */
32
+ export class FormURLEncodedAPIClient {
33
+ private cleanBaseUrl: string
34
+ private commonRequestParameters: Params
35
+
36
+ constructor(clientOptions: {
37
+ baseUrl: string
38
+ commonRequestParameters?: Params
39
+ }) {
40
+ this.cleanBaseUrl = clientOptions.baseUrl.replace(/\/+$/, '')
41
+ }
42
+
43
+ /**
44
+ * This endpoint accepts form URL-encoded data.
45
+ * @summary Submit form data
46
+ */
47
+ postSubmitForm(
48
+ postSubmitFormBody: PostSubmitFormBody,
49
+ requestParameters?: Params
50
+ ): {
51
+ response: Response
52
+ data: PostSubmitForm200
53
+ } {
54
+ const url = new URL(this.cleanBaseUrl + `/submit-form`)
55
+ const mergedRequestParameters = this._mergeRequestParameters(
56
+ requestParameters || {},
57
+ this.commonRequestParameters
58
+ )
59
+ const response = http.request(
60
+ 'POST',
61
+ url.toString(),
62
+ JSON.stringify(postSubmitFormBody),
63
+ {
64
+ ...mergedRequestParameters,
65
+ headers: {
66
+ 'Content-Type': 'application/x-www-form-urlencoded',
67
+ ...mergedRequestParameters?.headers,
68
+ },
69
+ }
70
+ )
71
+ let data
72
+
73
+ try {
74
+ data = response.json()
75
+ } catch {
76
+ data = response.body
77
+ }
78
+ return {
79
+ response,
80
+ data,
81
+ }
82
+ }
83
+
84
+ /**
85
+ * Merges the provided request parameters with default parameters for the client.
86
+ *
87
+ * @param {Params} requestParameters - The parameters provided specifically for the request
88
+ * @param {Params} commonRequestParameters - Common parameters for all requests
89
+ * @returns {Params} - The merged parameters
90
+ */
91
+ private _mergeRequestParameters(
92
+ requestParameters?: Params,
93
+ commonRequestParameters?: Params
94
+ ): Params {
95
+ return {
96
+ ...commonRequestParameters, // Default to common parameters
97
+ ...requestParameters, // Override with request-specific parameters
98
+ headers: {
99
+ ...(commonRequestParameters?.headers || {}), // Ensure headers are defined
100
+ ...(requestParameters?.headers || {}),
101
+ },
102
+ cookies: {
103
+ ...(commonRequestParameters?.cookies || {}), // Ensure cookies are defined
104
+ ...(requestParameters?.cookies || {}),
105
+ },
106
+ tags: {
107
+ ...(commonRequestParameters?.tags || {}), // Ensure tags are defined
108
+ ...(requestParameters?.tags || {}),
109
+ },
110
+ }
111
+ }
112
+ }
@@ -1,7 +1,7 @@
1
- import { createFormURLEncodedAPI } from './formURLEncodedAPI.ts'
1
+ import { FormURLEncodedAPIClient } from './formURLEncodedAPI.ts'
2
2
 
3
3
  const baseUrl = '<BASE_URL>'
4
- const client = createFormURLEncodedAPI({ baseUrl })
4
+ const client = new FormURLEncodedAPIClient({ baseUrl })
5
5
 
6
6
  export default function () {
7
7
  /**
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Automatically generated by @grafana/openapi-to-k6: 0.2.0
3
+ * Do not edit manually.
4
+ * Form URL Encoded API
5
+ * OpenAPI spec version: 1.0.0
6
+ */
7
+ export type PostSubmitForm400 = {
8
+ error?: string
9
+ success?: boolean
10
+ }
11
+
12
+ export type PostSubmitForm200 = {
13
+ message?: string
14
+ success?: boolean
15
+ }
16
+
17
+ export type PostSubmitFormBody = {
18
+ /** Age of the user */
19
+ age?: number
20
+ /** Email address of the user */
21
+ email: string
22
+ /** Name of the user */
23
+ name: string
24
+ }
@@ -0,0 +1,98 @@
1
+ /**
2
+ * Automatically generated by @grafana/openapi-to-k6: 0.2.0
3
+ * Do not edit manually.
4
+ * Form URL Encoded API
5
+ * OpenAPI spec version: 1.0.0
6
+ */
7
+ import { URL } from 'https://jslib.k6.io/url/1.0.0/index.js'
8
+ import http from 'k6/http'
9
+ import type { Params, Response } from 'k6/http'
10
+ import type {
11
+ PostSubmitForm200,
12
+ PostSubmitFormBody,
13
+ } from './formURLEncodedAPI.schemas'
14
+
15
+ /**
16
+ * This is the base client to use for interacting with the API.
17
+ */
18
+ export class FormURLEncodedAPIClient {
19
+ private cleanBaseUrl: string
20
+ private commonRequestParameters: Params
21
+
22
+ constructor(clientOptions: {
23
+ baseUrl: string
24
+ commonRequestParameters?: Params
25
+ }) {
26
+ this.cleanBaseUrl = clientOptions.baseUrl.replace(/\/+$/, '')
27
+ }
28
+
29
+ /**
30
+ * This endpoint accepts form URL-encoded data.
31
+ * @summary Submit form data
32
+ */
33
+ postSubmitForm(
34
+ postSubmitFormBody: PostSubmitFormBody,
35
+ requestParameters?: Params
36
+ ): {
37
+ response: Response
38
+ data: PostSubmitForm200
39
+ } {
40
+ const url = new URL(this.cleanBaseUrl + `/submit-form`)
41
+ const mergedRequestParameters = this._mergeRequestParameters(
42
+ requestParameters || {},
43
+ this.commonRequestParameters
44
+ )
45
+ const response = http.request(
46
+ 'POST',
47
+ url.toString(),
48
+ JSON.stringify(postSubmitFormBody),
49
+ {
50
+ ...mergedRequestParameters,
51
+ headers: {
52
+ 'Content-Type': 'application/x-www-form-urlencoded',
53
+ ...mergedRequestParameters?.headers,
54
+ },
55
+ }
56
+ )
57
+ let data
58
+
59
+ try {
60
+ data = response.json()
61
+ } catch {
62
+ data = response.body
63
+ }
64
+ return {
65
+ response,
66
+ data,
67
+ }
68
+ }
69
+
70
+ /**
71
+ * Merges the provided request parameters with default parameters for the client.
72
+ *
73
+ * @param {Params} requestParameters - The parameters provided specifically for the request
74
+ * @param {Params} commonRequestParameters - Common parameters for all requests
75
+ * @returns {Params} - The merged parameters
76
+ */
77
+ private _mergeRequestParameters(
78
+ requestParameters?: Params,
79
+ commonRequestParameters?: Params
80
+ ): Params {
81
+ return {
82
+ ...commonRequestParameters, // Default to common parameters
83
+ ...requestParameters, // Override with request-specific parameters
84
+ headers: {
85
+ ...(commonRequestParameters?.headers || {}), // Ensure headers are defined
86
+ ...(requestParameters?.headers || {}),
87
+ },
88
+ cookies: {
89
+ ...(commonRequestParameters?.cookies || {}), // Ensure cookies are defined
90
+ ...(requestParameters?.cookies || {}),
91
+ },
92
+ tags: {
93
+ ...(commonRequestParameters?.tags || {}), // Ensure tags are defined
94
+ ...(requestParameters?.tags || {}),
95
+ },
96
+ }
97
+ }
98
+ }
@@ -0,0 +1,11 @@
1
+ import { FormURLEncodedAPIClient } from './formURLEncodedAPI.ts'
2
+
3
+ const baseUrl = '<BASE_URL>'
4
+ const client = new FormURLEncodedAPIClient({ baseUrl })
5
+
6
+ export default function () {
7
+ /**
8
+ * Submit form data
9
+ */
10
+ const postSubmitFormResponseData = client.postSubmitForm(postSubmitFormBody)
11
+ }
@@ -0,0 +1,98 @@
1
+ /**
2
+ * Automatically generated by @grafana/openapi-to-k6: 0.2.0
3
+ * Do not edit manually.
4
+ * Form URL Encoded API
5
+ * OpenAPI spec version: 1.0.0
6
+ */
7
+ import { URL } from 'https://jslib.k6.io/url/1.0.0/index.js'
8
+ import http from 'k6/http'
9
+ import type { Params, Response } from 'k6/http'
10
+ import type {
11
+ PostSubmitForm200,
12
+ PostSubmitFormBody,
13
+ } from './formURLEncodedAPI.schemas'
14
+
15
+ /**
16
+ * This is the base client to use for interacting with the API.
17
+ */
18
+ export class DefaultClient {
19
+ private cleanBaseUrl: string
20
+ private commonRequestParameters: Params
21
+
22
+ constructor(clientOptions: {
23
+ baseUrl: string
24
+ commonRequestParameters?: Params
25
+ }) {
26
+ this.cleanBaseUrl = clientOptions.baseUrl.replace(/\/+$/, '')
27
+ }
28
+
29
+ /**
30
+ * This endpoint accepts form URL-encoded data.
31
+ * @summary Submit form data
32
+ */
33
+ postSubmitForm(
34
+ postSubmitFormBody: PostSubmitFormBody,
35
+ requestParameters?: Params
36
+ ): {
37
+ response: Response
38
+ data: PostSubmitForm200
39
+ } {
40
+ const url = new URL(this.cleanBaseUrl + `/submit-form`)
41
+ const mergedRequestParameters = this._mergeRequestParameters(
42
+ requestParameters || {},
43
+ this.commonRequestParameters
44
+ )
45
+ const response = http.request(
46
+ 'POST',
47
+ url.toString(),
48
+ JSON.stringify(postSubmitFormBody),
49
+ {
50
+ ...mergedRequestParameters,
51
+ headers: {
52
+ 'Content-Type': 'application/x-www-form-urlencoded',
53
+ ...mergedRequestParameters?.headers,
54
+ },
55
+ }
56
+ )
57
+ let data
58
+
59
+ try {
60
+ data = response.json()
61
+ } catch {
62
+ data = response.body
63
+ }
64
+ return {
65
+ response,
66
+ data,
67
+ }
68
+ }
69
+
70
+ /**
71
+ * Merges the provided request parameters with default parameters for the client.
72
+ *
73
+ * @param {Params} requestParameters - The parameters provided specifically for the request
74
+ * @param {Params} commonRequestParameters - Common parameters for all requests
75
+ * @returns {Params} - The merged parameters
76
+ */
77
+ private _mergeRequestParameters(
78
+ requestParameters?: Params,
79
+ commonRequestParameters?: Params
80
+ ): Params {
81
+ return {
82
+ ...commonRequestParameters, // Default to common parameters
83
+ ...requestParameters, // Override with request-specific parameters
84
+ headers: {
85
+ ...(commonRequestParameters?.headers || {}), // Ensure headers are defined
86
+ ...(requestParameters?.headers || {}),
87
+ },
88
+ cookies: {
89
+ ...(commonRequestParameters?.cookies || {}), // Ensure cookies are defined
90
+ ...(requestParameters?.cookies || {}),
91
+ },
92
+ tags: {
93
+ ...(commonRequestParameters?.tags || {}), // Ensure tags are defined
94
+ ...(requestParameters?.tags || {}),
95
+ },
96
+ }
97
+ }
98
+ }
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Automatically generated by @grafana/openapi-to-k6: 0.2.0
3
+ * Do not edit manually.
4
+ * Form URL Encoded API
5
+ * OpenAPI spec version: 1.0.0
6
+ */
7
+ export type PostSubmitForm400 = {
8
+ error?: string
9
+ success?: boolean
10
+ }
11
+
12
+ export type PostSubmitForm200 = {
13
+ message?: string
14
+ success?: boolean
15
+ }
16
+
17
+ export type PostSubmitFormBody = {
18
+ /** Age of the user */
19
+ age?: number
20
+ /** Email address of the user */
21
+ email: string
22
+ /** Name of the user */
23
+ name: string
24
+ }
@@ -0,0 +1,11 @@
1
+ import { FormURLEncodedAPIClient } from './formURLEncodedAPI.ts'
2
+
3
+ const baseUrl = '<BASE_URL>'
4
+ const client = new FormURLEncodedAPIClient({ baseUrl })
5
+
6
+ export default function () {
7
+ /**
8
+ * Submit form data
9
+ */
10
+ const postSubmitFormResponseData = client.postSubmitForm(postSubmitFormBody)
11
+ }
@@ -0,0 +1,128 @@
1
+ /**
2
+ * Automatically generated by @grafana/openapi-to-k6: 0.2.0
3
+ * Do not edit manually.
4
+ * Form URL Encoded API with Query Parameters
5
+ * OpenAPI spec version: 1.0.0
6
+ */
7
+ import { URL, URLSearchParams } from 'https://jslib.k6.io/url/1.0.0/index.js'
8
+ import http from 'k6/http'
9
+ import type { Params, Response } from 'k6/http'
10
+ export type PostSubmitForm400 = {
11
+ error?: string
12
+ success?: boolean
13
+ }
14
+
15
+ export type PostSubmitForm200 = {
16
+ message?: string
17
+ success?: boolean
18
+ }
19
+
20
+ export type PostSubmitFormBody = {
21
+ /** Age of the user */
22
+ age?: number
23
+ /** Email address of the user */
24
+ email: string
25
+ /** Name of the user */
26
+ name: string
27
+ }
28
+
29
+ export type PostSubmitFormParams = {
30
+ /**
31
+ * Authentication token
32
+ */
33
+ token: string
34
+ /**
35
+ * Locale of the user
36
+ */
37
+ locale?: string
38
+ }
39
+
40
+ /**
41
+ * This is the base client to use for interacting with the API.
42
+ */
43
+ export class FormURLEncodedAPIWithQueryParametersClient {
44
+ private cleanBaseUrl: string
45
+ private commonRequestParameters: Params
46
+
47
+ constructor(clientOptions: {
48
+ baseUrl: string
49
+ commonRequestParameters?: Params
50
+ }) {
51
+ this.cleanBaseUrl = clientOptions.baseUrl.replace(/\/+$/, '')
52
+ }
53
+
54
+ /**
55
+ * This endpoint accepts form URL-encoded data and query parameters.
56
+ * @summary Submit form data with query parameters
57
+ */
58
+ postSubmitForm(
59
+ postSubmitFormBody: PostSubmitFormBody,
60
+ params: PostSubmitFormParams,
61
+ requestParameters?: Params
62
+ ): {
63
+ response: Response
64
+ data: PostSubmitForm200
65
+ } {
66
+ const url = new URL(
67
+ this.cleanBaseUrl +
68
+ `/submit-form` +
69
+ `?${new URLSearchParams(params).toString()}`
70
+ )
71
+ const mergedRequestParameters = this._mergeRequestParameters(
72
+ requestParameters || {},
73
+ this.commonRequestParameters
74
+ )
75
+ const response = http.request(
76
+ 'POST',
77
+ url.toString(),
78
+ JSON.stringify(postSubmitFormBody),
79
+ {
80
+ ...mergedRequestParameters,
81
+ headers: {
82
+ 'Content-Type': 'application/x-www-form-urlencoded',
83
+ ...mergedRequestParameters?.headers,
84
+ },
85
+ }
86
+ )
87
+ let data
88
+
89
+ try {
90
+ data = response.json()
91
+ } catch {
92
+ data = response.body
93
+ }
94
+ return {
95
+ response,
96
+ data,
97
+ }
98
+ }
99
+
100
+ /**
101
+ * Merges the provided request parameters with default parameters for the client.
102
+ *
103
+ * @param {Params} requestParameters - The parameters provided specifically for the request
104
+ * @param {Params} commonRequestParameters - Common parameters for all requests
105
+ * @returns {Params} - The merged parameters
106
+ */
107
+ private _mergeRequestParameters(
108
+ requestParameters?: Params,
109
+ commonRequestParameters?: Params
110
+ ): Params {
111
+ return {
112
+ ...commonRequestParameters, // Default to common parameters
113
+ ...requestParameters, // Override with request-specific parameters
114
+ headers: {
115
+ ...(commonRequestParameters?.headers || {}), // Ensure headers are defined
116
+ ...(requestParameters?.headers || {}),
117
+ },
118
+ cookies: {
119
+ ...(commonRequestParameters?.cookies || {}), // Ensure cookies are defined
120
+ ...(requestParameters?.cookies || {}),
121
+ },
122
+ tags: {
123
+ ...(commonRequestParameters?.tags || {}), // Ensure tags are defined
124
+ ...(requestParameters?.tags || {}),
125
+ },
126
+ }
127
+ }
128
+ }
@@ -1,7 +1,7 @@
1
- import { createFormURLEncodedAPIwithQueryParameters } from './formURLEncodedAPIWithQueryParameters.ts'
1
+ import { FormURLEncodedAPIwithQueryParametersClient } from './formURLEncodedAPIWithQueryParameters.ts'
2
2
 
3
3
  const baseUrl = '<BASE_URL>'
4
- const client = createFormURLEncodedAPIwithQueryParameters({ baseUrl })
4
+ const client = new FormURLEncodedAPIwithQueryParametersClient({ baseUrl })
5
5
 
6
6
  export default function () {
7
7
  /**
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Automatically generated by @grafana/openapi-to-k6: 0.2.0
3
+ * Do not edit manually.
4
+ * Form URL Encoded API with Query Parameters
5
+ * OpenAPI spec version: 1.0.0
6
+ */
7
+ export type PostSubmitForm400 = {
8
+ error?: string
9
+ success?: boolean
10
+ }
11
+
12
+ export type PostSubmitForm200 = {
13
+ message?: string
14
+ success?: boolean
15
+ }
16
+
17
+ export type PostSubmitFormBody = {
18
+ /** Age of the user */
19
+ age?: number
20
+ /** Email address of the user */
21
+ email: string
22
+ /** Name of the user */
23
+ name: string
24
+ }
25
+
26
+ export type PostSubmitFormParams = {
27
+ /**
28
+ * Authentication token
29
+ */
30
+ token: string
31
+ /**
32
+ * Locale of the user
33
+ */
34
+ locale?: string
35
+ }