@typespec/http-specs 0.37.2
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.
- package/CHANGELOG.md +1 -0
- package/LICENSE +21 -0
- package/README.md +36 -0
- package/assets/image.jpg +0 -0
- package/assets/image.png +0 -0
- package/dist/specs/authentication/api-key/mockapi.d.ts +3 -0
- package/dist/specs/authentication/api-key/mockapi.d.ts.map +1 -0
- package/dist/specs/authentication/api-key/mockapi.js +45 -0
- package/dist/specs/authentication/api-key/mockapi.js.map +1 -0
- package/dist/specs/authentication/commonapi.d.ts +9 -0
- package/dist/specs/authentication/commonapi.d.ts.map +1 -0
- package/dist/specs/authentication/commonapi.js +19 -0
- package/dist/specs/authentication/commonapi.js.map +1 -0
- package/dist/specs/authentication/http/custom/mockapi.d.ts +3 -0
- package/dist/specs/authentication/http/custom/mockapi.d.ts.map +1 -0
- package/dist/specs/authentication/http/custom/mockapi.js +45 -0
- package/dist/specs/authentication/http/custom/mockapi.js.map +1 -0
- package/dist/specs/authentication/oauth2/mockapi.d.ts +3 -0
- package/dist/specs/authentication/oauth2/mockapi.d.ts.map +1 -0
- package/dist/specs/authentication/oauth2/mockapi.js +42 -0
- package/dist/specs/authentication/oauth2/mockapi.js.map +1 -0
- package/dist/specs/authentication/union/mockapi.d.ts +3 -0
- package/dist/specs/authentication/union/mockapi.d.ts.map +1 -0
- package/dist/specs/authentication/union/mockapi.js +37 -0
- package/dist/specs/authentication/union/mockapi.js.map +1 -0
- package/dist/specs/encode/bytes/mockapi.d.ts +3 -0
- package/dist/specs/encode/bytes/mockapi.d.ts.map +1 -0
- package/dist/specs/encode/bytes/mockapi.js +179 -0
- package/dist/specs/encode/bytes/mockapi.js.map +1 -0
- package/dist/specs/encode/datetime/mockapi.d.ts +3 -0
- package/dist/specs/encode/datetime/mockapi.d.ts.map +1 -0
- package/dist/specs/encode/datetime/mockapi.js +160 -0
- package/dist/specs/encode/datetime/mockapi.js.map +1 -0
- package/dist/specs/encode/duration/mockapi.d.ts +3 -0
- package/dist/specs/encode/duration/mockapi.d.ts.map +1 -0
- package/dist/specs/encode/duration/mockapi.js +116 -0
- package/dist/specs/encode/duration/mockapi.js.map +1 -0
- package/dist/specs/encode/numeric/mockapi.d.ts +3 -0
- package/dist/specs/encode/numeric/mockapi.d.ts.map +1 -0
- package/dist/specs/encode/numeric/mockapi.js +29 -0
- package/dist/specs/encode/numeric/mockapi.js.map +1 -0
- package/dist/specs/helper.d.ts +3 -0
- package/dist/specs/helper.d.ts.map +1 -0
- package/dist/specs/helper.js +7 -0
- package/dist/specs/helper.js.map +1 -0
- package/dist/specs/parameters/basic/mockapi.d.ts +3 -0
- package/dist/specs/parameters/basic/mockapi.d.ts.map +1 -0
- package/dist/specs/parameters/basic/mockapi.js +24 -0
- package/dist/specs/parameters/basic/mockapi.js.map +1 -0
- package/dist/specs/parameters/body-optionality/mockapi.d.ts +3 -0
- package/dist/specs/parameters/body-optionality/mockapi.d.ts.map +1 -0
- package/dist/specs/parameters/body-optionality/mockapi.js +62 -0
- package/dist/specs/parameters/body-optionality/mockapi.js.map +1 -0
- package/dist/specs/parameters/collection-format/mockapi.d.ts +3 -0
- package/dist/specs/parameters/collection-format/mockapi.d.ts.map +1 -0
- package/dist/specs/parameters/collection-format/mockapi.js +106 -0
- package/dist/specs/parameters/collection-format/mockapi.js.map +1 -0
- package/dist/specs/parameters/spread/mockapi.d.ts +3 -0
- package/dist/specs/parameters/spread/mockapi.d.ts.map +1 -0
- package/dist/specs/parameters/spread/mockapi.js +206 -0
- package/dist/specs/parameters/spread/mockapi.js.map +1 -0
- package/dist/specs/payload/json-merge-patch/mockapi.d.ts +40 -0
- package/dist/specs/payload/json-merge-patch/mockapi.d.ts.map +1 -0
- package/dist/specs/payload/json-merge-patch/mockapi.js +141 -0
- package/dist/specs/payload/json-merge-patch/mockapi.js.map +1 -0
- package/dist/specs/payload/media-type/mockapi.d.ts +3 -0
- package/dist/specs/payload/media-type/mockapi.d.ts.map +1 -0
- package/dist/specs/payload/media-type/mockapi.js +84 -0
- package/dist/specs/payload/media-type/mockapi.js.map +1 -0
- package/dist/specs/payload/multipart/mockapi.d.ts +3 -0
- package/dist/specs/payload/multipart/mockapi.d.ts.map +1 -0
- package/dist/specs/payload/multipart/mockapi.js +153 -0
- package/dist/specs/payload/multipart/mockapi.js.map +1 -0
- package/dist/specs/payload/xml/mockapi.d.ts +15 -0
- package/dist/specs/payload/xml/mockapi.d.ts.map +1 -0
- package/dist/specs/payload/xml/mockapi.js +189 -0
- package/dist/specs/payload/xml/mockapi.js.map +1 -0
- package/dist/specs/routes/mockapi.d.ts +3 -0
- package/dist/specs/routes/mockapi.d.ts.map +1 -0
- package/dist/specs/routes/mockapi.js +63 -0
- package/dist/specs/routes/mockapi.js.map +1 -0
- package/dist/specs/serialization/encoded-name/json/mockapi.d.ts +3 -0
- package/dist/specs/serialization/encoded-name/json/mockapi.d.ts.map +1 -0
- package/dist/specs/serialization/encoded-name/json/mockapi.js +32 -0
- package/dist/specs/serialization/encoded-name/json/mockapi.js.map +1 -0
- package/dist/specs/server/endpoint/not-defined/mockapi.d.ts +3 -0
- package/dist/specs/server/endpoint/not-defined/mockapi.d.ts.map +1 -0
- package/dist/specs/server/endpoint/not-defined/mockapi.js +15 -0
- package/dist/specs/server/endpoint/not-defined/mockapi.js.map +1 -0
- package/dist/specs/server/path/multiple/mockapi.d.ts +3 -0
- package/dist/specs/server/path/multiple/mockapi.d.ts.map +1 -0
- package/dist/specs/server/path/multiple/mockapi.js +27 -0
- package/dist/specs/server/path/multiple/mockapi.js.map +1 -0
- package/dist/specs/server/path/single/mockapi.d.ts +3 -0
- package/dist/specs/server/path/single/mockapi.d.ts.map +1 -0
- package/dist/specs/server/path/single/mockapi.js +15 -0
- package/dist/specs/server/path/single/mockapi.js.map +1 -0
- package/dist/specs/server/versions/not-versioned/mockapi.d.ts +3 -0
- package/dist/specs/server/versions/not-versioned/mockapi.d.ts.map +1 -0
- package/dist/specs/server/versions/not-versioned/mockapi.js +46 -0
- package/dist/specs/server/versions/not-versioned/mockapi.js.map +1 -0
- package/dist/specs/server/versions/versioned/mockapi.d.ts +3 -0
- package/dist/specs/server/versions/versioned/mockapi.d.ts.map +1 -0
- package/dist/specs/server/versions/versioned/mockapi.js +47 -0
- package/dist/specs/server/versions/versioned/mockapi.js.map +1 -0
- package/dist/specs/special-headers/conditional-request/mockapi.d.ts +3 -0
- package/dist/specs/special-headers/conditional-request/mockapi.d.ts.map +1 -0
- package/dist/specs/special-headers/conditional-request/mockapi.js +79 -0
- package/dist/specs/special-headers/conditional-request/mockapi.js.map +1 -0
- package/dist/specs/special-headers/repeatability/mockapi.d.ts +3 -0
- package/dist/specs/special-headers/repeatability/mockapi.d.ts.map +1 -0
- package/dist/specs/special-headers/repeatability/mockapi.js +36 -0
- package/dist/specs/special-headers/repeatability/mockapi.js.map +1 -0
- package/dist/specs/special-words/dec.d.ts +22 -0
- package/dist/specs/special-words/dec.d.ts.map +1 -0
- package/dist/specs/special-words/dec.js +37 -0
- package/dist/specs/special-words/dec.js.map +1 -0
- package/dist/specs/special-words/mockapi.d.ts +3 -0
- package/dist/specs/special-words/mockapi.d.ts.map +1 -0
- package/dist/specs/special-words/mockapi.js +246 -0
- package/dist/specs/special-words/mockapi.js.map +1 -0
- package/dist/specs/type/array/mockapi.d.ts +3 -0
- package/dist/specs/type/array/mockapi.d.ts.map +1 -0
- package/dist/specs/type/array/mockapi.js +104 -0
- package/dist/specs/type/array/mockapi.js.map +1 -0
- package/dist/specs/type/dictionary/mockapi.d.ts +3 -0
- package/dist/specs/type/dictionary/mockapi.d.ts.map +1 -0
- package/dist/specs/type/dictionary/mockapi.js +103 -0
- package/dist/specs/type/dictionary/mockapi.js.map +1 -0
- package/dist/specs/type/enum/extensible/mockapi.d.ts +3 -0
- package/dist/specs/type/enum/extensible/mockapi.d.ts.map +1 -0
- package/dist/specs/type/enum/extensible/mockapi.js +46 -0
- package/dist/specs/type/enum/extensible/mockapi.js.map +1 -0
- package/dist/specs/type/enum/fixed/mockapi.d.ts +3 -0
- package/dist/specs/type/enum/fixed/mockapi.d.ts.map +1 -0
- package/dist/specs/type/enum/fixed/mockapi.js +53 -0
- package/dist/specs/type/enum/fixed/mockapi.js.map +1 -0
- package/dist/specs/type/model/empty/mockapi.d.ts +3 -0
- package/dist/specs/type/model/empty/mockapi.d.ts.map +1 -0
- package/dist/specs/type/model/empty/mockapi.js +48 -0
- package/dist/specs/type/model/empty/mockapi.js.map +1 -0
- package/dist/specs/type/model/inheritance/enum-discriminator/mockapi.d.ts +3 -0
- package/dist/specs/type/model/inheritance/enum-discriminator/mockapi.d.ts.map +1 -0
- package/dist/specs/type/model/inheritance/enum-discriminator/mockapi.js +79 -0
- package/dist/specs/type/model/inheritance/enum-discriminator/mockapi.js.map +1 -0
- package/dist/specs/type/model/inheritance/nested-discriminator/mockapi.d.ts +3 -0
- package/dist/specs/type/model/inheritance/nested-discriminator/mockapi.d.ts.map +1 -0
- package/dist/specs/type/model/inheritance/nested-discriminator/mockapi.js +147 -0
- package/dist/specs/type/model/inheritance/nested-discriminator/mockapi.js.map +1 -0
- package/dist/specs/type/model/inheritance/not-discriminated/mockapi.d.ts +3 -0
- package/dist/specs/type/model/inheritance/not-discriminated/mockapi.d.ts.map +1 -0
- package/dist/specs/type/model/inheritance/not-discriminated/mockapi.js +47 -0
- package/dist/specs/type/model/inheritance/not-discriminated/mockapi.js.map +1 -0
- package/dist/specs/type/model/inheritance/recursive/mockapi.d.ts +3 -0
- package/dist/specs/type/model/inheritance/recursive/mockapi.d.ts.map +1 -0
- package/dist/specs/type/model/inheritance/recursive/mockapi.js +47 -0
- package/dist/specs/type/model/inheritance/recursive/mockapi.js.map +1 -0
- package/dist/specs/type/model/inheritance/single-discriminator/mockapi.d.ts +3 -0
- package/dist/specs/type/model/inheritance/single-discriminator/mockapi.d.ts.map +1 -0
- package/dist/specs/type/model/inheritance/single-discriminator/mockapi.js +122 -0
- package/dist/specs/type/model/inheritance/single-discriminator/mockapi.js.map +1 -0
- package/dist/specs/type/model/templated/mockapi.d.ts +3 -0
- package/dist/specs/type/model/templated/mockapi.d.ts.map +1 -0
- package/dist/specs/type/model/templated/mockapi.js +99 -0
- package/dist/specs/type/model/templated/mockapi.js.map +1 -0
- package/dist/specs/type/model/usage/mockapi.d.ts +3 -0
- package/dist/specs/type/model/usage/mockapi.d.ts.map +1 -0
- package/dist/specs/type/model/usage/mockapi.js +52 -0
- package/dist/specs/type/model/usage/mockapi.js.map +1 -0
- package/dist/specs/type/model/visibility/mockapi.d.ts +3 -0
- package/dist/specs/type/model/visibility/mockapi.d.ts.map +1 -0
- package/dist/specs/type/model/visibility/mockapi.js +138 -0
- package/dist/specs/type/model/visibility/mockapi.js.map +1 -0
- package/dist/specs/type/property/additional-properties/mockapi.d.ts +3 -0
- package/dist/specs/type/property/additional-properties/mockapi.d.ts.map +1 -0
- package/dist/specs/type/property/additional-properties/mockapi.js +346 -0
- package/dist/specs/type/property/additional-properties/mockapi.js.map +1 -0
- package/dist/specs/type/property/nullable/mockapi.d.ts +3 -0
- package/dist/specs/type/property/nullable/mockapi.d.ts.map +1 -0
- package/dist/specs/type/property/nullable/mockapi.js +147 -0
- package/dist/specs/type/property/nullable/mockapi.js.map +1 -0
- package/dist/specs/type/property/optionality/mockapi.d.ts +3 -0
- package/dist/specs/type/property/optionality/mockapi.d.ts.map +1 -0
- package/dist/specs/type/property/optionality/mockapi.js +197 -0
- package/dist/specs/type/property/optionality/mockapi.js.map +1 -0
- package/dist/specs/type/property/value-types/mockapi.d.ts +3 -0
- package/dist/specs/type/property/value-types/mockapi.d.ts.map +1 -0
- package/dist/specs/type/property/value-types/mockapi.js +213 -0
- package/dist/specs/type/property/value-types/mockapi.js.map +1 -0
- package/dist/specs/type/scalar/mockapi.d.ts +3 -0
- package/dist/specs/type/scalar/mockapi.d.ts.map +1 -0
- package/dist/specs/type/scalar/mockapi.js +274 -0
- package/dist/specs/type/scalar/mockapi.js.map +1 -0
- package/dist/specs/type/union/mockapi.d.ts +3 -0
- package/dist/specs/type/union/mockapi.d.ts.map +1 -0
- package/dist/specs/type/union/mockapi.js +113 -0
- package/dist/specs/type/union/mockapi.js.map +1 -0
- package/dist/specs/versioning/added/mockapi.d.ts +3 -0
- package/dist/specs/versioning/added/mockapi.d.ts.map +1 -0
- package/dist/specs/versioning/added/mockapi.js +76 -0
- package/dist/specs/versioning/added/mockapi.js.map +1 -0
- package/dist/specs/versioning/madeOptional/mockapi.d.ts +3 -0
- package/dist/specs/versioning/madeOptional/mockapi.d.ts.map +1 -0
- package/dist/specs/versioning/madeOptional/mockapi.js +24 -0
- package/dist/specs/versioning/madeOptional/mockapi.js.map +1 -0
- package/dist/specs/versioning/removed/mockapi.d.ts +3 -0
- package/dist/specs/versioning/removed/mockapi.d.ts.map +1 -0
- package/dist/specs/versioning/removed/mockapi.js +26 -0
- package/dist/specs/versioning/removed/mockapi.js.map +1 -0
- package/dist/specs/versioning/renamedFrom/mockapi.d.ts +3 -0
- package/dist/specs/versioning/renamedFrom/mockapi.d.ts.map +1 -0
- package/dist/specs/versioning/renamedFrom/mockapi.js +53 -0
- package/dist/specs/versioning/renamedFrom/mockapi.js.map +1 -0
- package/dist/specs/versioning/returnTypeChangedFrom/mockapi.d.ts +3 -0
- package/dist/specs/versioning/returnTypeChangedFrom/mockapi.d.ts.map +1 -0
- package/dist/specs/versioning/returnTypeChangedFrom/mockapi.js +25 -0
- package/dist/specs/versioning/returnTypeChangedFrom/mockapi.js.map +1 -0
- package/dist/specs/versioning/typeChangedFrom/mockapi.d.ts +3 -0
- package/dist/specs/versioning/typeChangedFrom/mockapi.d.ts.map +1 -0
- package/dist/specs/versioning/typeChangedFrom/mockapi.js +29 -0
- package/dist/specs/versioning/typeChangedFrom/mockapi.js.map +1 -0
- package/package.json +53 -0
- package/specs/README.md +3 -0
- package/specs/authentication/api-key/main.tsp +39 -0
- package/specs/authentication/api-key/mockapi.ts +47 -0
- package/specs/authentication/commonapi.ts +43 -0
- package/specs/authentication/http/custom/main.tsp +39 -0
- package/specs/authentication/http/custom/mockapi.ts +47 -0
- package/specs/authentication/oauth2/main.tsp +44 -0
- package/specs/authentication/oauth2/mockapi.ts +44 -0
- package/specs/authentication/union/main.tsp +29 -0
- package/specs/authentication/union/mockapi.ts +39 -0
- package/specs/encode/bytes/main.tsp +369 -0
- package/specs/encode/bytes/mockapi.ts +309 -0
- package/specs/encode/datetime/main.tsp +344 -0
- package/specs/encode/datetime/mockapi.ts +274 -0
- package/specs/encode/duration/main.tsp +322 -0
- package/specs/encode/duration/mockapi.ts +204 -0
- package/specs/encode/numeric/main.tsp +71 -0
- package/specs/encode/numeric/mockapi.ts +39 -0
- package/specs/helper.ts +8 -0
- package/specs/parameters/basic/main.tsp +61 -0
- package/specs/parameters/basic/mockapi.ts +29 -0
- package/specs/parameters/body-optionality/main.tsp +63 -0
- package/specs/parameters/body-optionality/mockapi.ts +71 -0
- package/specs/parameters/collection-format/main.tsp +95 -0
- package/specs/parameters/collection-format/mockapi.ts +113 -0
- package/specs/parameters/spread/main.tsp +340 -0
- package/specs/parameters/spread/mockapi.ts +216 -0
- package/specs/payload/json-merge-patch/main.tsp +183 -0
- package/specs/payload/json-merge-patch/mockapi.ts +146 -0
- package/specs/payload/media-type/main.tsp +54 -0
- package/specs/payload/media-type/mockapi.ts +88 -0
- package/specs/payload/multipart/main.tsp +499 -0
- package/specs/payload/multipart/mockapi.ts +226 -0
- package/specs/payload/xml/main.tsp +312 -0
- package/specs/payload/xml/mockapi.ts +244 -0
- package/specs/routes/main.tsp +476 -0
- package/specs/routes/mockapi.ts +158 -0
- package/specs/scratch/.gitignore +3 -0
- package/specs/serialization/encoded-name/json/main.tsp +45 -0
- package/specs/serialization/encoded-name/json/mockapi.ts +34 -0
- package/specs/server/endpoint/not-defined/main.tsp +19 -0
- package/specs/server/endpoint/not-defined/mockapi.ts +16 -0
- package/specs/server/path/multiple/main.tsp +46 -0
- package/specs/server/path/multiple/mockapi.ts +29 -0
- package/specs/server/path/single/main.tsp +23 -0
- package/specs/server/path/single/mockapi.ts +16 -0
- package/specs/server/versions/not-versioned/main.tsp +39 -0
- package/specs/server/versions/not-versioned/mockapi.ts +55 -0
- package/specs/server/versions/versioned/main.tsp +65 -0
- package/specs/server/versions/versioned/mockapi.ts +68 -0
- package/specs/special-headers/conditional-request/main.tsp +89 -0
- package/specs/special-headers/conditional-request/mockapi.ts +83 -0
- package/specs/special-headers/repeatability/main.tsp +39 -0
- package/specs/special-headers/repeatability/mockapi.ts +47 -0
- package/specs/special-words/dec.js +52 -0
- package/specs/special-words/main.tsp +238 -0
- package/specs/special-words/mockapi.ts +407 -0
- package/specs/type/array/main.tsp +132 -0
- package/specs/type/array/mockapi.ts +119 -0
- package/specs/type/dictionary/main.tsp +122 -0
- package/specs/type/dictionary/mockapi.ts +115 -0
- package/specs/type/enum/extensible/main.tsp +64 -0
- package/specs/type/enum/extensible/mockapi.ts +55 -0
- package/specs/type/enum/fixed/main.tsp +60 -0
- package/specs/type/enum/fixed/mockapi.ts +55 -0
- package/specs/type/model/empty/main.tsp +39 -0
- package/specs/type/model/empty/mockapi.ts +51 -0
- package/specs/type/model/inheritance/enum-discriminator/main.tsp +169 -0
- package/specs/type/model/inheritance/enum-discriminator/mockapi.ts +99 -0
- package/specs/type/model/inheritance/nested-discriminator/main.tsp +223 -0
- package/specs/type/model/inheritance/nested-discriminator/mockapi.ts +150 -0
- package/specs/type/model/inheritance/not-discriminated/main.tsp +53 -0
- package/specs/type/model/inheritance/not-discriminated/mockapi.ts +49 -0
- package/specs/type/model/inheritance/recursive/main.tsp +70 -0
- package/specs/type/model/inheritance/recursive/mockapi.ts +48 -0
- package/specs/type/model/inheritance/single-discriminator/main.tsp +171 -0
- package/specs/type/model/inheritance/single-discriminator/mockapi.ts +126 -0
- package/specs/type/model/templated/main.tsp +130 -0
- package/specs/type/model/templated/mockapi.ts +102 -0
- package/specs/type/model/usage/main.tsp +48 -0
- package/specs/type/model/usage/mockapi.ts +56 -0
- package/specs/type/model/visibility/main.tsp +152 -0
- package/specs/type/model/visibility/mockapi.ts +139 -0
- package/specs/type/property/additional-properties/main.tsp +591 -0
- package/specs/type/property/additional-properties/mockapi.ts +477 -0
- package/specs/type/property/nullable/client.tsp +21 -0
- package/specs/type/property/nullable/main.tsp +162 -0
- package/specs/type/property/nullable/mockapi.ts +202 -0
- package/specs/type/property/optionality/main.tsp +258 -0
- package/specs/type/property/optionality/mockapi.ts +308 -0
- package/specs/type/property/value-types/main.tsp +285 -0
- package/specs/type/property/value-types/mockapi.ts +297 -0
- package/specs/type/scalar/main.tsp +164 -0
- package/specs/type/scalar/mockapi.ts +280 -0
- package/specs/type/union/main.tsp +262 -0
- package/specs/type/union/mockapi.ts +137 -0
- package/specs/versioning/added/main.tsp +135 -0
- package/specs/versioning/added/mockapi.ts +79 -0
- package/specs/versioning/madeOptional/main.tsp +64 -0
- package/specs/versioning/madeOptional/mockapi.ts +25 -0
- package/specs/versioning/removed/main.tsp +125 -0
- package/specs/versioning/removed/mockapi.ts +27 -0
- package/specs/versioning/renamedFrom/main.tsp +111 -0
- package/specs/versioning/renamedFrom/mockapi.ts +55 -0
- package/specs/versioning/returnTypeChangedFrom/main.tsp +56 -0
- package/specs/versioning/returnTypeChangedFrom/mockapi.ts +26 -0
- package/specs/versioning/typeChangedFrom/main.tsp +70 -0
- package/specs/versioning/typeChangedFrom/mockapi.ts +30 -0
- package/temp/.tsbuildinfo +1 -0
- package/tsconfig.build.json +9 -0
- package/tsconfig.json +11 -0
- package/tspconfig.yaml +2 -0
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
import {
|
|
2
|
+
mockapi,
|
|
3
|
+
MockApi,
|
|
4
|
+
MockRequest,
|
|
5
|
+
passOnSuccess,
|
|
6
|
+
ScenarioMockApi,
|
|
7
|
+
ValidationError,
|
|
8
|
+
withKeys,
|
|
9
|
+
} from "@typespec/spec-api";
|
|
10
|
+
import { jpgFile, pngFile } from "../../helper.js";
|
|
11
|
+
|
|
12
|
+
export const Scenarios: Record<string, ScenarioMockApi> = {};
|
|
13
|
+
|
|
14
|
+
function checkId(req: MockRequest) {
|
|
15
|
+
req.expect.deepEqual(req.body.id, "123");
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function checkAddress(req: MockRequest) {
|
|
19
|
+
req.expect.deepEqual(JSON.parse(req.body.address), { city: "X" });
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function checkPreviousAddresses(req: MockRequest) {
|
|
23
|
+
req.expect.deepEqual(JSON.parse(req.body.previousAddresses), [{ city: "Y" }, { city: "Z" }]);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function checkFile(
|
|
27
|
+
req: MockRequest,
|
|
28
|
+
file: Record<string, any>,
|
|
29
|
+
expected: Buffer,
|
|
30
|
+
contentType: string = "application/octet-stream",
|
|
31
|
+
fileName: string | undefined = undefined,
|
|
32
|
+
mustCheckContentType: boolean = true,
|
|
33
|
+
) {
|
|
34
|
+
// cadl-ranch depends on multer, which sets the mimetype to "text/plain" if this part has no content-type header
|
|
35
|
+
if (mustCheckContentType || file.mimetype !== "text/plain") {
|
|
36
|
+
req.expect.deepEqual(file.mimetype, contentType);
|
|
37
|
+
}
|
|
38
|
+
req.expect.deepEqual(file.buffer, expected);
|
|
39
|
+
if (fileName) {
|
|
40
|
+
req.expect.deepEqual(file.originalname, fileName);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function checkJpgFile(
|
|
45
|
+
req: MockRequest,
|
|
46
|
+
file: Record<string, any>,
|
|
47
|
+
contentType: string = "application/octet-stream",
|
|
48
|
+
fileName: string | undefined = undefined,
|
|
49
|
+
mustCheckContentType: boolean = true,
|
|
50
|
+
) {
|
|
51
|
+
req.expect.deepEqual(file.fieldname, "profileImage");
|
|
52
|
+
checkFile(req, file, jpgFile, contentType, fileName, mustCheckContentType);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
function checkOptionalContentType(req: MockRequest) {
|
|
56
|
+
if (req.files instanceof Array && req.files?.length > 0) {
|
|
57
|
+
checkJpgFile(req, req.files[0], "application/octet-stream", undefined, false);
|
|
58
|
+
} else {
|
|
59
|
+
throw new ValidationError("No profileImage found", "jpg file is expected", req.body);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function checkPngFile(req: MockRequest, file: Record<string, any>, fieldName: string = "pictures") {
|
|
64
|
+
req.expect.deepEqual(file.fieldname, fieldName);
|
|
65
|
+
checkFile(req, file, pngFile);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
function checkProfileImage(req: MockRequest) {
|
|
69
|
+
if (req.files instanceof Array && req.files?.length > 0) {
|
|
70
|
+
checkJpgFile(req, req.files[0]);
|
|
71
|
+
} else {
|
|
72
|
+
throw new ValidationError("No profileImage found", "jpg file is expected", req.body);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
function checkFileNameAndContentType(req: MockRequest) {
|
|
77
|
+
if (req.files instanceof Array && req.files?.length > 0) {
|
|
78
|
+
checkJpgFile(req, req.files[0], "image/jpg", "hello.jpg");
|
|
79
|
+
} else {
|
|
80
|
+
throw new ValidationError("No profileImage found", "jpg file is expected", req.body);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
function checkAllFiles(req: MockRequest) {
|
|
85
|
+
if (req.files instanceof Array && req.files?.length === 3) {
|
|
86
|
+
for (const file of req.files) {
|
|
87
|
+
if (file.fieldname === "profileImage") {
|
|
88
|
+
checkJpgFile(req, file);
|
|
89
|
+
} else if (file.fieldname === "pictures") {
|
|
90
|
+
checkPngFile(req, file);
|
|
91
|
+
} else {
|
|
92
|
+
throw new ValidationError(
|
|
93
|
+
"unexpected fieldname",
|
|
94
|
+
"profileImage or pictures",
|
|
95
|
+
file.fieldname,
|
|
96
|
+
);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
} else {
|
|
100
|
+
throw new ValidationError(
|
|
101
|
+
"Can't parse files from request",
|
|
102
|
+
"jpg/png files are expected",
|
|
103
|
+
req.body,
|
|
104
|
+
);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
function checkPictures(req: MockRequest) {
|
|
108
|
+
if (req.files instanceof Array && req.files?.length === 2) {
|
|
109
|
+
for (const file of req.files) {
|
|
110
|
+
checkPngFile(req, file);
|
|
111
|
+
}
|
|
112
|
+
} else {
|
|
113
|
+
throw new ValidationError("No pictures found", "png files are expected", req.body);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
function checkFloat(req: MockRequest) {
|
|
117
|
+
req.expect.deepEqual(parseFloat(req.body.temperature), 0.5);
|
|
118
|
+
}
|
|
119
|
+
function createMockApis(route: string, checkList: ((param: MockRequest) => void)[]): MockApi {
|
|
120
|
+
const url = `/multipart/form-data/${route}`;
|
|
121
|
+
return mockapi.post(url, (req) => {
|
|
122
|
+
for (const callback of checkList) {
|
|
123
|
+
callback(req);
|
|
124
|
+
}
|
|
125
|
+
return { status: 204 };
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
Scenarios.Payload_MultiPart_FormData_basic = passOnSuccess(
|
|
130
|
+
createMockApis("mixed-parts", [checkId, checkProfileImage]),
|
|
131
|
+
);
|
|
132
|
+
|
|
133
|
+
Scenarios.Payload_MultiPart_FormData_fileArrayAndBasic = passOnSuccess(
|
|
134
|
+
createMockApis("complex-parts", [checkId, checkAddress, checkAllFiles]),
|
|
135
|
+
);
|
|
136
|
+
|
|
137
|
+
Scenarios.Payload_MultiPart_FormData_jsonPart = passOnSuccess(
|
|
138
|
+
createMockApis("json-part", [checkAddress, checkProfileImage]),
|
|
139
|
+
);
|
|
140
|
+
|
|
141
|
+
Scenarios.Payload_MultiPart_FormData_binaryArrayParts = passOnSuccess(
|
|
142
|
+
createMockApis("binary-array-parts", [checkId, checkPictures]),
|
|
143
|
+
);
|
|
144
|
+
|
|
145
|
+
Scenarios.Payload_MultiPart_FormData_multiBinaryParts = withKeys([
|
|
146
|
+
"profileImage",
|
|
147
|
+
"profileImage,picture",
|
|
148
|
+
]).pass(
|
|
149
|
+
mockapi.post("/multipart/form-data/multi-binary-parts", (req) => {
|
|
150
|
+
if (req.files instanceof Array) {
|
|
151
|
+
switch (req.files.length) {
|
|
152
|
+
case 1:
|
|
153
|
+
checkJpgFile(req, req.files[0]);
|
|
154
|
+
return { pass: "profileImage", status: 204 } as const;
|
|
155
|
+
case 2:
|
|
156
|
+
let profileImage = false;
|
|
157
|
+
let picture = false;
|
|
158
|
+
for (const file of req.files) {
|
|
159
|
+
if (file.fieldname === "profileImage") {
|
|
160
|
+
checkJpgFile(req, file);
|
|
161
|
+
profileImage = true;
|
|
162
|
+
} else if (file.fieldname === "picture") {
|
|
163
|
+
checkPngFile(req, file, "picture");
|
|
164
|
+
picture = true;
|
|
165
|
+
} else {
|
|
166
|
+
throw new ValidationError(
|
|
167
|
+
"unexpected fieldname",
|
|
168
|
+
"profileImage or picture",
|
|
169
|
+
file.fieldname,
|
|
170
|
+
);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
if (!profileImage) {
|
|
174
|
+
throw new ValidationError("No profileImage found", "jpg file is expected", req.body);
|
|
175
|
+
} else if (!picture) {
|
|
176
|
+
throw new ValidationError("No picture found", "png file are expected", req.body);
|
|
177
|
+
}
|
|
178
|
+
return { pass: "profileImage,picture", status: 204 } as const;
|
|
179
|
+
default:
|
|
180
|
+
throw new ValidationError(
|
|
181
|
+
"number of files is incorrect",
|
|
182
|
+
"1 or 2 files are expected",
|
|
183
|
+
req.body,
|
|
184
|
+
);
|
|
185
|
+
}
|
|
186
|
+
} else {
|
|
187
|
+
throw new ValidationError(
|
|
188
|
+
"Can't parse files from request",
|
|
189
|
+
"jpg/png files are expected",
|
|
190
|
+
req.body,
|
|
191
|
+
);
|
|
192
|
+
}
|
|
193
|
+
}),
|
|
194
|
+
);
|
|
195
|
+
|
|
196
|
+
Scenarios.Payload_MultiPart_FormData_checkFileNameAndContentType = passOnSuccess(
|
|
197
|
+
createMockApis("check-filename-and-content-type", [checkId, checkFileNameAndContentType]),
|
|
198
|
+
);
|
|
199
|
+
|
|
200
|
+
Scenarios.Payload_MultiPart_FormData_anonymousModel = passOnSuccess(
|
|
201
|
+
createMockApis("anonymous-model", [checkProfileImage]),
|
|
202
|
+
);
|
|
203
|
+
|
|
204
|
+
Scenarios.Payload_MultiPart_FormData_HttpParts_ContentType_imageJpegContentType = passOnSuccess(
|
|
205
|
+
createMockApis("check-filename-and-specific-content-type-with-httppart", [
|
|
206
|
+
checkFileNameAndContentType,
|
|
207
|
+
]),
|
|
208
|
+
);
|
|
209
|
+
|
|
210
|
+
Scenarios.Payload_MultiPart_FormData_HttpParts_ContentType_requiredContentType = passOnSuccess(
|
|
211
|
+
createMockApis("check-filename-and-required-content-type-with-httppart", [checkProfileImage]),
|
|
212
|
+
);
|
|
213
|
+
Scenarios.Payload_MultiPart_FormData_HttpParts_ContentType_optionalContentType = passOnSuccess(
|
|
214
|
+
createMockApis("file-with-http-part-optional-content-type", [checkOptionalContentType]),
|
|
215
|
+
);
|
|
216
|
+
Scenarios.Payload_MultiPart_FormData_HttpParts_jsonArrayAndFileArray = passOnSuccess(
|
|
217
|
+
createMockApis("complex-parts-with-httppart", [
|
|
218
|
+
checkId,
|
|
219
|
+
checkAddress,
|
|
220
|
+
checkPreviousAddresses,
|
|
221
|
+
checkAllFiles,
|
|
222
|
+
]),
|
|
223
|
+
);
|
|
224
|
+
Scenarios.Payload_MultiPart_FormData_HttpParts_NonString_float = passOnSuccess(
|
|
225
|
+
createMockApis("non-string-float", [checkFloat]),
|
|
226
|
+
);
|
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
import "@typespec/http";
|
|
2
|
+
import "@typespec/xml";
|
|
3
|
+
import "@typespec/spec-lib";
|
|
4
|
+
|
|
5
|
+
using TypeSpec.Http;
|
|
6
|
+
using TypeSpec.Xml;
|
|
7
|
+
using Azure.ClientGenerator.Core;
|
|
8
|
+
|
|
9
|
+
@doc("Sends and receives bodies in XML format.")
|
|
10
|
+
@scenarioService("/payload/xml")
|
|
11
|
+
namespace Payload.Xml;
|
|
12
|
+
|
|
13
|
+
@doc("Contains fields of primitive types.")
|
|
14
|
+
model SimpleModel {
|
|
15
|
+
name: string;
|
|
16
|
+
age: int32;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
@doc("Contains fields of arrays of primitive types.")
|
|
20
|
+
model ModelWithSimpleArrays {
|
|
21
|
+
colors: string[];
|
|
22
|
+
counts: int32[];
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
@doc("Contains an array of models.")
|
|
26
|
+
model ModelWithArrayOfModel {
|
|
27
|
+
items: SimpleModel[];
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
@doc("Contains an optional field.")
|
|
31
|
+
model ModelWithOptionalField {
|
|
32
|
+
item: string;
|
|
33
|
+
value?: int32;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
@doc("Contains fields that are XML attributes.")
|
|
37
|
+
model ModelWithAttributes {
|
|
38
|
+
@attribute id1: int32;
|
|
39
|
+
@attribute id2: string;
|
|
40
|
+
enabled: boolean;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
@doc("Contains fields of wrapped and unwrapped arrays of primitive types.")
|
|
44
|
+
model ModelWithUnwrappedArray {
|
|
45
|
+
@unwrapped colors: string[];
|
|
46
|
+
counts: int32[];
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
@doc("Contains fields of wrapped and unwrapped arrays of primitive types that have different XML representations.")
|
|
50
|
+
model ModelWithRenamedArrays {
|
|
51
|
+
@name("Colors") @unwrapped colors: string[];
|
|
52
|
+
@name("Counts") counts: int32[];
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
@doc("Contains fields of the same type that have different XML representation.")
|
|
56
|
+
@name("ModelWithRenamedFieldsSrc")
|
|
57
|
+
model ModelWithRenamedFields {
|
|
58
|
+
@name("InputData") inputData: SimpleModel;
|
|
59
|
+
@name("OutputData") outputData: SimpleModel;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
@doc("Contains an array of models that's supposed to be sent/received as an empty XML element.")
|
|
63
|
+
model ModelWithEmptyArray {
|
|
64
|
+
items: SimpleModel[];
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
@doc("Contains an attribute and text.")
|
|
68
|
+
model ModelWithText {
|
|
69
|
+
@attribute language: string;
|
|
70
|
+
@unwrapped content: string;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
@doc("Contains a dictionary of key value pairs.")
|
|
74
|
+
model ModelWithDictionary {
|
|
75
|
+
metadata: Record<string>;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
@doc("Uses encodedName instead of Xml.Name which is functionally equivalent.")
|
|
79
|
+
@encodedName("application/xml", "ModelWithEncodedNamesSrc")
|
|
80
|
+
model ModelWithEncodedNames {
|
|
81
|
+
@encodedName("application/xml", "SimpleModelData") modelData: SimpleModel;
|
|
82
|
+
@encodedName("application/xml", "PossibleColors") colors: string[];
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
@doc("Template for XML operations")
|
|
86
|
+
interface XmlOperations<TModel, TDoc extends string> {
|
|
87
|
+
@scenario
|
|
88
|
+
@scenarioDoc(
|
|
89
|
+
"""
|
|
90
|
+
Expected response body:
|
|
91
|
+
```xml
|
|
92
|
+
{doc}
|
|
93
|
+
```
|
|
94
|
+
""",
|
|
95
|
+
{
|
|
96
|
+
doc: TDoc,
|
|
97
|
+
}
|
|
98
|
+
)
|
|
99
|
+
@get
|
|
100
|
+
get(): {
|
|
101
|
+
@header("content-type") contentType: "application/xml";
|
|
102
|
+
@body body: TModel;
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
@scenario
|
|
106
|
+
@scenarioDoc(
|
|
107
|
+
"""
|
|
108
|
+
Expected request body:
|
|
109
|
+
```xml
|
|
110
|
+
{doc}
|
|
111
|
+
```
|
|
112
|
+
""",
|
|
113
|
+
{
|
|
114
|
+
doc: TDoc,
|
|
115
|
+
}
|
|
116
|
+
)
|
|
117
|
+
@put
|
|
118
|
+
put(@header("content-type") contentType: "application/xml", @body input: TModel): void;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
@doc("Operations for the SimpleModel type.")
|
|
122
|
+
@route("/simpleModel")
|
|
123
|
+
interface SimpleModelValue
|
|
124
|
+
extends XmlOperations<
|
|
125
|
+
SimpleModel,
|
|
126
|
+
"""
|
|
127
|
+
<SimpleModel>
|
|
128
|
+
<name>foo</name>
|
|
129
|
+
<age>123</age>
|
|
130
|
+
</SimpleModel>
|
|
131
|
+
"""
|
|
132
|
+
> {}
|
|
133
|
+
|
|
134
|
+
@doc("Operations for the ModelWithSimpleArrays type.")
|
|
135
|
+
@route("/modelWithSimpleArrays")
|
|
136
|
+
interface ModelWithSimpleArraysValue
|
|
137
|
+
extends XmlOperations<
|
|
138
|
+
ModelWithSimpleArrays,
|
|
139
|
+
"""
|
|
140
|
+
<ModelWithSimpleArrays>
|
|
141
|
+
<colors>
|
|
142
|
+
<string>red</string>
|
|
143
|
+
<string>green</string>
|
|
144
|
+
<string>blue</string>
|
|
145
|
+
</colors>
|
|
146
|
+
<counts>
|
|
147
|
+
<int32>1</int32>
|
|
148
|
+
<int32>2</int32>
|
|
149
|
+
</counts>
|
|
150
|
+
</ModelWithSimpleArrays>
|
|
151
|
+
"""
|
|
152
|
+
> {}
|
|
153
|
+
|
|
154
|
+
@doc("Operations for the ModelWithArrayOfModel type.")
|
|
155
|
+
@route("/modelWithArrayOfModel")
|
|
156
|
+
interface ModelWithArrayOfModelValue
|
|
157
|
+
extends XmlOperations<
|
|
158
|
+
ModelWithArrayOfModel,
|
|
159
|
+
"""
|
|
160
|
+
<ModelWithArrayOfModel>
|
|
161
|
+
<items>
|
|
162
|
+
<SimpleModel>
|
|
163
|
+
<name>foo</name>
|
|
164
|
+
<age>123</age>
|
|
165
|
+
</SimpleModel>
|
|
166
|
+
<SimpleModel>
|
|
167
|
+
<name>bar</name>
|
|
168
|
+
<age>456</age>
|
|
169
|
+
</SimpleModel>
|
|
170
|
+
</items>
|
|
171
|
+
</ModelWithArrayOfModel>
|
|
172
|
+
"""
|
|
173
|
+
> {}
|
|
174
|
+
|
|
175
|
+
@doc("Operations for the ModelWithOptionalField type.")
|
|
176
|
+
@route("/modelWithOptionalField")
|
|
177
|
+
interface ModelWithOptionalFieldValue
|
|
178
|
+
extends XmlOperations<
|
|
179
|
+
ModelWithOptionalField,
|
|
180
|
+
"""
|
|
181
|
+
<ModelWithOptionalField>
|
|
182
|
+
<item>widget</item>
|
|
183
|
+
</ModelWithOptionalField>
|
|
184
|
+
"""
|
|
185
|
+
> {}
|
|
186
|
+
|
|
187
|
+
@doc("Operations for the ModelWithAttributes type.")
|
|
188
|
+
@route("/modelWithAttributes")
|
|
189
|
+
interface ModelWithAttributesValue
|
|
190
|
+
extends XmlOperations<
|
|
191
|
+
ModelWithAttributes,
|
|
192
|
+
"""
|
|
193
|
+
<ModelWithAttributes id1="123" id2="foo">
|
|
194
|
+
<enabled>true</enabled>
|
|
195
|
+
</ModelWithAttributes>
|
|
196
|
+
"""
|
|
197
|
+
> {}
|
|
198
|
+
|
|
199
|
+
@doc("Operations for the ModelWithUnwrappedArray type.")
|
|
200
|
+
@route("/modelWithUnwrappedArray")
|
|
201
|
+
interface ModelWithUnwrappedArrayValue
|
|
202
|
+
extends XmlOperations<
|
|
203
|
+
ModelWithUnwrappedArray,
|
|
204
|
+
"""
|
|
205
|
+
<ModelWithUnwrappedArray>
|
|
206
|
+
<colors>red</colors>
|
|
207
|
+
<colors>green</colors>
|
|
208
|
+
<colors>blue</colors>
|
|
209
|
+
<counts>
|
|
210
|
+
<int32>1</int32>
|
|
211
|
+
<int32>2</int32>
|
|
212
|
+
</counts>
|
|
213
|
+
</ModelWithUnwrappedArray>
|
|
214
|
+
"""
|
|
215
|
+
> {}
|
|
216
|
+
|
|
217
|
+
@doc("Operations for the ModelWithRenamedArrays type.")
|
|
218
|
+
@route("/modelWithRenamedArrays")
|
|
219
|
+
interface ModelWithRenamedArraysValue
|
|
220
|
+
extends XmlOperations<
|
|
221
|
+
ModelWithRenamedArrays,
|
|
222
|
+
"""
|
|
223
|
+
<ModelWithRenamedArrays>
|
|
224
|
+
<Colors>red</Colors>
|
|
225
|
+
<Colors>green</Colors>
|
|
226
|
+
<Colors>blue</Colors>
|
|
227
|
+
<Counts>
|
|
228
|
+
<int32>1</int32>
|
|
229
|
+
<int32>2</int32>
|
|
230
|
+
</Counts>
|
|
231
|
+
</ModelWithRenamedArrays>
|
|
232
|
+
"""
|
|
233
|
+
> {}
|
|
234
|
+
|
|
235
|
+
@doc("Operations for the ModelWithRenamedFields type.")
|
|
236
|
+
@route("/modelWithRenamedFields")
|
|
237
|
+
interface ModelWithRenamedFieldsValue
|
|
238
|
+
extends XmlOperations<
|
|
239
|
+
ModelWithRenamedFields,
|
|
240
|
+
"""
|
|
241
|
+
<ModelWithRenamedFieldsSrc>
|
|
242
|
+
<InputData>
|
|
243
|
+
<name>foo</name>
|
|
244
|
+
<age>123</age>
|
|
245
|
+
</InputData>
|
|
246
|
+
<OutputData>
|
|
247
|
+
<name>bar</name>
|
|
248
|
+
<age>456</age>
|
|
249
|
+
</OutputData>
|
|
250
|
+
</ModelWithRenamedFieldsSrc>
|
|
251
|
+
"""
|
|
252
|
+
> {}
|
|
253
|
+
|
|
254
|
+
@doc("Operations for the ModelWithEmptyArray type.")
|
|
255
|
+
@route("/modelWithEmptyArray")
|
|
256
|
+
interface ModelWithEmptyArrayValue
|
|
257
|
+
extends XmlOperations<
|
|
258
|
+
ModelWithEmptyArray,
|
|
259
|
+
"""
|
|
260
|
+
<ModelWithEmptyArray>
|
|
261
|
+
<items />
|
|
262
|
+
</ModelWithEmptyArray>
|
|
263
|
+
"""
|
|
264
|
+
> {}
|
|
265
|
+
|
|
266
|
+
@doc("Operations for the ModelWithText type.")
|
|
267
|
+
@route("/modelWithText")
|
|
268
|
+
interface ModelWithTextValue
|
|
269
|
+
extends XmlOperations<
|
|
270
|
+
ModelWithText,
|
|
271
|
+
"""
|
|
272
|
+
<ModelWithText language="foo">
|
|
273
|
+
This is some text.
|
|
274
|
+
</ModelWithText>
|
|
275
|
+
"""
|
|
276
|
+
> {}
|
|
277
|
+
|
|
278
|
+
@doc("Operations for the ModelWithDictionary type.")
|
|
279
|
+
@route("/modelWithDictionary")
|
|
280
|
+
interface ModelWithDictionaryValue
|
|
281
|
+
extends XmlOperations<
|
|
282
|
+
ModelWithDictionary,
|
|
283
|
+
"""
|
|
284
|
+
<ModelWithDictionary>
|
|
285
|
+
<metadata>
|
|
286
|
+
<Color>blue</Color>
|
|
287
|
+
<Count>123</Count>
|
|
288
|
+
<Enabled>false</Enabled>
|
|
289
|
+
</metadata>
|
|
290
|
+
</ModelWithDictionary>
|
|
291
|
+
"""
|
|
292
|
+
> {}
|
|
293
|
+
|
|
294
|
+
@doc("Operations for the ModelWithEncodedNames type.")
|
|
295
|
+
@route("/modelWithEncodedNames")
|
|
296
|
+
interface ModelWithEncodedNamesValue
|
|
297
|
+
extends XmlOperations<
|
|
298
|
+
ModelWithEncodedNames,
|
|
299
|
+
"""
|
|
300
|
+
<ModelWithEncodedNamesSrc>
|
|
301
|
+
<SimpleModelData>
|
|
302
|
+
<name>foo</name>
|
|
303
|
+
<age>123</age>
|
|
304
|
+
</SimpleModelData>
|
|
305
|
+
<PossibleColors>
|
|
306
|
+
<string>red</string>
|
|
307
|
+
<string>green</string>
|
|
308
|
+
<string>blue</string>
|
|
309
|
+
</PossibleColors>
|
|
310
|
+
</ModelWithEncodedNamesSrc>
|
|
311
|
+
"""
|
|
312
|
+
> {}
|