示例#1
0
        public IResult <ISubmodelDescriptor> CreateSubmodel(string aasId, ISubmodelDescriptor submodel)
        {
            var request  = base.CreateJsonContentRequest(GetUri(aasId, SubmodelPath), HttpMethod.Post, submodel);
            var response = base.SendRequest(request, Timeout);

            return(base.EvaluateResponse <ISubmodelDescriptor>(response, response.Entity));
        }
示例#2
0
        public SubmodelHttpClient(ISubmodelDescriptor submodelDescriptor) : this()
        {
            submodelDescriptor = submodelDescriptor ?? throw new ArgumentNullException(nameof(submodelDescriptor));
            HttpEndpoint httpEndpoint = submodelDescriptor.Endpoints?.OfType <HttpEndpoint>()?.FirstOrDefault();

            if (httpEndpoint == null || string.IsNullOrEmpty(httpEndpoint.Address))
            {
                throw new Exception("There is no http endpoint for instantiating a client");
            }
            else
            {
                if (!httpEndpoint.Address.EndsWith(SEPARATOR + SUBMODEL) || !httpEndpoint.Address.EndsWith(SEPARATOR + SUBMODEL + SEPARATOR))
                {
                    Endpoint = new Uri(httpEndpoint.Address + SEPARATOR + SUBMODEL);
                }
                else
                {
                    Endpoint = new Uri(httpEndpoint.Address);
                }
            }
        }
示例#3
0
        public IResult <ISubmodelDescriptor> RetrieveSubmodel(string aasId, string submodelId)
        {
            if (string.IsNullOrEmpty(aasId))
            {
                return(new Result <ISubmodelDescriptor>(new ArgumentNullException(nameof(aasId))));
            }
            if (string.IsNullOrEmpty(submodelId))
            {
                return(new Result <ISubmodelDescriptor>(new ArgumentNullException(nameof(submodelId))));
            }

            string aasIdHash        = GetHashString(aasId);
            string aasDirectoryPath = Path.Combine(FolderPath, aasIdHash);

            if (Directory.Exists(aasDirectoryPath))
            {
                string submodelPath = Path.Combine(aasDirectoryPath, SubmodelFolder, submodelId) + ".json";
                if (File.Exists(submodelPath))
                {
                    try
                    {
                        string submodelContent         = File.ReadAllText(submodelPath);
                        ISubmodelDescriptor descriptor = JsonConvert.DeserializeObject <ISubmodelDescriptor>(submodelContent, JsonSerializerSettings);
                        return(new Result <ISubmodelDescriptor>(true, descriptor));
                    }
                    catch (Exception e)
                    {
                        return(new Result <ISubmodelDescriptor>(e));
                    }
                }
                else
                {
                    return(new Result <ISubmodelDescriptor>(false, new NotFoundMessage($"Submodel with {submodelId}")));
                }
            }
            else
            {
                return(new Result <ISubmodelDescriptor>(false, new NotFoundMessage($"Asset Administration Shell with {aasId}")));
            }
        }
示例#4
0
        public IResult <ISubmodelDescriptor> CreateSubmodel(string aasId, ISubmodelDescriptor submodel)
        {
            if (string.IsNullOrEmpty(aasId))
            {
                return(new Result <ISubmodelDescriptor>(new ArgumentNullException(nameof(aasId))));
            }
            if (submodel == null || string.IsNullOrEmpty(submodel.IdShort))
            {
                return(new Result <ISubmodelDescriptor>(new ArgumentNullException("submodel.IdShort")));
            }

            string aasIdHash        = GetHashString(aasId);
            string aasDirectoryPath = Path.Combine(FolderPath, aasIdHash);

            if (!Directory.Exists(aasDirectoryPath))
            {
                return(new Result <ISubmodelDescriptor>(false, new Message(MessageType.Error, "AssetAdministrationShell does not exist - register AAS first")));
            }

            try
            {
                string submodelDirectory = Path.Combine(aasDirectoryPath, SubmodelFolder);
                string submodelContent   = JsonConvert.SerializeObject(submodel, JsonSerializerSettings);
                if (!Directory.Exists(submodelDirectory))
                {
                    Directory.CreateDirectory(submodelDirectory);
                }

                string submodelFilePath = Path.Combine(submodelDirectory, submodel.IdShort) + ".json";
                File.WriteAllText(submodelFilePath, submodelContent);

                IResult <ISubmodelDescriptor> readSubmodel = RetrieveSubmodel(aasId, submodel.IdShort);
                return(readSubmodel);
            }
            catch (Exception e)
            {
                return(new Result <ISubmodelDescriptor>(e));
            }
        }
示例#5
0
 public SubmodelServices(ISubmodelServiceProvider submodelServiceProvider)
 {
     this.submodelServiceProvider = submodelServiceProvider;
     ServiceDescriptor            = submodelServiceProvider?.ServiceDescriptor;
 }
 public DistributedSubmodelServiceProvider(ISubmodelClientFactory submodelClientFactory, ISubmodelDescriptor serviceDescriptor)
 {
     ServiceDescriptor = serviceDescriptor;
     submodelClient    = submodelClientFactory.CreateSubmodelClient(serviceDescriptor);
 }
示例#7
0
 public SubmodelServiceProvider(ISubmodel submodel, ISubmodelDescriptor submodelDescriptor) : this()
 {
     Submodel          = submodel;
     ServiceDescriptor = submodelDescriptor;
 }
 public IResult <ISubmodelDescriptor> CreateSubmodel(string aasId, ISubmodelDescriptor submodel)
 {
     return(aasRegistryImpl.CreateSubmodel(aasId, submodel));
 }
        public IActionResult RegisterSubmodelAtAssetAdministrationShell(string aasId, [FromBody] ISubmodelDescriptor submodelDescriptor)
        {
            if (string.IsNullOrEmpty(aasId))
            {
                return(ResultHandling.NullResult(nameof(aasId)));
            }
            if (submodelDescriptor == null)
            {
                return(ResultHandling.NullResult(nameof(submodelDescriptor)));
            }

            aasId = HttpUtility.UrlDecode(aasId);
            var result = CreateSubmodel(aasId, submodelDescriptor);

            return(result.CreateActionResult(CrudOperation.Create, "api/v1/registry/" + aasId + "/submodels/" + submodelDescriptor.IdShort));
        }