otdf-python 0.4.1__py3-none-any.whl → 0.4.3__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 (61) hide show
  1. otdf_python/autoconfigure_utils.py +0 -2
  2. otdf_python/cli.py +50 -21
  3. otdf_python/collection_store.py +0 -1
  4. otdf_python/ecdh.py +0 -6
  5. otdf_python/kas_allowlist.py +182 -0
  6. otdf_python/kas_client.py +44 -2
  7. otdf_python/kas_connect_rpc_client.py +59 -19
  8. otdf_python/nanotdf.py +4 -14
  9. otdf_python/nanotdf_ecdsa_struct.py +0 -2
  10. otdf_python/nanotdf_type.py +1 -1
  11. otdf_python/sdk.py +31 -15
  12. otdf_python/sdk_builder.py +88 -8
  13. otdf_python/tdf.py +2 -2
  14. {otdf_python-0.4.1.dist-info → otdf_python-0.4.3.dist-info}/METADATA +3 -2
  15. {otdf_python-0.4.1.dist-info → otdf_python-0.4.3.dist-info}/RECORD +46 -36
  16. otdf_python_proto/__init__.py +2 -6
  17. otdf_python_proto/authorization/__init__.py +10 -0
  18. otdf_python_proto/authorization/authorization_connect.py +250 -0
  19. otdf_python_proto/authorization/v2/authorization_connect.py +315 -0
  20. otdf_python_proto/entityresolution/__init__.py +10 -0
  21. otdf_python_proto/entityresolution/entity_resolution_connect.py +185 -0
  22. otdf_python_proto/entityresolution/v2/entity_resolution_connect.py +185 -0
  23. otdf_python_proto/kas/__init__.py +2 -2
  24. otdf_python_proto/kas/kas_connect.py +259 -0
  25. otdf_python_proto/policy/actions/__init__.py +11 -0
  26. otdf_python_proto/policy/actions/actions_connect.py +380 -0
  27. otdf_python_proto/policy/attributes/__init__.py +11 -0
  28. otdf_python_proto/policy/attributes/attributes_connect.py +1310 -0
  29. otdf_python_proto/policy/kasregistry/__init__.py +11 -0
  30. otdf_python_proto/policy/kasregistry/key_access_server_registry_connect.py +912 -0
  31. otdf_python_proto/policy/keymanagement/__init__.py +11 -0
  32. otdf_python_proto/policy/keymanagement/key_management_connect.py +380 -0
  33. otdf_python_proto/policy/namespaces/__init__.py +11 -0
  34. otdf_python_proto/policy/namespaces/namespaces_connect.py +648 -0
  35. otdf_python_proto/policy/registeredresources/__init__.py +11 -0
  36. otdf_python_proto/policy/registeredresources/registered_resources_connect.py +770 -0
  37. otdf_python_proto/policy/resourcemapping/__init__.py +11 -0
  38. otdf_python_proto/policy/resourcemapping/resource_mapping_connect.py +790 -0
  39. otdf_python_proto/policy/subjectmapping/__init__.py +11 -0
  40. otdf_python_proto/policy/subjectmapping/subject_mapping_connect.py +851 -0
  41. otdf_python_proto/policy/unsafe/__init__.py +11 -0
  42. otdf_python_proto/policy/unsafe/unsafe_connect.py +705 -0
  43. otdf_python_proto/wellknownconfiguration/__init__.py +10 -0
  44. otdf_python_proto/wellknownconfiguration/wellknown_configuration_connect.py +124 -0
  45. otdf_python_proto/authorization/authorization_pb2_connect.py +0 -191
  46. otdf_python_proto/authorization/v2/authorization_pb2_connect.py +0 -233
  47. otdf_python_proto/entityresolution/entity_resolution_pb2_connect.py +0 -149
  48. otdf_python_proto/entityresolution/v2/entity_resolution_pb2_connect.py +0 -149
  49. otdf_python_proto/kas/kas_pb2_connect.py +0 -192
  50. otdf_python_proto/policy/actions/actions_pb2_connect.py +0 -275
  51. otdf_python_proto/policy/attributes/attributes_pb2_connect.py +0 -863
  52. otdf_python_proto/policy/kasregistry/key_access_server_registry_pb2_connect.py +0 -611
  53. otdf_python_proto/policy/keymanagement/key_management_pb2_connect.py +0 -275
  54. otdf_python_proto/policy/namespaces/namespaces_pb2_connect.py +0 -443
  55. otdf_python_proto/policy/registeredresources/registered_resources_pb2_connect.py +0 -527
  56. otdf_python_proto/policy/resourcemapping/resource_mapping_pb2_connect.py +0 -527
  57. otdf_python_proto/policy/subjectmapping/subject_mapping_pb2_connect.py +0 -569
  58. otdf_python_proto/policy/unsafe/unsafe_pb2_connect.py +0 -485
  59. otdf_python_proto/wellknownconfiguration/wellknown_configuration_pb2_connect.py +0 -107
  60. {otdf_python-0.4.1.dist-info → otdf_python-0.4.3.dist-info}/WHEEL +0 -0
  61. {otdf_python-0.4.1.dist-info → otdf_python-0.4.3.dist-info}/licenses/LICENSE +0 -0
@@ -1,149 +0,0 @@
1
- # Generated Connect client code
2
-
3
- from __future__ import annotations
4
- from collections.abc import AsyncIterator
5
- from collections.abc import Iterator
6
- from collections.abc import Iterable
7
- import aiohttp
8
- import urllib3
9
- import typing
10
- import sys
11
-
12
- from connectrpc.client_async import AsyncConnectClient
13
- from connectrpc.client_sync import ConnectClient
14
- from connectrpc.client_protocol import ConnectProtocol
15
- from connectrpc.client_connect import ConnectProtocolError
16
- from connectrpc.headers import HeaderInput
17
- from connectrpc.server import ClientRequest
18
- from connectrpc.server import ClientStream
19
- from connectrpc.server import ServerResponse
20
- from connectrpc.server import ServerStream
21
- from connectrpc.server_sync import ConnectWSGI
22
- from connectrpc.streams import StreamInput
23
- from connectrpc.streams import AsyncStreamOutput
24
- from connectrpc.streams import StreamOutput
25
- from connectrpc.unary import UnaryOutput
26
- from connectrpc.unary import ClientStreamingOutput
27
-
28
- if typing.TYPE_CHECKING:
29
- # wsgiref.types was added in Python 3.11.
30
- if sys.version_info >= (3, 11):
31
- from wsgiref.types import WSGIApplication
32
- else:
33
- from _typeshed.wsgi import WSGIApplication
34
-
35
- import entityresolution.entity_resolution_pb2
36
-
37
- class EntityResolutionServiceClient:
38
- def __init__(
39
- self,
40
- base_url: str,
41
- http_client: urllib3.PoolManager | None = None,
42
- protocol: ConnectProtocol = ConnectProtocol.CONNECT_PROTOBUF,
43
- ):
44
- self.base_url = base_url
45
- self._connect_client = ConnectClient(http_client, protocol)
46
- def call_resolve_entities(
47
- self, req: entityresolution.entity_resolution_pb2.ResolveEntitiesRequest,extra_headers: HeaderInput | None=None, timeout_seconds: float | None=None
48
- ) -> UnaryOutput[entityresolution.entity_resolution_pb2.ResolveEntitiesResponse]:
49
- """Low-level method to call ResolveEntities, granting access to errors and metadata"""
50
- url = self.base_url + "/entityresolution.EntityResolutionService/ResolveEntities"
51
- return self._connect_client.call_unary(url, req, entityresolution.entity_resolution_pb2.ResolveEntitiesResponse,extra_headers, timeout_seconds)
52
-
53
-
54
- def resolve_entities(
55
- self, req: entityresolution.entity_resolution_pb2.ResolveEntitiesRequest,extra_headers: HeaderInput | None=None, timeout_seconds: float | None=None
56
- ) -> entityresolution.entity_resolution_pb2.ResolveEntitiesResponse:
57
- response = self.call_resolve_entities(req, extra_headers, timeout_seconds)
58
- err = response.error()
59
- if err is not None:
60
- raise err
61
- msg = response.message()
62
- if msg is None:
63
- raise ConnectProtocolError('missing response message')
64
- return msg
65
-
66
- def call_create_entity_chain_from_jwt(
67
- self, req: entityresolution.entity_resolution_pb2.CreateEntityChainFromJwtRequest,extra_headers: HeaderInput | None=None, timeout_seconds: float | None=None
68
- ) -> UnaryOutput[entityresolution.entity_resolution_pb2.CreateEntityChainFromJwtResponse]:
69
- """Low-level method to call CreateEntityChainFromJwt, granting access to errors and metadata"""
70
- url = self.base_url + "/entityresolution.EntityResolutionService/CreateEntityChainFromJwt"
71
- return self._connect_client.call_unary(url, req, entityresolution.entity_resolution_pb2.CreateEntityChainFromJwtResponse,extra_headers, timeout_seconds)
72
-
73
-
74
- def create_entity_chain_from_jwt(
75
- self, req: entityresolution.entity_resolution_pb2.CreateEntityChainFromJwtRequest,extra_headers: HeaderInput | None=None, timeout_seconds: float | None=None
76
- ) -> entityresolution.entity_resolution_pb2.CreateEntityChainFromJwtResponse:
77
- response = self.call_create_entity_chain_from_jwt(req, extra_headers, timeout_seconds)
78
- err = response.error()
79
- if err is not None:
80
- raise err
81
- msg = response.message()
82
- if msg is None:
83
- raise ConnectProtocolError('missing response message')
84
- return msg
85
-
86
-
87
- class AsyncEntityResolutionServiceClient:
88
- def __init__(
89
- self,
90
- base_url: str,
91
- http_client: aiohttp.ClientSession,
92
- protocol: ConnectProtocol = ConnectProtocol.CONNECT_PROTOBUF,
93
- ):
94
- self.base_url = base_url
95
- self._connect_client = AsyncConnectClient(http_client, protocol)
96
-
97
- async def call_resolve_entities(
98
- self, req: entityresolution.entity_resolution_pb2.ResolveEntitiesRequest,extra_headers: HeaderInput | None=None, timeout_seconds: float | None=None
99
- ) -> UnaryOutput[entityresolution.entity_resolution_pb2.ResolveEntitiesResponse]:
100
- """Low-level method to call ResolveEntities, granting access to errors and metadata"""
101
- url = self.base_url + "/entityresolution.EntityResolutionService/ResolveEntities"
102
- return await self._connect_client.call_unary(url, req, entityresolution.entity_resolution_pb2.ResolveEntitiesResponse,extra_headers, timeout_seconds)
103
-
104
- async def resolve_entities(
105
- self, req: entityresolution.entity_resolution_pb2.ResolveEntitiesRequest,extra_headers: HeaderInput | None=None, timeout_seconds: float | None=None
106
- ) -> entityresolution.entity_resolution_pb2.ResolveEntitiesResponse:
107
- response = await self.call_resolve_entities(req, extra_headers, timeout_seconds)
108
- err = response.error()
109
- if err is not None:
110
- raise err
111
- msg = response.message()
112
- if msg is None:
113
- raise ConnectProtocolError('missing response message')
114
- return msg
115
-
116
- async def call_create_entity_chain_from_jwt(
117
- self, req: entityresolution.entity_resolution_pb2.CreateEntityChainFromJwtRequest,extra_headers: HeaderInput | None=None, timeout_seconds: float | None=None
118
- ) -> UnaryOutput[entityresolution.entity_resolution_pb2.CreateEntityChainFromJwtResponse]:
119
- """Low-level method to call CreateEntityChainFromJwt, granting access to errors and metadata"""
120
- url = self.base_url + "/entityresolution.EntityResolutionService/CreateEntityChainFromJwt"
121
- return await self._connect_client.call_unary(url, req, entityresolution.entity_resolution_pb2.CreateEntityChainFromJwtResponse,extra_headers, timeout_seconds)
122
-
123
- async def create_entity_chain_from_jwt(
124
- self, req: entityresolution.entity_resolution_pb2.CreateEntityChainFromJwtRequest,extra_headers: HeaderInput | None=None, timeout_seconds: float | None=None
125
- ) -> entityresolution.entity_resolution_pb2.CreateEntityChainFromJwtResponse:
126
- response = await self.call_create_entity_chain_from_jwt(req, extra_headers, timeout_seconds)
127
- err = response.error()
128
- if err is not None:
129
- raise err
130
- msg = response.message()
131
- if msg is None:
132
- raise ConnectProtocolError('missing response message')
133
- return msg
134
-
135
-
136
- @typing.runtime_checkable
137
- class EntityResolutionServiceProtocol(typing.Protocol):
138
- def resolve_entities(self, req: ClientRequest[entityresolution.entity_resolution_pb2.ResolveEntitiesRequest]) -> ServerResponse[entityresolution.entity_resolution_pb2.ResolveEntitiesResponse]:
139
- ...
140
- def create_entity_chain_from_jwt(self, req: ClientRequest[entityresolution.entity_resolution_pb2.CreateEntityChainFromJwtRequest]) -> ServerResponse[entityresolution.entity_resolution_pb2.CreateEntityChainFromJwtResponse]:
141
- ...
142
-
143
- ENTITY_RESOLUTION_SERVICE_PATH_PREFIX = "/entityresolution.EntityResolutionService"
144
-
145
- def wsgi_entity_resolution_service(implementation: EntityResolutionServiceProtocol) -> WSGIApplication:
146
- app = ConnectWSGI()
147
- app.register_unary_rpc("/entityresolution.EntityResolutionService/ResolveEntities", implementation.resolve_entities, entityresolution.entity_resolution_pb2.ResolveEntitiesRequest)
148
- app.register_unary_rpc("/entityresolution.EntityResolutionService/CreateEntityChainFromJwt", implementation.create_entity_chain_from_jwt, entityresolution.entity_resolution_pb2.CreateEntityChainFromJwtRequest)
149
- return app
@@ -1,149 +0,0 @@
1
- # Generated Connect client code
2
-
3
- from __future__ import annotations
4
- from collections.abc import AsyncIterator
5
- from collections.abc import Iterator
6
- from collections.abc import Iterable
7
- import aiohttp
8
- import urllib3
9
- import typing
10
- import sys
11
-
12
- from connectrpc.client_async import AsyncConnectClient
13
- from connectrpc.client_sync import ConnectClient
14
- from connectrpc.client_protocol import ConnectProtocol
15
- from connectrpc.client_connect import ConnectProtocolError
16
- from connectrpc.headers import HeaderInput
17
- from connectrpc.server import ClientRequest
18
- from connectrpc.server import ClientStream
19
- from connectrpc.server import ServerResponse
20
- from connectrpc.server import ServerStream
21
- from connectrpc.server_sync import ConnectWSGI
22
- from connectrpc.streams import StreamInput
23
- from connectrpc.streams import AsyncStreamOutput
24
- from connectrpc.streams import StreamOutput
25
- from connectrpc.unary import UnaryOutput
26
- from connectrpc.unary import ClientStreamingOutput
27
-
28
- if typing.TYPE_CHECKING:
29
- # wsgiref.types was added in Python 3.11.
30
- if sys.version_info >= (3, 11):
31
- from wsgiref.types import WSGIApplication
32
- else:
33
- from _typeshed.wsgi import WSGIApplication
34
-
35
- import entityresolution.v2.entity_resolution_pb2
36
-
37
- class EntityResolutionServiceClient:
38
- def __init__(
39
- self,
40
- base_url: str,
41
- http_client: urllib3.PoolManager | None = None,
42
- protocol: ConnectProtocol = ConnectProtocol.CONNECT_PROTOBUF,
43
- ):
44
- self.base_url = base_url
45
- self._connect_client = ConnectClient(http_client, protocol)
46
- def call_resolve_entities(
47
- self, req: entityresolution.v2.entity_resolution_pb2.ResolveEntitiesRequest,extra_headers: HeaderInput | None=None, timeout_seconds: float | None=None
48
- ) -> UnaryOutput[entityresolution.v2.entity_resolution_pb2.ResolveEntitiesResponse]:
49
- """Low-level method to call ResolveEntities, granting access to errors and metadata"""
50
- url = self.base_url + "/entityresolution.v2.EntityResolutionService/ResolveEntities"
51
- return self._connect_client.call_unary(url, req, entityresolution.v2.entity_resolution_pb2.ResolveEntitiesResponse,extra_headers, timeout_seconds)
52
-
53
-
54
- def resolve_entities(
55
- self, req: entityresolution.v2.entity_resolution_pb2.ResolveEntitiesRequest,extra_headers: HeaderInput | None=None, timeout_seconds: float | None=None
56
- ) -> entityresolution.v2.entity_resolution_pb2.ResolveEntitiesResponse:
57
- response = self.call_resolve_entities(req, extra_headers, timeout_seconds)
58
- err = response.error()
59
- if err is not None:
60
- raise err
61
- msg = response.message()
62
- if msg is None:
63
- raise ConnectProtocolError('missing response message')
64
- return msg
65
-
66
- def call_create_entity_chains_from_tokens(
67
- self, req: entityresolution.v2.entity_resolution_pb2.CreateEntityChainsFromTokensRequest,extra_headers: HeaderInput | None=None, timeout_seconds: float | None=None
68
- ) -> UnaryOutput[entityresolution.v2.entity_resolution_pb2.CreateEntityChainsFromTokensResponse]:
69
- """Low-level method to call CreateEntityChainsFromTokens, granting access to errors and metadata"""
70
- url = self.base_url + "/entityresolution.v2.EntityResolutionService/CreateEntityChainsFromTokens"
71
- return self._connect_client.call_unary(url, req, entityresolution.v2.entity_resolution_pb2.CreateEntityChainsFromTokensResponse,extra_headers, timeout_seconds)
72
-
73
-
74
- def create_entity_chains_from_tokens(
75
- self, req: entityresolution.v2.entity_resolution_pb2.CreateEntityChainsFromTokensRequest,extra_headers: HeaderInput | None=None, timeout_seconds: float | None=None
76
- ) -> entityresolution.v2.entity_resolution_pb2.CreateEntityChainsFromTokensResponse:
77
- response = self.call_create_entity_chains_from_tokens(req, extra_headers, timeout_seconds)
78
- err = response.error()
79
- if err is not None:
80
- raise err
81
- msg = response.message()
82
- if msg is None:
83
- raise ConnectProtocolError('missing response message')
84
- return msg
85
-
86
-
87
- class AsyncEntityResolutionServiceClient:
88
- def __init__(
89
- self,
90
- base_url: str,
91
- http_client: aiohttp.ClientSession,
92
- protocol: ConnectProtocol = ConnectProtocol.CONNECT_PROTOBUF,
93
- ):
94
- self.base_url = base_url
95
- self._connect_client = AsyncConnectClient(http_client, protocol)
96
-
97
- async def call_resolve_entities(
98
- self, req: entityresolution.v2.entity_resolution_pb2.ResolveEntitiesRequest,extra_headers: HeaderInput | None=None, timeout_seconds: float | None=None
99
- ) -> UnaryOutput[entityresolution.v2.entity_resolution_pb2.ResolveEntitiesResponse]:
100
- """Low-level method to call ResolveEntities, granting access to errors and metadata"""
101
- url = self.base_url + "/entityresolution.v2.EntityResolutionService/ResolveEntities"
102
- return await self._connect_client.call_unary(url, req, entityresolution.v2.entity_resolution_pb2.ResolveEntitiesResponse,extra_headers, timeout_seconds)
103
-
104
- async def resolve_entities(
105
- self, req: entityresolution.v2.entity_resolution_pb2.ResolveEntitiesRequest,extra_headers: HeaderInput | None=None, timeout_seconds: float | None=None
106
- ) -> entityresolution.v2.entity_resolution_pb2.ResolveEntitiesResponse:
107
- response = await self.call_resolve_entities(req, extra_headers, timeout_seconds)
108
- err = response.error()
109
- if err is not None:
110
- raise err
111
- msg = response.message()
112
- if msg is None:
113
- raise ConnectProtocolError('missing response message')
114
- return msg
115
-
116
- async def call_create_entity_chains_from_tokens(
117
- self, req: entityresolution.v2.entity_resolution_pb2.CreateEntityChainsFromTokensRequest,extra_headers: HeaderInput | None=None, timeout_seconds: float | None=None
118
- ) -> UnaryOutput[entityresolution.v2.entity_resolution_pb2.CreateEntityChainsFromTokensResponse]:
119
- """Low-level method to call CreateEntityChainsFromTokens, granting access to errors and metadata"""
120
- url = self.base_url + "/entityresolution.v2.EntityResolutionService/CreateEntityChainsFromTokens"
121
- return await self._connect_client.call_unary(url, req, entityresolution.v2.entity_resolution_pb2.CreateEntityChainsFromTokensResponse,extra_headers, timeout_seconds)
122
-
123
- async def create_entity_chains_from_tokens(
124
- self, req: entityresolution.v2.entity_resolution_pb2.CreateEntityChainsFromTokensRequest,extra_headers: HeaderInput | None=None, timeout_seconds: float | None=None
125
- ) -> entityresolution.v2.entity_resolution_pb2.CreateEntityChainsFromTokensResponse:
126
- response = await self.call_create_entity_chains_from_tokens(req, extra_headers, timeout_seconds)
127
- err = response.error()
128
- if err is not None:
129
- raise err
130
- msg = response.message()
131
- if msg is None:
132
- raise ConnectProtocolError('missing response message')
133
- return msg
134
-
135
-
136
- @typing.runtime_checkable
137
- class EntityResolutionServiceProtocol(typing.Protocol):
138
- def resolve_entities(self, req: ClientRequest[entityresolution.v2.entity_resolution_pb2.ResolveEntitiesRequest]) -> ServerResponse[entityresolution.v2.entity_resolution_pb2.ResolveEntitiesResponse]:
139
- ...
140
- def create_entity_chains_from_tokens(self, req: ClientRequest[entityresolution.v2.entity_resolution_pb2.CreateEntityChainsFromTokensRequest]) -> ServerResponse[entityresolution.v2.entity_resolution_pb2.CreateEntityChainsFromTokensResponse]:
141
- ...
142
-
143
- ENTITY_RESOLUTION_SERVICE_PATH_PREFIX = "/entityresolution.v2.EntityResolutionService"
144
-
145
- def wsgi_entity_resolution_service(implementation: EntityResolutionServiceProtocol) -> WSGIApplication:
146
- app = ConnectWSGI()
147
- app.register_unary_rpc("/entityresolution.v2.EntityResolutionService/ResolveEntities", implementation.resolve_entities, entityresolution.v2.entity_resolution_pb2.ResolveEntitiesRequest)
148
- app.register_unary_rpc("/entityresolution.v2.EntityResolutionService/CreateEntityChainsFromTokens", implementation.create_entity_chains_from_tokens, entityresolution.v2.entity_resolution_pb2.CreateEntityChainsFromTokensRequest)
149
- return app
@@ -1,192 +0,0 @@
1
- # Generated Connect client code
2
-
3
- from __future__ import annotations
4
- from collections.abc import AsyncIterator
5
- from collections.abc import Iterator
6
- from collections.abc import Iterable
7
- import aiohttp
8
- import urllib3
9
- import typing
10
- import sys
11
-
12
- from connectrpc.client_async import AsyncConnectClient
13
- from connectrpc.client_sync import ConnectClient
14
- from connectrpc.client_protocol import ConnectProtocol
15
- from connectrpc.client_connect import ConnectProtocolError
16
- from connectrpc.headers import HeaderInput
17
- from connectrpc.server import ClientRequest
18
- from connectrpc.server import ClientStream
19
- from connectrpc.server import ServerResponse
20
- from connectrpc.server import ServerStream
21
- from connectrpc.server_sync import ConnectWSGI
22
- from connectrpc.streams import StreamInput
23
- from connectrpc.streams import AsyncStreamOutput
24
- from connectrpc.streams import StreamOutput
25
- from connectrpc.unary import UnaryOutput
26
- from connectrpc.unary import ClientStreamingOutput
27
-
28
- if typing.TYPE_CHECKING:
29
- # wsgiref.types was added in Python 3.11.
30
- if sys.version_info >= (3, 11):
31
- from wsgiref.types import WSGIApplication
32
- else:
33
- from _typeshed.wsgi import WSGIApplication
34
-
35
- import google.protobuf.wrappers_pb2
36
- from . import kas_pb2
37
-
38
- class AccessServiceClient:
39
- def __init__(
40
- self,
41
- base_url: str,
42
- http_client: urllib3.PoolManager | None = None,
43
- protocol: ConnectProtocol = ConnectProtocol.CONNECT_PROTOBUF,
44
- ):
45
- self.base_url = base_url
46
- self._connect_client = ConnectClient(http_client, protocol)
47
- def call_public_key(
48
- self, req: kas_pb2.PublicKeyRequest,extra_headers: HeaderInput | None=None, timeout_seconds: float | None=None
49
- ) -> UnaryOutput[kas_pb2.PublicKeyResponse]:
50
- """Low-level method to call PublicKey, granting access to errors and metadata"""
51
- url = self.base_url + "/kas.AccessService/PublicKey"
52
- return self._connect_client.call_unary(url, req, kas_pb2.PublicKeyResponse,extra_headers, timeout_seconds)
53
-
54
-
55
- def public_key(
56
- self, req: kas_pb2.PublicKeyRequest,extra_headers: HeaderInput | None=None, timeout_seconds: float | None=None
57
- ) -> kas_pb2.PublicKeyResponse:
58
- response = self.call_public_key(req, extra_headers, timeout_seconds)
59
- err = response.error()
60
- if err is not None:
61
- raise err
62
- msg = response.message()
63
- if msg is None:
64
- raise ConnectProtocolError('missing response message')
65
- return msg
66
-
67
- def call_legacy_public_key(
68
- self, req: kas_pb2.LegacyPublicKeyRequest,extra_headers: HeaderInput | None=None, timeout_seconds: float | None=None
69
- ) -> UnaryOutput[google.protobuf.wrappers_pb2.StringValue]:
70
- """Low-level method to call LegacyPublicKey, granting access to errors and metadata"""
71
- url = self.base_url + "/kas.AccessService/LegacyPublicKey"
72
- return self._connect_client.call_unary(url, req, google.protobuf.wrappers_pb2.StringValue,extra_headers, timeout_seconds)
73
-
74
-
75
- def legacy_public_key(
76
- self, req: kas_pb2.LegacyPublicKeyRequest,extra_headers: HeaderInput | None=None, timeout_seconds: float | None=None
77
- ) -> google.protobuf.wrappers_pb2.StringValue:
78
- response = self.call_legacy_public_key(req, extra_headers, timeout_seconds)
79
- err = response.error()
80
- if err is not None:
81
- raise err
82
- msg = response.message()
83
- if msg is None:
84
- raise ConnectProtocolError('missing response message')
85
- return msg
86
-
87
- def call_rewrap(
88
- self, req: kas_pb2.RewrapRequest,extra_headers: HeaderInput | None=None, timeout_seconds: float | None=None
89
- ) -> UnaryOutput[kas_pb2.RewrapResponse]:
90
- """Low-level method to call Rewrap, granting access to errors and metadata"""
91
- url = self.base_url + "/kas.AccessService/Rewrap"
92
- return self._connect_client.call_unary(url, req, kas_pb2.RewrapResponse,extra_headers, timeout_seconds)
93
-
94
-
95
- def rewrap(
96
- self, req: kas_pb2.RewrapRequest,extra_headers: HeaderInput | None=None, timeout_seconds: float | None=None
97
- ) -> kas_pb2.RewrapResponse:
98
- response = self.call_rewrap(req, extra_headers, timeout_seconds)
99
- err = response.error()
100
- if err is not None:
101
- raise err
102
- msg = response.message()
103
- if msg is None:
104
- raise ConnectProtocolError('missing response message')
105
- return msg
106
-
107
-
108
- class AsyncAccessServiceClient:
109
- def __init__(
110
- self,
111
- base_url: str,
112
- http_client: aiohttp.ClientSession,
113
- protocol: ConnectProtocol = ConnectProtocol.CONNECT_PROTOBUF,
114
- ):
115
- self.base_url = base_url
116
- self._connect_client = AsyncConnectClient(http_client, protocol)
117
-
118
- async def call_public_key(
119
- self, req: kas_pb2.PublicKeyRequest,extra_headers: HeaderInput | None=None, timeout_seconds: float | None=None
120
- ) -> UnaryOutput[kas_pb2.PublicKeyResponse]:
121
- """Low-level method to call PublicKey, granting access to errors and metadata"""
122
- url = self.base_url + "/kas.AccessService/PublicKey"
123
- return await self._connect_client.call_unary(url, req, kas_pb2.PublicKeyResponse,extra_headers, timeout_seconds)
124
-
125
- async def public_key(
126
- self, req: kas_pb2.PublicKeyRequest,extra_headers: HeaderInput | None=None, timeout_seconds: float | None=None
127
- ) -> kas_pb2.PublicKeyResponse:
128
- response = await self.call_public_key(req, extra_headers, timeout_seconds)
129
- err = response.error()
130
- if err is not None:
131
- raise err
132
- msg = response.message()
133
- if msg is None:
134
- raise ConnectProtocolError('missing response message')
135
- return msg
136
-
137
- async def call_legacy_public_key(
138
- self, req: kas_pb2.LegacyPublicKeyRequest,extra_headers: HeaderInput | None=None, timeout_seconds: float | None=None
139
- ) -> UnaryOutput[google.protobuf.wrappers_pb2.StringValue]:
140
- """Low-level method to call LegacyPublicKey, granting access to errors and metadata"""
141
- url = self.base_url + "/kas.AccessService/LegacyPublicKey"
142
- return await self._connect_client.call_unary(url, req, google.protobuf.wrappers_pb2.StringValue,extra_headers, timeout_seconds)
143
-
144
- async def legacy_public_key(
145
- self, req: kas_pb2.LegacyPublicKeyRequest,extra_headers: HeaderInput | None=None, timeout_seconds: float | None=None
146
- ) -> google.protobuf.wrappers_pb2.StringValue:
147
- response = await self.call_legacy_public_key(req, extra_headers, timeout_seconds)
148
- err = response.error()
149
- if err is not None:
150
- raise err
151
- msg = response.message()
152
- if msg is None:
153
- raise ConnectProtocolError('missing response message')
154
- return msg
155
-
156
- async def call_rewrap(
157
- self, req: kas_pb2.RewrapRequest,extra_headers: HeaderInput | None=None, timeout_seconds: float | None=None
158
- ) -> UnaryOutput[kas_pb2.RewrapResponse]:
159
- """Low-level method to call Rewrap, granting access to errors and metadata"""
160
- url = self.base_url + "/kas.AccessService/Rewrap"
161
- return await self._connect_client.call_unary(url, req, kas_pb2.RewrapResponse,extra_headers, timeout_seconds)
162
-
163
- async def rewrap(
164
- self, req: kas_pb2.RewrapRequest,extra_headers: HeaderInput | None=None, timeout_seconds: float | None=None
165
- ) -> kas_pb2.RewrapResponse:
166
- response = await self.call_rewrap(req, extra_headers, timeout_seconds)
167
- err = response.error()
168
- if err is not None:
169
- raise err
170
- msg = response.message()
171
- if msg is None:
172
- raise ConnectProtocolError('missing response message')
173
- return msg
174
-
175
-
176
- @typing.runtime_checkable
177
- class AccessServiceProtocol(typing.Protocol):
178
- def public_key(self, req: ClientRequest[kas_pb2.PublicKeyRequest]) -> ServerResponse[kas_pb2.PublicKeyResponse]:
179
- ...
180
- def legacy_public_key(self, req: ClientRequest[kas_pb2.LegacyPublicKeyRequest]) -> ServerResponse[google.protobuf.wrappers_pb2.StringValue]:
181
- ...
182
- def rewrap(self, req: ClientRequest[kas_pb2.RewrapRequest]) -> ServerResponse[kas_pb2.RewrapResponse]:
183
- ...
184
-
185
- ACCESS_SERVICE_PATH_PREFIX = "/kas.AccessService"
186
-
187
- def wsgi_access_service(implementation: AccessServiceProtocol) -> WSGIApplication:
188
- app = ConnectWSGI()
189
- app.register_unary_rpc("/kas.AccessService/PublicKey", implementation.public_key, kas_pb2.PublicKeyRequest)
190
- app.register_unary_rpc("/kas.AccessService/LegacyPublicKey", implementation.legacy_public_key, kas_pb2.LegacyPublicKeyRequest)
191
- app.register_unary_rpc("/kas.AccessService/Rewrap", implementation.rewrap, kas_pb2.RewrapRequest)
192
- return app