-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
77c80c2
commit d70b293
Showing
5 changed files
with
401 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,92 @@ | ||
from indykite_sdk.indykite.authorization.v1beta1 import authorization_service_pb2 as pb2 | ||
from indykite_sdk.indykite.identity.v1beta2 import attributes_pb2 as attributes | ||
from indykite_sdk.indykite.identity.v1beta2 import model_pb2 as model | ||
from indykite_sdk.indykite.objects.v1beta1 import struct_pb2 as pb2_struct | ||
from indykite_sdk.indykite.authorization.v1beta1 import model_pb2 as pb2_model | ||
from indykite_sdk.model.what_authorized import WhatAuthorizedResponse | ||
import sys | ||
import indykite_sdk.utils.logger as logger | ||
|
||
|
||
def what_authorized_digital_twin(self, digital_twin_id, tenant_id, resource_types=[], options={}): | ||
sys.excepthook = logger.handle_excepthook | ||
try: | ||
response = self.stub.WhatAuthorized( | ||
pb2.WhatAuthorizedRequest( | ||
subject=pb2_model.Subject( | ||
digital_twin_identifier=model.DigitalTwinIdentifier( | ||
digital_twin=model.DigitalTwin( | ||
id=str(digital_twin_id), | ||
tenant_id=str(tenant_id) | ||
) | ||
) | ||
), | ||
resource_types=request_resource_type(resource_types), | ||
options=request_options(options) | ||
) | ||
) | ||
if not response: | ||
return None | ||
return WhatAuthorizedResponse.deserialize(response) | ||
except Exception as exception: | ||
return logger.logger_error(exception) | ||
|
||
|
||
def what_authorized_token(self, access_token, resource_types=[], options={}): | ||
sys.excepthook = logger.handle_excepthook | ||
try: | ||
response = self.stub.WhatAuthorized( | ||
pb2.WhatAuthorizedRequest( | ||
subject=pb2_model.Subject( | ||
digital_twin_identifier=model.DigitalTwinIdentifier( | ||
access_token=str(access_token) | ||
) | ||
), | ||
resource_types=request_resource_type(resource_types), | ||
options=request_options(options) | ||
) | ||
) | ||
if not response: | ||
return None | ||
return WhatAuthorizedResponse.deserialize(response) | ||
except Exception as exception: | ||
return logger.logger_error(exception) | ||
|
||
|
||
def what_authorized_property_filter(self, type_filter, value, resource_types=[], options={}): | ||
sys.excepthook = logger.handle_excepthook | ||
try: | ||
response = self.stub.WhatAuthorized( | ||
pb2.WhatAuthorizedRequest( | ||
subject=pb2_model.Subject( | ||
digital_twin_identifier=model.DigitalTwinIdentifier( | ||
property_filter=attributes.PropertyFilter( | ||
type=str(type_filter), | ||
value=pb2_struct.Value(string_value=value) | ||
) | ||
) | ||
), | ||
resource_types=request_resource_type(resource_types), | ||
options=request_options(options) | ||
) | ||
) | ||
if not response: | ||
return None | ||
return WhatAuthorizedResponse.deserialize(response) | ||
except Exception as exception: | ||
return logger.logger_error(exception) | ||
|
||
|
||
def request_resource_type(resource_types): | ||
return [ | ||
pb2.WhatAuthorizedRequest.ResourceType(type=r.type, actions=list(r.actions)) | ||
for r in resource_types | ||
] | ||
|
||
|
||
def request_options(options): | ||
options_dict = { | ||
k: pb2_model.Option(string_value=str(v)) | ||
for k, v in options.items() | ||
} | ||
return options_dict |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
from indykite_sdk.utils import timestamp_to_date | ||
from google.protobuf.json_format import MessageToJson, MessageToDict | ||
import indykite_sdk.utils.logger as logger | ||
|
||
|
||
class WhatAuthorizedResponse: | ||
@classmethod | ||
def deserialize(cls, message): | ||
if message is None: | ||
return None | ||
|
||
try: | ||
message_dict = MessageToDict(message, preserving_proto_field_name=True) | ||
if message_dict and message_dict["decisions"]: | ||
what_authorized_response = WhatAuthorizedResponse( | ||
decision_time=timestamp_to_date(message.decision_time), | ||
decisions=message_dict["decisions"] | ||
) | ||
return what_authorized_response | ||
except Exception as exception: | ||
return logger.logger_error(exception) | ||
|
||
def __init__(self, decision_time, decisions): | ||
self.decision_time = decision_time, | ||
self.decisions = decisions | ||
|
||
|
||
class WhatAuthorizedResourceTypes: | ||
def __init__(self, type, actions=[]): | ||
self.type = type | ||
self.actions = actions | ||
|
||
|
||
class WhatAuthorizedDecisions: | ||
def __init__(self, decision, allow_action): | ||
self.decision = decision | ||
self.allow_action = allow_action | ||
|
||
|
||
class WhatAuthorizedResponseActions: | ||
def __init__(self, resources=[]): | ||
self.resources = resources | ||
|
||
|
||
class WhatAuthorizedResponseResources: | ||
def __init__(self, external_id): | ||
self.external_id = external_id | ||
|
||
|
||
class WhatAuthorizedResponseResourceTypes: | ||
def __init__(self, actions={}): | ||
self.type = type | ||
self.actions = actions |
Oops, something went wrong.