@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,11 @@
1
+ import { SimpleAPIClient } from './simpleAPI.ts'
2
+
3
+ const baseUrl = '<BASE_URL>'
4
+ const client = new SimpleAPIClient({ baseUrl })
5
+
6
+ export default function () {
7
+ /**
8
+ * Retrieve example data
9
+ */
10
+ const getExampleResponseData = client.getExample()
11
+ }
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Automatically generated by @grafana/openapi-to-k6: 0.2.0
3
+ * Do not edit manually.
4
+ * Simple 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 GetExample200 = {
11
+ message?: string
12
+ }
13
+
14
+ /**
15
+ * This is the base client to use for interacting with the API.
16
+ */
17
+ export class SimpleAPIClient {
18
+ private cleanBaseUrl: string
19
+ private commonRequestParameters: Params
20
+
21
+ constructor(clientOptions: {
22
+ baseUrl: string
23
+ commonRequestParameters?: Params
24
+ }) {
25
+ this.cleanBaseUrl = clientOptions.baseUrl.replace(/\/+$/, '')
26
+ }
27
+
28
+ /**
29
+ * @summary Retrieve example data
30
+ */
31
+ getExample(requestParameters?: Params): {
32
+ response: Response
33
+ data: GetExample200
34
+ } {
35
+ const url = new URL(this.cleanBaseUrl + `/example`)
36
+ const mergedRequestParameters = this._mergeRequestParameters(
37
+ requestParameters || {},
38
+ this.commonRequestParameters
39
+ )
40
+ const response = http.request(
41
+ 'GET',
42
+ url.toString(),
43
+ undefined,
44
+ mergedRequestParameters
45
+ )
46
+ let data
47
+
48
+ try {
49
+ data = response.json()
50
+ } catch {
51
+ data = response.body
52
+ }
53
+ return {
54
+ response,
55
+ data,
56
+ }
57
+ }
58
+
59
+ /**
60
+ * Merges the provided request parameters with default parameters for the client.
61
+ *
62
+ * @param {Params} requestParameters - The parameters provided specifically for the request
63
+ * @param {Params} commonRequestParameters - Common parameters for all requests
64
+ * @returns {Params} - The merged parameters
65
+ */
66
+ private _mergeRequestParameters(
67
+ requestParameters?: Params,
68
+ commonRequestParameters?: Params
69
+ ): Params {
70
+ return {
71
+ ...commonRequestParameters, // Default to common parameters
72
+ ...requestParameters, // Override with request-specific parameters
73
+ headers: {
74
+ ...(commonRequestParameters?.headers || {}), // Ensure headers are defined
75
+ ...(requestParameters?.headers || {}),
76
+ },
77
+ cookies: {
78
+ ...(commonRequestParameters?.cookies || {}), // Ensure cookies are defined
79
+ ...(requestParameters?.cookies || {}),
80
+ },
81
+ tags: {
82
+ ...(commonRequestParameters?.tags || {}), // Ensure tags are defined
83
+ ...(requestParameters?.tags || {}),
84
+ },
85
+ }
86
+ }
87
+ }
@@ -0,0 +1,11 @@
1
+ import { SimpleAPIClient } from './simpleAPI.ts'
2
+
3
+ const baseUrl = '<BASE_URL>'
4
+ const client = new SimpleAPIClient({ baseUrl })
5
+
6
+ export default function () {
7
+ /**
8
+ * Retrieve example data
9
+ */
10
+ const getExampleResponseData = client.getExample()
11
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Automatically generated by @grafana/openapi-to-k6: 0.2.0
3
+ * Do not edit manually.
4
+ * Simple API
5
+ * OpenAPI spec version: 1.0.0
6
+ */
7
+ export type GetExample200 = {
8
+ message?: string
9
+ }
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Automatically generated by @grafana/openapi-to-k6: 0.2.0
3
+ * Do not edit manually.
4
+ * Simple 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 { GetExample200 } from './simpleAPI.schemas'
11
+
12
+ /**
13
+ * This is the base client to use for interacting with the API.
14
+ */
15
+ export class SimpleAPIClient {
16
+ private cleanBaseUrl: string
17
+ private commonRequestParameters: Params
18
+
19
+ constructor(clientOptions: {
20
+ baseUrl: string
21
+ commonRequestParameters?: Params
22
+ }) {
23
+ this.cleanBaseUrl = clientOptions.baseUrl.replace(/\/+$/, '')
24
+ }
25
+
26
+ /**
27
+ * @summary Retrieve example data
28
+ */
29
+ getExample(requestParameters?: Params): {
30
+ response: Response
31
+ data: GetExample200
32
+ } {
33
+ const url = new URL(this.cleanBaseUrl + `/example`)
34
+ const mergedRequestParameters = this._mergeRequestParameters(
35
+ requestParameters || {},
36
+ this.commonRequestParameters
37
+ )
38
+ const response = http.request(
39
+ 'GET',
40
+ url.toString(),
41
+ undefined,
42
+ mergedRequestParameters
43
+ )
44
+ let data
45
+
46
+ try {
47
+ data = response.json()
48
+ } catch {
49
+ data = response.body
50
+ }
51
+ return {
52
+ response,
53
+ data,
54
+ }
55
+ }
56
+
57
+ /**
58
+ * Merges the provided request parameters with default parameters for the client.
59
+ *
60
+ * @param {Params} requestParameters - The parameters provided specifically for the request
61
+ * @param {Params} commonRequestParameters - Common parameters for all requests
62
+ * @returns {Params} - The merged parameters
63
+ */
64
+ private _mergeRequestParameters(
65
+ requestParameters?: Params,
66
+ commonRequestParameters?: Params
67
+ ): Params {
68
+ return {
69
+ ...commonRequestParameters, // Default to common parameters
70
+ ...requestParameters, // Override with request-specific parameters
71
+ headers: {
72
+ ...(commonRequestParameters?.headers || {}), // Ensure headers are defined
73
+ ...(requestParameters?.headers || {}),
74
+ },
75
+ cookies: {
76
+ ...(commonRequestParameters?.cookies || {}), // Ensure cookies are defined
77
+ ...(requestParameters?.cookies || {}),
78
+ },
79
+ tags: {
80
+ ...(commonRequestParameters?.tags || {}), // Ensure tags are defined
81
+ ...(requestParameters?.tags || {}),
82
+ },
83
+ }
84
+ }
85
+ }
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Automatically generated by @grafana/openapi-to-k6: 0.2.0
3
+ * Do not edit manually.
4
+ * Simple 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 { GetExample200 } from './simpleAPI.schemas'
11
+
12
+ /**
13
+ * This is the base client to use for interacting with the API.
14
+ */
15
+ export class DefaultClient {
16
+ private cleanBaseUrl: string
17
+ private commonRequestParameters: Params
18
+
19
+ constructor(clientOptions: {
20
+ baseUrl: string
21
+ commonRequestParameters?: Params
22
+ }) {
23
+ this.cleanBaseUrl = clientOptions.baseUrl.replace(/\/+$/, '')
24
+ }
25
+
26
+ /**
27
+ * @summary Retrieve example data
28
+ */
29
+ getExample(requestParameters?: Params): {
30
+ response: Response
31
+ data: GetExample200
32
+ } {
33
+ const url = new URL(this.cleanBaseUrl + `/example`)
34
+ const mergedRequestParameters = this._mergeRequestParameters(
35
+ requestParameters || {},
36
+ this.commonRequestParameters
37
+ )
38
+ const response = http.request(
39
+ 'GET',
40
+ url.toString(),
41
+ undefined,
42
+ mergedRequestParameters
43
+ )
44
+ let data
45
+
46
+ try {
47
+ data = response.json()
48
+ } catch {
49
+ data = response.body
50
+ }
51
+ return {
52
+ response,
53
+ data,
54
+ }
55
+ }
56
+
57
+ /**
58
+ * Merges the provided request parameters with default parameters for the client.
59
+ *
60
+ * @param {Params} requestParameters - The parameters provided specifically for the request
61
+ * @param {Params} commonRequestParameters - Common parameters for all requests
62
+ * @returns {Params} - The merged parameters
63
+ */
64
+ private _mergeRequestParameters(
65
+ requestParameters?: Params,
66
+ commonRequestParameters?: Params
67
+ ): Params {
68
+ return {
69
+ ...commonRequestParameters, // Default to common parameters
70
+ ...requestParameters, // Override with request-specific parameters
71
+ headers: {
72
+ ...(commonRequestParameters?.headers || {}), // Ensure headers are defined
73
+ ...(requestParameters?.headers || {}),
74
+ },
75
+ cookies: {
76
+ ...(commonRequestParameters?.cookies || {}), // Ensure cookies are defined
77
+ ...(requestParameters?.cookies || {}),
78
+ },
79
+ tags: {
80
+ ...(commonRequestParameters?.tags || {}), // Ensure tags are defined
81
+ ...(requestParameters?.tags || {}),
82
+ },
83
+ }
84
+ }
85
+ }
@@ -0,0 +1,11 @@
1
+ import { SimpleAPIClient } from './simpleAPI.ts'
2
+
3
+ const baseUrl = '<BASE_URL>'
4
+ const client = new SimpleAPIClient({ baseUrl })
5
+
6
+ export default function () {
7
+ /**
8
+ * Retrieve example data
9
+ */
10
+ const getExampleResponseData = client.getExample()
11
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Automatically generated by @grafana/openapi-to-k6: 0.2.0
3
+ * Do not edit manually.
4
+ * Simple API
5
+ * OpenAPI spec version: 1.0.0
6
+ */
7
+ export type GetExample200 = {
8
+ message?: string
9
+ }
@@ -0,0 +1,115 @@
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
+ import { FormData } from 'https://jslib.k6.io/formdata/0.0.2/index.js'
8
+ import { URL } from 'https://jslib.k6.io/url/1.0.0/index.js'
9
+ import http from 'k6/http'
10
+ import type { Params, Response } from 'k6/http'
11
+ export type PostUpload400 = {
12
+ error?: string
13
+ success?: boolean
14
+ }
15
+
16
+ export type PostUpload200 = {
17
+ message?: string
18
+ success?: boolean
19
+ }
20
+
21
+ export type PostUploadBody = {
22
+ /** Description of the file */
23
+ description?: string
24
+ /** File to upload */
25
+ file: Blob
26
+ /** User ID associated with the upload */
27
+ userId: string
28
+ }
29
+
30
+ /**
31
+ * This is the base client to use for interacting with the API.
32
+ */
33
+ export class FormDataAPIClient {
34
+ private cleanBaseUrl: string
35
+ private commonRequestParameters: Params
36
+
37
+ constructor(clientOptions: {
38
+ baseUrl: string
39
+ commonRequestParameters?: Params
40
+ }) {
41
+ this.cleanBaseUrl = clientOptions.baseUrl.replace(/\/+$/, '')
42
+ }
43
+
44
+ /**
45
+ * This endpoint accepts form data and file uploads.
46
+ * @summary Upload files and data
47
+ */
48
+ postUpload(
49
+ postUploadBody: PostUploadBody,
50
+ requestParameters?: Params
51
+ ): {
52
+ response: Response
53
+ data: PostUpload200
54
+ } {
55
+ const formData = new FormData()
56
+ formData.append('file', postUploadBody.file)
57
+ if (postUploadBody.description !== undefined) {
58
+ formData.append('description', postUploadBody.description)
59
+ }
60
+ formData.append('userId', postUploadBody.userId)
61
+
62
+ const url = new URL(this.cleanBaseUrl + `/upload`)
63
+ const mergedRequestParameters = this._mergeRequestParameters(
64
+ requestParameters || {},
65
+ this.commonRequestParameters
66
+ )
67
+ const response = http.request('POST', url.toString(), formData.body(), {
68
+ ...mergedRequestParameters,
69
+ headers: {
70
+ 'Content-Type': 'multipart/form-data; boundary=' + formData.boundary,
71
+ ...mergedRequestParameters?.headers,
72
+ },
73
+ })
74
+ let data
75
+
76
+ try {
77
+ data = response.json()
78
+ } catch {
79
+ data = response.body
80
+ }
81
+ return {
82
+ response,
83
+ data,
84
+ }
85
+ }
86
+
87
+ /**
88
+ * Merges the provided request parameters with default parameters for the client.
89
+ *
90
+ * @param {Params} requestParameters - The parameters provided specifically for the request
91
+ * @param {Params} commonRequestParameters - Common parameters for all requests
92
+ * @returns {Params} - The merged parameters
93
+ */
94
+ private _mergeRequestParameters(
95
+ requestParameters?: Params,
96
+ commonRequestParameters?: Params
97
+ ): Params {
98
+ return {
99
+ ...commonRequestParameters, // Default to common parameters
100
+ ...requestParameters, // Override with request-specific parameters
101
+ headers: {
102
+ ...(commonRequestParameters?.headers || {}), // Ensure headers are defined
103
+ ...(requestParameters?.headers || {}),
104
+ },
105
+ cookies: {
106
+ ...(commonRequestParameters?.cookies || {}), // Ensure cookies are defined
107
+ ...(requestParameters?.cookies || {}),
108
+ },
109
+ tags: {
110
+ ...(commonRequestParameters?.tags || {}), // Ensure tags are defined
111
+ ...(requestParameters?.tags || {}),
112
+ },
113
+ }
114
+ }
115
+ }
@@ -1,7 +1,7 @@
1
- import { createFormDataAPI } from './formDataAPI.ts'
1
+ import { FormDataAPIClient } from './formDataAPI.ts'
2
2
 
3
3
  const baseUrl = '<BASE_URL>'
4
- const client = createFormDataAPI({ baseUrl })
4
+ const client = new FormDataAPIClient({ 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 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,98 @@
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
+ import { FormData } from 'https://jslib.k6.io/formdata/0.0.2/index.js'
8
+ import { URL } from 'https://jslib.k6.io/url/1.0.0/index.js'
9
+ import http from 'k6/http'
10
+ import type { Params, Response } from 'k6/http'
11
+ import type { PostUpload200, PostUploadBody } from './formDataAPI.schemas'
12
+
13
+ /**
14
+ * This is the base client to use for interacting with the API.
15
+ */
16
+ export class FormDataAPIClient {
17
+ private cleanBaseUrl: string
18
+ private commonRequestParameters: Params
19
+
20
+ constructor(clientOptions: {
21
+ baseUrl: string
22
+ commonRequestParameters?: Params
23
+ }) {
24
+ this.cleanBaseUrl = clientOptions.baseUrl.replace(/\/+$/, '')
25
+ }
26
+
27
+ /**
28
+ * This endpoint accepts form data and file uploads.
29
+ * @summary Upload files and data
30
+ */
31
+ postUpload(
32
+ postUploadBody: PostUploadBody,
33
+ requestParameters?: Params
34
+ ): {
35
+ response: Response
36
+ data: PostUpload200
37
+ } {
38
+ const formData = new FormData()
39
+ formData.append('file', postUploadBody.file)
40
+ if (postUploadBody.description !== undefined) {
41
+ formData.append('description', postUploadBody.description)
42
+ }
43
+ formData.append('userId', postUploadBody.userId)
44
+
45
+ const url = new URL(this.cleanBaseUrl + `/upload`)
46
+ const mergedRequestParameters = this._mergeRequestParameters(
47
+ requestParameters || {},
48
+ this.commonRequestParameters
49
+ )
50
+ const response = http.request('POST', url.toString(), formData.body(), {
51
+ ...mergedRequestParameters,
52
+ headers: {
53
+ 'Content-Type': 'multipart/form-data; boundary=' + formData.boundary,
54
+ ...mergedRequestParameters?.headers,
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 { 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,98 @@
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
+ import { FormData } from 'https://jslib.k6.io/formdata/0.0.2/index.js'
8
+ import { URL } from 'https://jslib.k6.io/url/1.0.0/index.js'
9
+ import http from 'k6/http'
10
+ import type { Params, Response } from 'k6/http'
11
+ import type { PostUpload200, PostUploadBody } from './formDataAPI.schemas'
12
+
13
+ /**
14
+ * This is the base client to use for interacting with the API.
15
+ */
16
+ export class DefaultClient {
17
+ private cleanBaseUrl: string
18
+ private commonRequestParameters: Params
19
+
20
+ constructor(clientOptions: {
21
+ baseUrl: string
22
+ commonRequestParameters?: Params
23
+ }) {
24
+ this.cleanBaseUrl = clientOptions.baseUrl.replace(/\/+$/, '')
25
+ }
26
+
27
+ /**
28
+ * This endpoint accepts form data and file uploads.
29
+ * @summary Upload files and data
30
+ */
31
+ postUpload(
32
+ postUploadBody: PostUploadBody,
33
+ requestParameters?: Params
34
+ ): {
35
+ response: Response
36
+ data: PostUpload200
37
+ } {
38
+ const formData = new FormData()
39
+ formData.append('file', postUploadBody.file)
40
+ if (postUploadBody.description !== undefined) {
41
+ formData.append('description', postUploadBody.description)
42
+ }
43
+ formData.append('userId', postUploadBody.userId)
44
+
45
+ const url = new URL(this.cleanBaseUrl + `/upload`)
46
+ const mergedRequestParameters = this._mergeRequestParameters(
47
+ requestParameters || {},
48
+ this.commonRequestParameters
49
+ )
50
+ const response = http.request('POST', url.toString(), formData.body(), {
51
+ ...mergedRequestParameters,
52
+ headers: {
53
+ 'Content-Type': 'multipart/form-data; boundary=' + formData.boundary,
54
+ ...mergedRequestParameters?.headers,
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
+ }