# SPDX-License-Identifier: Apache-2.0

from grpc_gen.assessment_pb2_grpc import AssessmentStub
import grpc
import os

LOCAL_CLOUDITOR_DEPLOY = os.environ.get("local_clouditor_deploy").lower() in ('true', '1', 't')
CLOUDITOR_HOST = os.environ.get("clouditor_host")
CLOUDITOR_PORT = int(os.environ.get("clouditor_port"))

class ForwardEvidence(object):

    def __init__(self, logger):
        if LOCAL_CLOUDITOR_DEPLOY:
            self.channel = grpc.insecure_channel('{}:{}'.format(CLOUDITOR_HOST, CLOUDITOR_PORT))
        else:
            ssl_metadata = grpc.ssl_channel_credentials()
            self.channel = grpc.secure_channel('{}:{}'.format(CLOUDITOR_HOST, CLOUDITOR_PORT), ssl_metadata)

        self.stub = AssessmentStub(self.channel)
        self.logger = logger

    def send_evidence(self, assessevidencerequest, token):
        try:
            if token is not None:
                metadata = [('authorization', 'Bearer ' + token)]
            else:
                metadata = None

            response = self.stub.AssessEvidence(assessevidencerequest, metadata=metadata)
            self.logger.info('gRPC evidence forwarded: ' + str(response))
        except grpc.RpcError as err:
            self.logger.error(err)
            self.logger.error(err.details())
            self.logger.error('{}, {}'.format(err.code().name, err.code().value))