Skip to content
Snippets Groups Projects
Commit bcba08be authored by Ahmed Osman's avatar Ahmed Osman
Browse files

latest demo2 updates

parent 0bcd7d27
No related branches found
No related tags found
No related merge requests found
......@@ -2,7 +2,7 @@ import asyncio
from uuid import uuid4
from typing import Callable
from s3i.broker import BrokerAMQP
from s3i import broker_message
from s3i import broker_message, BrokerAMQP
from s3i.exception import S3IBMessageError
from basyx.aas.adapter.json.json_serialization import AASToJsonEncoder
from basyx.aas.adapter.json.json_deserialization import AASFromJsonDecoder
......@@ -74,7 +74,7 @@ class S3IBServer:
req_path = helpers.id_short_path_from_path(path)
if obs_path == req_path:
triggered_events.append(event)
logger.info(f"[Event] [{event.message_topic}] {event.id_short} was triggered")
logger.info(f"{bcolors.OKGREEN}[Event] [{event.message_topic}] {event.id_short} was triggered{bcolors.ENDC}")
return triggered_events
......@@ -94,7 +94,7 @@ class S3IBServer:
received_msg_id = msg.base_msg["identifier"]
message_type = msg.base_msg["messageType"]
logger.info(f"[S3I] Received {message_type} from {receiver_id}")
logger.info(f"{bcolors.OKGREEN}[S3I] Received {message_type} from {receiver_id}{bcolors.ENDC}")
if self.security_enabled and not self.opa.query(receiver_id, s3ib_to_rest[message_type], helpers.id_short_path_from_path(path)):
reply = broker_message.UserMessage()
......@@ -223,13 +223,15 @@ class S3IBAsyncClient:
ok = msg.base_msg.get("ok")
results = msg.base_msg.get("results")
logger.info(f"[S3I] Received {message_type} from {sender}")
logger.info(f"{bcolors.OKGREEN}[S3I] Received {message_type} from {sender}{bcolors.ENDC}")
if message_type == "userMessage":
logger.info(f"{bcolors.OKGREEN}[S3I] text: {msg.base_msg.get('text')}{bcolors.ENDC}")
if message_type == "eventMessage":
content = msg.base_msg.get("content")
topic = msg.base_msg.get("topic")
timestamp = msg.base_msg.get("timestamp")
logger.info(f"[Event] [{topic}] [{datetime.fromtimestamp(timestamp)}] {content}")
logger.info(f"{bcolors.OKGREEN}[Event] [{topic}] [{datetime.fromtimestamp(timestamp)}] {content}{bcolors.ENDC}")
self.requests[topic].set_result(content)
elif not self.requests.get(msg_id):
for future, attributes in self.conditionals.items():
......@@ -368,4 +370,14 @@ class S3IBAsyncClient:
await future
return future.result()
class bcolors:
HEADER = '\033[95m'
OKBLUE = '\033[94m'
OKCYAN = '\033[96m'
OKGREEN = '\033[92m'
WARNING = '\033[93m'
FAIL = '\033[91m'
ENDC = '\033[0m'
BOLD = '\033[1m'
UNDERLINE = '\033[4m'
......@@ -11,7 +11,7 @@ import logging
import datetime
import base64
from urllib.parse import quote
import time
import requests
import api
import broker_api
......@@ -34,13 +34,15 @@ dzwald_secret = "syhdDLoC9HSov8nuw2IK6YixTK9072wy"
forestmanager_hmi_id = "s3i:e8ef672c-109b-4c36-8999-f4ababa0bffc"
forstify_hmi_id = "s3i:8a8ee1ab-63d2-42ea-92d1-1ae682a55e7a"
forstify_hmi_id_2 = "s3i:02946b44-9308-462e-b290-0e5f616914ff"
forestmanager_waldbesitzer_id = "s3i:3f23c856-d252-42c9-a590-0b87d87478d4"
def authenticate():
idp = IdentityProvider(
grant_type="client_credentials",
client_id=dzwald_id,
client_secret=dzwald_secret,
client_secret=dzwald_secret
)
return idp
......@@ -454,12 +456,10 @@ def create_aas():
holzpreisbereiche),
)
rules = [security.AccessPermissionRule(forestmanager_hmi_id,
security.PermissionKind.ALLOW,
security.Permission.READ),
security.AccessPermissionRule(forestmanager_hmi_id,
security.PermissionKind.ALLOW,
security.Permission.WRITE)]
users: List[str] = [forestmanager_hmi_id, forestmanager_waldbesitzer_id, forstify_hmi_id_2, forstify_hmi_id]
rules = [security.AccessPermissionRule(x, security.PermissionKind.ALLOW, security.Permission.READ) for x in users]
rules.extend([security.AccessPermissionRule(x, security.PermissionKind.ALLOW, security.Permission.WRITE) for x in users])
rules_smc = security.AccessPermissionCollection(
target=model.ModelReference.from_referable(aas_dz_wald),
......@@ -527,6 +527,10 @@ def getHolzpreisbereich(provider: api.ModelProvider, HolzlisteId: str):
holzpreisbereiche: model.SubmodelElementList = provider.getValue(
f"/aas/submodels/{helpers.encode_id(holzpreisbereiche_id)}/submodel"
)
#headers = {"Content-Type": "application/json", "X-API-KEY": "1234"}
#serializer = json_serialization.AASToJsonEncoder()
#reply = requests.get(url="https://forstify-app-research.azurewebsites.net/api/v2/external/priceestimate",
# headers=headers, data=serializer.encode(holzliste_sm))
utils.add_items_to_se_list(holzpreisbereiche, [holzpreisbereich])
return reply
......@@ -572,9 +576,10 @@ def main():
HolzlisteId = 'https://www.company.com/holzliste/1'
loop = asyncio.get_event_loop()
#print(getHolzpreisbereich(provider, HolzlisteId))
# set last flag to True to enable security
server = broker_api.S3IBServer(access_token, provider, dzwald_id, loop, "https://www.company.com/security", False)
server = broker_api.S3IBServer(access_token, provider, dzwald_id, loop, "https://www.company.com/security", True)
# add callable associated with operation 'getHolzpreisbereich' to server
callable = lambda **kwargs : getHolzpreisbereich(provider, **kwargs)
......
......@@ -83,7 +83,9 @@ async def main():
f"/aas/submodels/{helpers.encode_id('https://www.company.com/security')}/submodel",
security_sm)
await client.sendUserMessage(forestmanager_hmi_id, "s3ibs://" + forestmanager_hmi_id, "Authorized", "Authorized")
await client.sendUserMessage(forestmanager_hmi_id, "s3ibs://" + forestmanager_hmi_id,
"Authorization Requested",
"Authorization Requested")
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment