|
1 | 1 | from command.model.configuration import ( |
2 | | - CMDHttpOperation, CMDHttpRequestJsonBody, CMDArraySchema, CMDInstanceUpdateOperation, CMDRequestJson, |
| 2 | + CMDHttpOperation, CMDHttpRequestJsonBody, CMDArraySchema, CMDInstanceUpdateOperation, CMDRequestJson, CMDHttpRequestBytesBody, CMDRequestBytes, |
3 | 3 | CMDHttpResponseJsonBody, CMDObjectSchema, CMDSchema, CMDStringSchemaBase, CMDIntegerSchemaBase, CMDFloatSchemaBase, |
4 | 4 | CMDBooleanSchemaBase, CMDObjectSchemaBase, CMDArraySchemaBase, CMDClsSchemaBase, CMDJsonInstanceUpdateAction, |
5 | 5 | CMDObjectSchemaDiscriminator, CMDSchemaEnum, CMDJsonInstanceCreateAction, CMDJsonInstanceDeleteAction, CMDBinarySchema, |
@@ -118,6 +118,8 @@ def __init__(self, name, cmd_ctx, operation, client_endpoints): |
118 | 118 | body = self._operation.http.request.body |
119 | 119 | if isinstance(body, CMDHttpRequestJsonBody): |
120 | 120 | self.content = AzHttpRequestContentGenerator(self._cmd_ctx, body) |
| 121 | + elif isinstance(body, CMDHttpRequestBytesBody): |
| 122 | + self.content = AzHttpRequestContentBytesGenerator(self._cmd_ctx, body) |
121 | 123 | else: |
122 | 124 | raise NotImplementedError() |
123 | 125 |
|
@@ -260,6 +262,13 @@ def header_parameters(self): |
260 | 262 | True, |
261 | 263 | {} |
262 | 264 | ]) |
| 265 | + elif isinstance(body, CMDHttpRequestBytesBody): |
| 266 | + parameters.append([ |
| 267 | + "Content-Type", |
| 268 | + "application/octet-stream", |
| 269 | + True, |
| 270 | + {} |
| 271 | + ]) |
263 | 272 | if self.success_responses: |
264 | 273 | for response in self.success_responses: |
265 | 274 | if response._response.body is not None and isinstance(response._response.body, CMDHttpResponseJsonBody): |
@@ -510,6 +519,30 @@ def iter_scopes(self): |
510 | 519 | for scopes in _iter_request_scopes_by_schema_base(self.schema, self.BUILDER_NAME, None, arg_key, self._cmd_ctx): |
511 | 520 | yield scopes |
512 | 521 |
|
| 522 | +class AzHttpRequestContentBytesGenerator: |
| 523 | + VALUE_NAME = "_content_value" |
| 524 | + BUILDER_NAME = "_builder" |
| 525 | + |
| 526 | + def __init__(self, cmd_ctx, body): |
| 527 | + self._cmd_ctx = cmd_ctx |
| 528 | + assert isinstance(body.bytes, CMDRequestBytes) |
| 529 | + self._bodycontent = body.bytes |
| 530 | + self.ref = None |
| 531 | + if self._bodycontent.ref: |
| 532 | + self.ref, is_selector = self._cmd_ctx.get_variant(self._bodycontent.ref) |
| 533 | + assert not is_selector |
| 534 | + self.arg_key = "self.ctx.args" |
| 535 | + if self.ref is None: |
| 536 | + assert isinstance(self._bodycontent.schema, CMDSchema) |
| 537 | + if self._bodycontent.schema.arg: |
| 538 | + self.arg_key, hide = self._cmd_ctx.get_argument(self._bodycontent.schema.arg) |
| 539 | + assert not hide |
| 540 | + self.typ, self.typ_kwargs, self.cls_builder_name = render_schema( |
| 541 | + self._bodycontent.schema, self._cmd_ctx.update_clses, name=self._bodycontent.schema.name) |
| 542 | + |
| 543 | + def iter_scopes(self): |
| 544 | + pass |
| 545 | + |
513 | 546 |
|
514 | 547 | class AzHttpResponseGenerator: |
515 | 548 |
|
@@ -991,7 +1024,7 @@ def render_schema_base(schema, cls_map, schema_kwargs=None): |
991 | 1024 | elif isinstance(schema, CMDIdentityObjectSchemaBase): |
992 | 1025 | schema_type = "AAZIdentityObjectType" |
993 | 1026 | elif isinstance(schema, CMDBinarySchema): |
994 | | - schema_type = "AAZFileBytesType" |
| 1027 | + schema_type = "AAZBytesType" |
995 | 1028 | elif isinstance(schema, CMDObjectSchemaBase): |
996 | 1029 | if schema.props or schema.discriminators: |
997 | 1030 | schema_type = "AAZObjectType" |
|
0 commit comments