capo-workspaces-thin-client 0.1.0__py3-none-any.whl

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 (144) hide show
  1. capo_workspaces_thin_client/__init__.py +74 -0
  2. capo_workspaces_thin_client/_async.py +25 -0
  3. capo_workspaces_thin_client/_auth/_identity.py +16 -0
  4. capo_workspaces_thin_client/_auth/_providers.py +886 -0
  5. capo_workspaces_thin_client/_auth/_signers.py +88 -0
  6. capo_workspaces_thin_client/_auth/_sigv4.py +434 -0
  7. capo_workspaces_thin_client/_auth/_zapros_handler.py +80 -0
  8. capo_workspaces_thin_client/_iter.py +113 -0
  9. capo_workspaces_thin_client/_operations/thin_client/create_environment.py +189 -0
  10. capo_workspaces_thin_client/_operations/thin_client/delete_device.py +172 -0
  11. capo_workspaces_thin_client/_operations/thin_client/delete_environment.py +172 -0
  12. capo_workspaces_thin_client/_operations/thin_client/deregister_device.py +177 -0
  13. capo_workspaces_thin_client/_operations/thin_client/get_device.py +174 -0
  14. capo_workspaces_thin_client/_operations/thin_client/get_environment.py +170 -0
  15. capo_workspaces_thin_client/_operations/thin_client/get_software_set.py +170 -0
  16. capo_workspaces_thin_client/_operations/thin_client/list_devices.py +171 -0
  17. capo_workspaces_thin_client/_operations/thin_client/list_environments.py +167 -0
  18. capo_workspaces_thin_client/_operations/thin_client/list_software_sets.py +167 -0
  19. capo_workspaces_thin_client/_operations/thin_client/list_tags_for_resource.py +170 -0
  20. capo_workspaces_thin_client/_operations/thin_client/tag_resource.py +175 -0
  21. capo_workspaces_thin_client/_operations/thin_client/untag_resource.py +173 -0
  22. capo_workspaces_thin_client/_operations/thin_client/update_device.py +175 -0
  23. capo_workspaces_thin_client/_operations/thin_client/update_environment.py +185 -0
  24. capo_workspaces_thin_client/_operations/thin_client/update_software_set.py +172 -0
  25. capo_workspaces_thin_client/_pagination.py +21 -0
  26. capo_workspaces_thin_client/_protocol/__init__.py +1 -0
  27. capo_workspaces_thin_client/_protocol/errors.py +93 -0
  28. capo_workspaces_thin_client/_protocol/eventstream.py +238 -0
  29. capo_workspaces_thin_client/_protocol/serialize.py +47 -0
  30. capo_workspaces_thin_client/_protocol/xml.py +33 -0
  31. capo_workspaces_thin_client/_rule_engine/__init__.py +0 -0
  32. capo_workspaces_thin_client/_rule_engine/_aws_partition.py +160 -0
  33. capo_workspaces_thin_client/_rule_engine/_endpoint_rule_set.py +137 -0
  34. capo_workspaces_thin_client/_rule_engine/_endpoint_runtime.py +389 -0
  35. capo_workspaces_thin_client/_services/_aws_config.py +160 -0
  36. capo_workspaces_thin_client/_services/_pipeline.py +198 -0
  37. capo_workspaces_thin_client/_services/async_work_spaces_thin_client.py +1224 -0
  38. capo_workspaces_thin_client/_services/work_spaces_thin_client.py +1206 -0
  39. capo_workspaces_thin_client/errors/__init__.py +36 -0
  40. capo_workspaces_thin_client/errors/_base.py +94 -0
  41. capo_workspaces_thin_client/errors/access_denied_exception.py +53 -0
  42. capo_workspaces_thin_client/errors/conflict_exception.py +67 -0
  43. capo_workspaces_thin_client/errors/internal_server_exception.py +58 -0
  44. capo_workspaces_thin_client/errors/resource_not_found_exception.py +69 -0
  45. capo_workspaces_thin_client/errors/service_quota_exceeded_exception.py +87 -0
  46. capo_workspaces_thin_client/errors/throttling_exception.py +72 -0
  47. capo_workspaces_thin_client/errors/validation_exception.py +93 -0
  48. capo_workspaces_thin_client/py.typed +0 -0
  49. capo_workspaces_thin_client/types/_prelude/blob.py +12 -0
  50. capo_workspaces_thin_client/types/_prelude/timestamp.py +17 -0
  51. capo_workspaces_thin_client/types/activation_code.py +5 -0
  52. capo_workspaces_thin_client/types/apply_time_of.py +17 -0
  53. capo_workspaces_thin_client/types/arn.py +5 -0
  54. capo_workspaces_thin_client/types/client_token.py +5 -0
  55. capo_workspaces_thin_client/types/create_environment_request.py +173 -0
  56. capo_workspaces_thin_client/types/create_environment_response.py +42 -0
  57. capo_workspaces_thin_client/types/day_of_week.py +22 -0
  58. capo_workspaces_thin_client/types/day_of_week_list.py +31 -0
  59. capo_workspaces_thin_client/types/delete_device_request.py +29 -0
  60. capo_workspaces_thin_client/types/delete_device_response.py +18 -0
  61. capo_workspaces_thin_client/types/delete_environment_request.py +29 -0
  62. capo_workspaces_thin_client/types/delete_environment_response.py +18 -0
  63. capo_workspaces_thin_client/types/deregister_device_request.py +54 -0
  64. capo_workspaces_thin_client/types/deregister_device_response.py +18 -0
  65. capo_workspaces_thin_client/types/desktop_endpoint.py +5 -0
  66. capo_workspaces_thin_client/types/desktop_type.py +18 -0
  67. capo_workspaces_thin_client/types/device.py +267 -0
  68. capo_workspaces_thin_client/types/device_creation_tag_key.py +5 -0
  69. capo_workspaces_thin_client/types/device_creation_tag_value.py +5 -0
  70. capo_workspaces_thin_client/types/device_creation_tags_map.py +29 -0
  71. capo_workspaces_thin_client/types/device_id.py +5 -0
  72. capo_workspaces_thin_client/types/device_list.py +35 -0
  73. capo_workspaces_thin_client/types/device_name.py +5 -0
  74. capo_workspaces_thin_client/types/device_software_set_compliance_status.py +18 -0
  75. capo_workspaces_thin_client/types/device_status.py +19 -0
  76. capo_workspaces_thin_client/types/device_summary.py +206 -0
  77. capo_workspaces_thin_client/types/environment.py +263 -0
  78. capo_workspaces_thin_client/types/environment_id.py +5 -0
  79. capo_workspaces_thin_client/types/environment_list.py +35 -0
  80. capo_workspaces_thin_client/types/environment_name.py +5 -0
  81. capo_workspaces_thin_client/types/environment_software_set_compliance_status.py +18 -0
  82. capo_workspaces_thin_client/types/environment_summary.py +202 -0
  83. capo_workspaces_thin_client/types/exception_message.py +5 -0
  84. capo_workspaces_thin_client/types/field_name.py +5 -0
  85. capo_workspaces_thin_client/types/get_device_request.py +24 -0
  86. capo_workspaces_thin_client/types/get_device_response.py +36 -0
  87. capo_workspaces_thin_client/types/get_environment_request.py +24 -0
  88. capo_workspaces_thin_client/types/get_environment_response.py +42 -0
  89. capo_workspaces_thin_client/types/get_software_set_request.py +24 -0
  90. capo_workspaces_thin_client/types/get_software_set_response.py +42 -0
  91. capo_workspaces_thin_client/types/hour.py +5 -0
  92. capo_workspaces_thin_client/types/kms_key_arn.py +5 -0
  93. capo_workspaces_thin_client/types/list_devices_request.py +29 -0
  94. capo_workspaces_thin_client/types/list_devices_response.py +45 -0
  95. capo_workspaces_thin_client/types/list_environments_request.py +29 -0
  96. capo_workspaces_thin_client/types/list_environments_response.py +51 -0
  97. capo_workspaces_thin_client/types/list_software_sets_request.py +29 -0
  98. capo_workspaces_thin_client/types/list_software_sets_response.py +51 -0
  99. capo_workspaces_thin_client/types/list_tags_for_resource_request.py +19 -0
  100. capo_workspaces_thin_client/types/list_tags_for_resource_response.py +36 -0
  101. capo_workspaces_thin_client/types/maintenance_window.py +111 -0
  102. capo_workspaces_thin_client/types/maintenance_window_type.py +17 -0
  103. capo_workspaces_thin_client/types/max_results.py +5 -0
  104. capo_workspaces_thin_client/types/minute.py +5 -0
  105. capo_workspaces_thin_client/types/pagination_token.py +5 -0
  106. capo_workspaces_thin_client/types/quota_code.py +5 -0
  107. capo_workspaces_thin_client/types/resource_id.py +5 -0
  108. capo_workspaces_thin_client/types/resource_type.py +5 -0
  109. capo_workspaces_thin_client/types/retry_after_seconds.py +5 -0
  110. capo_workspaces_thin_client/types/service_code.py +5 -0
  111. capo_workspaces_thin_client/types/software.py +29 -0
  112. capo_workspaces_thin_client/types/software_list.py +29 -0
  113. capo_workspaces_thin_client/types/software_set.py +120 -0
  114. capo_workspaces_thin_client/types/software_set_id.py +5 -0
  115. capo_workspaces_thin_client/types/software_set_id_or_empty_string.py +5 -0
  116. capo_workspaces_thin_client/types/software_set_list.py +37 -0
  117. capo_workspaces_thin_client/types/software_set_summary.py +99 -0
  118. capo_workspaces_thin_client/types/software_set_update_mode.py +17 -0
  119. capo_workspaces_thin_client/types/software_set_update_schedule.py +17 -0
  120. capo_workspaces_thin_client/types/software_set_update_status.py +18 -0
  121. capo_workspaces_thin_client/types/software_set_validation_status.py +17 -0
  122. capo_workspaces_thin_client/types/tag_keys.py +14 -0
  123. capo_workspaces_thin_client/types/tag_resource_request.py +41 -0
  124. capo_workspaces_thin_client/types/tag_resource_response.py +18 -0
  125. capo_workspaces_thin_client/types/tags_map.py +22 -0
  126. capo_workspaces_thin_client/types/target_device_status.py +17 -0
  127. capo_workspaces_thin_client/types/timestamp.py +20 -0
  128. capo_workspaces_thin_client/types/untag_resource_request.py +26 -0
  129. capo_workspaces_thin_client/types/untag_resource_response.py +18 -0
  130. capo_workspaces_thin_client/types/update_device_request.py +61 -0
  131. capo_workspaces_thin_client/types/update_device_response.py +40 -0
  132. capo_workspaces_thin_client/types/update_environment_request.py +142 -0
  133. capo_workspaces_thin_client/types/update_environment_response.py +42 -0
  134. capo_workspaces_thin_client/types/update_software_set_request.py +48 -0
  135. capo_workspaces_thin_client/types/update_software_set_response.py +18 -0
  136. capo_workspaces_thin_client/types/user_id.py +5 -0
  137. capo_workspaces_thin_client/types/validation_exception_field.py +39 -0
  138. capo_workspaces_thin_client/types/validation_exception_field_list.py +39 -0
  139. capo_workspaces_thin_client/types/validation_exception_reason.py +19 -0
  140. capo_workspaces_thin_client-0.1.0.dist-info/METADATA +101 -0
  141. capo_workspaces_thin_client-0.1.0.dist-info/RECORD +144 -0
  142. capo_workspaces_thin_client-0.1.0.dist-info/WHEEL +5 -0
  143. capo_workspaces_thin_client-0.1.0.dist-info/licenses/LICENSE +21 -0
  144. capo_workspaces_thin_client-0.1.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,175 @@
1
+ """Generated from Smithy shape ``com.amazonaws.workspacesthinclient#TagResource``."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import json
6
+ from typing import Any
7
+ from urllib.parse import quote
8
+
9
+ import zapros
10
+ from typing_extensions import Never
11
+
12
+ import capo_workspaces_thin_client._auth._signers
13
+ import capo_workspaces_thin_client._auth._sigv4
14
+ import capo_workspaces_thin_client._protocol.eventstream
15
+ import capo_workspaces_thin_client.errors.access_denied_exception
16
+ import capo_workspaces_thin_client.errors.conflict_exception
17
+ import capo_workspaces_thin_client.errors.internal_server_exception
18
+ import capo_workspaces_thin_client.errors.resource_not_found_exception
19
+ import capo_workspaces_thin_client.errors.throttling_exception
20
+ import capo_workspaces_thin_client.errors.validation_exception
21
+ import capo_workspaces_thin_client.types.tag_resource_request
22
+ import capo_workspaces_thin_client.types.tag_resource_response
23
+ import capo_workspaces_thin_client.types.tags_map
24
+ from capo_workspaces_thin_client._protocol.errors import parse_error_metadata_json
25
+ from capo_workspaces_thin_client._rule_engine._endpoint_rule_set import (
26
+ EndpointParams,
27
+ resolve,
28
+ )
29
+ from capo_workspaces_thin_client._services._pipeline import (
30
+ AsyncOperationOptions,
31
+ OperationOptions,
32
+ )
33
+ from capo_workspaces_thin_client.errors import UnknownServiceError
34
+
35
+
36
+ def handle_error(response: zapros.Response) -> Never:
37
+ data = json.loads(response.read())
38
+ code, message = parse_error_metadata_json(response, data)
39
+ match code:
40
+ case "AccessDeniedException":
41
+ raise capo_workspaces_thin_client.errors.access_denied_exception.AccessDeniedException.from_json(
42
+ data, message
43
+ )
44
+ case "ConflictException":
45
+ raise capo_workspaces_thin_client.errors.conflict_exception.ConflictException.from_json(
46
+ data, message
47
+ )
48
+ case "InternalServerException":
49
+ raise capo_workspaces_thin_client.errors.internal_server_exception.InternalServerException.from_json(
50
+ data, message
51
+ )
52
+ case "ResourceNotFoundException":
53
+ raise capo_workspaces_thin_client.errors.resource_not_found_exception.ResourceNotFoundException.from_json(
54
+ data, message
55
+ )
56
+ case "ThrottlingException":
57
+ raise capo_workspaces_thin_client.errors.throttling_exception.ThrottlingException.from_json(
58
+ data, message
59
+ )
60
+ case "ValidationException":
61
+ raise capo_workspaces_thin_client.errors.validation_exception.ValidationException.from_json(
62
+ data, message
63
+ )
64
+ case _:
65
+ raise UnknownServiceError(code=code, message=message, response=response)
66
+
67
+
68
+ def handle_response(
69
+ response: zapros.Response,
70
+ ) -> capo_workspaces_thin_client.types.tag_resource_response.TagResourceResponse:
71
+ out: capo_workspaces_thin_client.types.tag_resource_response.TagResourceResponse = {} # type: ignore[typeddict-item]
72
+ return out
73
+
74
+
75
+ async def async_handle_response(
76
+ response: zapros.Response,
77
+ ) -> capo_workspaces_thin_client.types.tag_resource_response.TagResourceResponse:
78
+ out: capo_workspaces_thin_client.types.tag_resource_response.TagResourceResponse = {} # type: ignore[typeddict-item]
79
+ return out
80
+
81
+
82
+ def get_signer(
83
+ options: AsyncOperationOptions | OperationOptions,
84
+ auth_schemes: list[dict[str, Any]] | None = None,
85
+ ) -> capo_workspaces_thin_client._auth._signers.Signer | None:
86
+ name_to_schema = {s["name"]: s for s in (auth_schemes or [])} # noqa: F841
87
+ if (
88
+ options.credentials_provider is not None
89
+ and name_to_schema
90
+ and not name_to_schema.keys() & {"sigv4", "sigv4-s3express"}
91
+ ):
92
+ raise RuntimeError(
93
+ "Endpoint requires an unsupported auth scheme: " + ", ".join(name_to_schema)
94
+ )
95
+ if options.credentials_provider is not None:
96
+ endpoint_scheme = name_to_schema.get("sigv4") or name_to_schema.get(
97
+ "sigv4-s3express"
98
+ )
99
+ if endpoint_scheme is not None or not name_to_schema:
100
+ sigv4_config = (
101
+ capo_workspaces_thin_client._auth._sigv4.build_sigv4_auth_scheme(
102
+ "thinclient", options.region, endpoint_scheme
103
+ )
104
+ )
105
+ if sigv4_config is not None:
106
+ return capo_workspaces_thin_client._auth._signers.SigV4Signer(
107
+ options.credentials_provider, auth_scheme=sigv4_config
108
+ )
109
+ raise RuntimeError("Auth was not resolved")
110
+
111
+
112
+ def build_request(
113
+ options: OperationOptions | AsyncOperationOptions,
114
+ input_: capo_workspaces_thin_client.types.tag_resource_request.TagResourceRequest,
115
+ ) -> zapros.Request:
116
+ endpoint = resolve(
117
+ EndpointParams(
118
+ Region=options.region,
119
+ UseDualStack=options.use_dual_stack,
120
+ UseFIPS=options.use_fips,
121
+ Endpoint=options.endpoint,
122
+ )
123
+ ) # noqa: F841
124
+ url = endpoint.url.rstrip("/") + "/tags/{resourceArn}"
125
+ url = url.replace("{resourceArn}", quote(input_["resource_arn"], safe=""))
126
+ params: list[tuple[str, str]] = []
127
+ headers: dict[str, str] = {k: ", ".join(v) for k, v in endpoint.headers.items()}
128
+ body: bytes | None = json.dumps(
129
+ capo_workspaces_thin_client.types.tag_resource_request.serialize_json(input_),
130
+ allow_nan=False,
131
+ ).encode()
132
+ headers["content-type"] = "application/json"
133
+ signer = get_signer(options, auth_schemes=endpoint.properties.get("authSchemes"))
134
+ normalized_url = zapros.URL(url)
135
+ for k, v in params:
136
+ normalized_url.search_params.append(k, v)
137
+ return zapros.Request(
138
+ normalized_url, "POST", headers=headers, body=body, context={"signer": signer}
139
+ )
140
+
141
+
142
+ def tag_resource(
143
+ options: OperationOptions,
144
+ input_: capo_workspaces_thin_client.types.tag_resource_request.TagResourceRequest,
145
+ ) -> tuple[
146
+ capo_workspaces_thin_client.types.tag_resource_response.TagResourceResponse,
147
+ zapros.Response,
148
+ ]:
149
+ response = options.client.handler.handle(build_request(options, input_))
150
+ try:
151
+ if response.status >= 300:
152
+ response.read()
153
+ handle_error(response)
154
+ return handle_response(response), response
155
+ except BaseException:
156
+ response.close()
157
+ raise
158
+
159
+
160
+ async def async_tag_resource(
161
+ options: AsyncOperationOptions,
162
+ input_: capo_workspaces_thin_client.types.tag_resource_request.TagResourceRequest,
163
+ ) -> tuple[
164
+ capo_workspaces_thin_client.types.tag_resource_response.TagResourceResponse,
165
+ zapros.Response,
166
+ ]:
167
+ response = await options.client.handler.ahandle(build_request(options, input_))
168
+ try:
169
+ if response.status >= 300:
170
+ await response.aread()
171
+ handle_error(response)
172
+ return await async_handle_response(response), response
173
+ except BaseException:
174
+ await response.aclose()
175
+ raise
@@ -0,0 +1,173 @@
1
+ """Generated from Smithy shape ``com.amazonaws.workspacesthinclient#UntagResource``."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import json
6
+ from typing import Any
7
+ from urllib.parse import quote
8
+
9
+ import zapros
10
+ from typing_extensions import Never
11
+
12
+ import capo_workspaces_thin_client._auth._signers
13
+ import capo_workspaces_thin_client._auth._sigv4
14
+ import capo_workspaces_thin_client._protocol.eventstream
15
+ import capo_workspaces_thin_client.errors.access_denied_exception
16
+ import capo_workspaces_thin_client.errors.conflict_exception
17
+ import capo_workspaces_thin_client.errors.internal_server_exception
18
+ import capo_workspaces_thin_client.errors.resource_not_found_exception
19
+ import capo_workspaces_thin_client.errors.throttling_exception
20
+ import capo_workspaces_thin_client.errors.validation_exception
21
+ import capo_workspaces_thin_client.types.tag_keys
22
+ import capo_workspaces_thin_client.types.untag_resource_request
23
+ import capo_workspaces_thin_client.types.untag_resource_response
24
+ from capo_workspaces_thin_client._protocol.errors import parse_error_metadata_json
25
+ from capo_workspaces_thin_client._rule_engine._endpoint_rule_set import (
26
+ EndpointParams,
27
+ resolve,
28
+ )
29
+ from capo_workspaces_thin_client._services._pipeline import (
30
+ AsyncOperationOptions,
31
+ OperationOptions,
32
+ )
33
+ from capo_workspaces_thin_client.errors import UnknownServiceError
34
+
35
+
36
+ def handle_error(response: zapros.Response) -> Never:
37
+ data = json.loads(response.read())
38
+ code, message = parse_error_metadata_json(response, data)
39
+ match code:
40
+ case "AccessDeniedException":
41
+ raise capo_workspaces_thin_client.errors.access_denied_exception.AccessDeniedException.from_json(
42
+ data, message
43
+ )
44
+ case "ConflictException":
45
+ raise capo_workspaces_thin_client.errors.conflict_exception.ConflictException.from_json(
46
+ data, message
47
+ )
48
+ case "InternalServerException":
49
+ raise capo_workspaces_thin_client.errors.internal_server_exception.InternalServerException.from_json(
50
+ data, message
51
+ )
52
+ case "ResourceNotFoundException":
53
+ raise capo_workspaces_thin_client.errors.resource_not_found_exception.ResourceNotFoundException.from_json(
54
+ data, message
55
+ )
56
+ case "ThrottlingException":
57
+ raise capo_workspaces_thin_client.errors.throttling_exception.ThrottlingException.from_json(
58
+ data, message
59
+ )
60
+ case "ValidationException":
61
+ raise capo_workspaces_thin_client.errors.validation_exception.ValidationException.from_json(
62
+ data, message
63
+ )
64
+ case _:
65
+ raise UnknownServiceError(code=code, message=message, response=response)
66
+
67
+
68
+ def handle_response(
69
+ response: zapros.Response,
70
+ ) -> capo_workspaces_thin_client.types.untag_resource_response.UntagResourceResponse:
71
+ out: capo_workspaces_thin_client.types.untag_resource_response.UntagResourceResponse = {} # type: ignore[typeddict-item]
72
+ return out
73
+
74
+
75
+ async def async_handle_response(
76
+ response: zapros.Response,
77
+ ) -> capo_workspaces_thin_client.types.untag_resource_response.UntagResourceResponse:
78
+ out: capo_workspaces_thin_client.types.untag_resource_response.UntagResourceResponse = {} # type: ignore[typeddict-item]
79
+ return out
80
+
81
+
82
+ def get_signer(
83
+ options: AsyncOperationOptions | OperationOptions,
84
+ auth_schemes: list[dict[str, Any]] | None = None,
85
+ ) -> capo_workspaces_thin_client._auth._signers.Signer | None:
86
+ name_to_schema = {s["name"]: s for s in (auth_schemes or [])} # noqa: F841
87
+ if (
88
+ options.credentials_provider is not None
89
+ and name_to_schema
90
+ and not name_to_schema.keys() & {"sigv4", "sigv4-s3express"}
91
+ ):
92
+ raise RuntimeError(
93
+ "Endpoint requires an unsupported auth scheme: " + ", ".join(name_to_schema)
94
+ )
95
+ if options.credentials_provider is not None:
96
+ endpoint_scheme = name_to_schema.get("sigv4") or name_to_schema.get(
97
+ "sigv4-s3express"
98
+ )
99
+ if endpoint_scheme is not None or not name_to_schema:
100
+ sigv4_config = (
101
+ capo_workspaces_thin_client._auth._sigv4.build_sigv4_auth_scheme(
102
+ "thinclient", options.region, endpoint_scheme
103
+ )
104
+ )
105
+ if sigv4_config is not None:
106
+ return capo_workspaces_thin_client._auth._signers.SigV4Signer(
107
+ options.credentials_provider, auth_scheme=sigv4_config
108
+ )
109
+ raise RuntimeError("Auth was not resolved")
110
+
111
+
112
+ def build_request(
113
+ options: OperationOptions | AsyncOperationOptions,
114
+ input_: capo_workspaces_thin_client.types.untag_resource_request.UntagResourceRequest,
115
+ ) -> zapros.Request:
116
+ endpoint = resolve(
117
+ EndpointParams(
118
+ Region=options.region,
119
+ UseDualStack=options.use_dual_stack,
120
+ UseFIPS=options.use_fips,
121
+ Endpoint=options.endpoint,
122
+ )
123
+ ) # noqa: F841
124
+ url = endpoint.url.rstrip("/") + "/tags/{resourceArn}"
125
+ url = url.replace("{resourceArn}", quote(input_["resource_arn"], safe=""))
126
+ params: list[tuple[str, str]] = []
127
+ for item in input_["tag_keys"]:
128
+ params.append(("tagKeys", item))
129
+ headers: dict[str, str] = {k: ", ".join(v) for k, v in endpoint.headers.items()}
130
+ body: bytes | None = b""
131
+ signer = get_signer(options, auth_schemes=endpoint.properties.get("authSchemes"))
132
+ normalized_url = zapros.URL(url)
133
+ for k, v in params:
134
+ normalized_url.search_params.append(k, v)
135
+ return zapros.Request(
136
+ normalized_url, "DELETE", headers=headers, body=body, context={"signer": signer}
137
+ )
138
+
139
+
140
+ def untag_resource(
141
+ options: OperationOptions,
142
+ input_: capo_workspaces_thin_client.types.untag_resource_request.UntagResourceRequest,
143
+ ) -> tuple[
144
+ capo_workspaces_thin_client.types.untag_resource_response.UntagResourceResponse,
145
+ zapros.Response,
146
+ ]:
147
+ response = options.client.handler.handle(build_request(options, input_))
148
+ try:
149
+ if response.status >= 300:
150
+ response.read()
151
+ handle_error(response)
152
+ return handle_response(response), response
153
+ except BaseException:
154
+ response.close()
155
+ raise
156
+
157
+
158
+ async def async_untag_resource(
159
+ options: AsyncOperationOptions,
160
+ input_: capo_workspaces_thin_client.types.untag_resource_request.UntagResourceRequest,
161
+ ) -> tuple[
162
+ capo_workspaces_thin_client.types.untag_resource_response.UntagResourceResponse,
163
+ zapros.Response,
164
+ ]:
165
+ response = await options.client.handler.ahandle(build_request(options, input_))
166
+ try:
167
+ if response.status >= 300:
168
+ await response.aread()
169
+ handle_error(response)
170
+ return await async_handle_response(response), response
171
+ except BaseException:
172
+ await response.aclose()
173
+ raise
@@ -0,0 +1,175 @@
1
+ """Generated from Smithy shape ``com.amazonaws.workspacesthinclient#UpdateDevice``."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import json
6
+ from typing import Any
7
+ from urllib.parse import quote
8
+
9
+ import zapros
10
+ from typing_extensions import Never
11
+
12
+ import capo_workspaces_thin_client._auth._signers
13
+ import capo_workspaces_thin_client._auth._sigv4
14
+ import capo_workspaces_thin_client._protocol.eventstream
15
+ import capo_workspaces_thin_client.errors.access_denied_exception
16
+ import capo_workspaces_thin_client.errors.internal_server_exception
17
+ import capo_workspaces_thin_client.errors.resource_not_found_exception
18
+ import capo_workspaces_thin_client.errors.throttling_exception
19
+ import capo_workspaces_thin_client.errors.validation_exception
20
+ import capo_workspaces_thin_client.types.device_summary
21
+ import capo_workspaces_thin_client.types.software_set_update_schedule
22
+ import capo_workspaces_thin_client.types.update_device_request
23
+ import capo_workspaces_thin_client.types.update_device_response
24
+ from capo_workspaces_thin_client._protocol.errors import parse_error_metadata_json
25
+ from capo_workspaces_thin_client._rule_engine._endpoint_rule_set import (
26
+ EndpointParams,
27
+ resolve,
28
+ )
29
+ from capo_workspaces_thin_client._services._pipeline import (
30
+ AsyncOperationOptions,
31
+ OperationOptions,
32
+ )
33
+ from capo_workspaces_thin_client.errors import UnknownServiceError
34
+
35
+
36
+ def handle_error(response: zapros.Response) -> Never:
37
+ data = json.loads(response.read())
38
+ code, message = parse_error_metadata_json(response, data)
39
+ match code:
40
+ case "AccessDeniedException":
41
+ raise capo_workspaces_thin_client.errors.access_denied_exception.AccessDeniedException.from_json(
42
+ data, message
43
+ )
44
+ case "InternalServerException":
45
+ raise capo_workspaces_thin_client.errors.internal_server_exception.InternalServerException.from_json(
46
+ data, message
47
+ )
48
+ case "ResourceNotFoundException":
49
+ raise capo_workspaces_thin_client.errors.resource_not_found_exception.ResourceNotFoundException.from_json(
50
+ data, message
51
+ )
52
+ case "ThrottlingException":
53
+ raise capo_workspaces_thin_client.errors.throttling_exception.ThrottlingException.from_json(
54
+ data, message
55
+ )
56
+ case "ValidationException":
57
+ raise capo_workspaces_thin_client.errors.validation_exception.ValidationException.from_json(
58
+ data, message
59
+ )
60
+ case _:
61
+ raise UnknownServiceError(code=code, message=message, response=response)
62
+
63
+
64
+ def handle_response(
65
+ response: zapros.Response,
66
+ ) -> capo_workspaces_thin_client.types.update_device_response.UpdateDeviceResponse:
67
+ out: capo_workspaces_thin_client.types.update_device_response.UpdateDeviceResponse = capo_workspaces_thin_client.types.update_device_response.deserialize_json(
68
+ json.loads(response.read())
69
+ )
70
+ return out
71
+
72
+
73
+ async def async_handle_response(
74
+ response: zapros.Response,
75
+ ) -> capo_workspaces_thin_client.types.update_device_response.UpdateDeviceResponse:
76
+ out: capo_workspaces_thin_client.types.update_device_response.UpdateDeviceResponse = capo_workspaces_thin_client.types.update_device_response.deserialize_json(
77
+ json.loads(await response.aread())
78
+ )
79
+ return out
80
+
81
+
82
+ def get_signer(
83
+ options: AsyncOperationOptions | OperationOptions,
84
+ auth_schemes: list[dict[str, Any]] | None = None,
85
+ ) -> capo_workspaces_thin_client._auth._signers.Signer | None:
86
+ name_to_schema = {s["name"]: s for s in (auth_schemes or [])} # noqa: F841
87
+ if (
88
+ options.credentials_provider is not None
89
+ and name_to_schema
90
+ and not name_to_schema.keys() & {"sigv4", "sigv4-s3express"}
91
+ ):
92
+ raise RuntimeError(
93
+ "Endpoint requires an unsupported auth scheme: " + ", ".join(name_to_schema)
94
+ )
95
+ if options.credentials_provider is not None:
96
+ endpoint_scheme = name_to_schema.get("sigv4") or name_to_schema.get(
97
+ "sigv4-s3express"
98
+ )
99
+ if endpoint_scheme is not None or not name_to_schema:
100
+ sigv4_config = (
101
+ capo_workspaces_thin_client._auth._sigv4.build_sigv4_auth_scheme(
102
+ "thinclient", options.region, endpoint_scheme
103
+ )
104
+ )
105
+ if sigv4_config is not None:
106
+ return capo_workspaces_thin_client._auth._signers.SigV4Signer(
107
+ options.credentials_provider, auth_scheme=sigv4_config
108
+ )
109
+ raise RuntimeError("Auth was not resolved")
110
+
111
+
112
+ def build_request(
113
+ options: OperationOptions | AsyncOperationOptions,
114
+ input_: capo_workspaces_thin_client.types.update_device_request.UpdateDeviceRequest,
115
+ ) -> zapros.Request:
116
+ endpoint = resolve(
117
+ EndpointParams(
118
+ Region=options.region,
119
+ UseDualStack=options.use_dual_stack,
120
+ UseFIPS=options.use_fips,
121
+ Endpoint=options.endpoint,
122
+ )
123
+ ) # noqa: F841
124
+ url = endpoint.url.rstrip("/") + "/devices/{id}"
125
+ url = url.replace("{id}", quote(input_["id"], safe=""))
126
+ params: list[tuple[str, str]] = []
127
+ headers: dict[str, str] = {k: ", ".join(v) for k, v in endpoint.headers.items()}
128
+ body: bytes | None = json.dumps(
129
+ capo_workspaces_thin_client.types.update_device_request.serialize_json(input_),
130
+ allow_nan=False,
131
+ ).encode()
132
+ headers["content-type"] = "application/json"
133
+ signer = get_signer(options, auth_schemes=endpoint.properties.get("authSchemes"))
134
+ normalized_url = zapros.URL(url)
135
+ for k, v in params:
136
+ normalized_url.search_params.append(k, v)
137
+ return zapros.Request(
138
+ normalized_url, "PATCH", headers=headers, body=body, context={"signer": signer}
139
+ )
140
+
141
+
142
+ def update_device(
143
+ options: OperationOptions,
144
+ input_: capo_workspaces_thin_client.types.update_device_request.UpdateDeviceRequest,
145
+ ) -> tuple[
146
+ capo_workspaces_thin_client.types.update_device_response.UpdateDeviceResponse,
147
+ zapros.Response,
148
+ ]:
149
+ response = options.client.handler.handle(build_request(options, input_))
150
+ try:
151
+ if response.status >= 300:
152
+ response.read()
153
+ handle_error(response)
154
+ return handle_response(response), response
155
+ except BaseException:
156
+ response.close()
157
+ raise
158
+
159
+
160
+ async def async_update_device(
161
+ options: AsyncOperationOptions,
162
+ input_: capo_workspaces_thin_client.types.update_device_request.UpdateDeviceRequest,
163
+ ) -> tuple[
164
+ capo_workspaces_thin_client.types.update_device_response.UpdateDeviceResponse,
165
+ zapros.Response,
166
+ ]:
167
+ response = await options.client.handler.ahandle(build_request(options, input_))
168
+ try:
169
+ if response.status >= 300:
170
+ await response.aread()
171
+ handle_error(response)
172
+ return await async_handle_response(response), response
173
+ except BaseException:
174
+ await response.aclose()
175
+ raise