public void RegisterSubmodelServiceProvider(string id, ISubmodelServiceProvider submodelServiceProvider) { if (!SubmodelServiceProviders.ContainsKey(id)) { SubmodelServiceProviders.Add(id, submodelServiceProvider); } }
static void Main(string[] args) { Console.WriteLine("Hello World!"); AssetAdministrationShell aas = SimpleAssetAdministrationShell.GetAssetAdministrationShell(); ISubmodel testSubmodel = aas.Submodels["TestSubmodel"]; ServerSettings submodelServerSettings = ServerSettings.CreateSettings(); submodelServerSettings.ServerConfig.Hosting.ContentPath = "Content"; submodelServerSettings.ServerConfig.Hosting.Urls.Add("http://localhost:5222"); SubmodelHttpServer submodelServer = new SubmodelHttpServer(submodelServerSettings); ISubmodelServiceProvider submodelServiceProvider = testSubmodel.CreateServiceProvider(); submodelServer.SetServiceProvider(submodelServiceProvider); submodelServiceProvider.UseAutoEndpointRegistration(submodelServerSettings.ServerConfig); Task runSubmodelTask = submodelServer.RunAsync(); ServerSettings aasServerSettings = ServerSettings.CreateSettings(); aasServerSettings.ServerConfig.Hosting.ContentPath = "Content"; aasServerSettings.ServerConfig.Hosting.Urls.Add("http://localhost:5111"); IAssetAdministrationShellServiceProvider serviceProvider = aas.CreateServiceProvider(true); serviceProvider.SubmodelRegistry.RegisterSubmodelServiceProvider(testSubmodel.IdShort, submodelServiceProvider); serviceProvider.UseAutoEndpointRegistration(aasServerSettings.ServerConfig); AssetAdministrationShellHttpServer aasServer = new AssetAdministrationShellHttpServer(aasServerSettings); aasServer.SetServiceProvider(serviceProvider); aasServer.Run(); }
public void SetServiceProvider(ISubmodelServiceProvider submodelServiceProvider) { WebHostBuilder.ConfigureServices(services => { services.AddSingleton <ISubmodelServiceProvider>(submodelServiceProvider); }); }
public IResult <ISubmodel> RetrieveSubmodel(string submodelId) { ISubmodelServiceProvider serviceProvider = GetSubmodelServiceProvider(submodelId); if (serviceProvider != null && serviceProvider.GetBinding() != null) { ISubmodel binding = serviceProvider.GetBinding(); return(new Result <ISubmodel>(true, binding)); } return(new Result <ISubmodel>(false, new NotFoundMessage("Submodel Service Provider"))); }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddStandardImplementation(); Assembly controllerAssembly = Assembly.Load(ControllerAssemblyName); services.AddCors(); services.AddMvc() .AddApplicationPart(controllerAssembly) .AddControllersAsServices() .AddNewtonsoftJson(options => options.GetDefaultMvcJsonOptions(services)); services.AddRazorPages(options => { string pageName = ServerSettings.ServerConfig?.DefaultRoute ?? "/Index"; options.Conventions.AddPageRoute(pageName, ""); }); //Check whether Submodel Service Provider exists and bind it to the Submodel-Services-Controller services.AddTransient(ctx => { ISubmodelServiceProvider submodelServiceProvider = ctx .GetRequiredService <ISubmodelRepositoryServiceProvider>() .GetSubmodelServiceProvider(submodelId); return(new SubmodelServices(submodelServiceProvider)); }); // Register the Swagger generator, defining one or more Swagger documents services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Version = "v1", Title = "BaSyx Submodel Repository HTTP REST-API", Description = "The full description of the generic BaSyx Submodel Repository HTTP REST-API", Contact = new OpenApiContact { Name = "Constantin Ziesche", Email = "*****@*****.**", Url = new Uri("https://www.bosch.com/de/") }, License = new OpenApiLicense { Name = "EPL-2.0", Url = new Uri("https://www.eclipse.org/legal/epl-2.0/") } }); // Set the comments path for the Swagger JSON and UI. var xmlFile = $"{controllerAssembly.GetName().Name}.xml"; var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile); if (ResourceChecker.CheckResourceAvailability(controllerAssembly, ControllerAssemblyName, xmlFile, true)) { c.IncludeXmlComments(xmlPath); } }); services.AddSwaggerGenNewtonsoftSupport(); }
public virtual IResult <ISubmodelDescriptor> RegisterSubmodelServiceProvider(string submodelId, ISubmodelServiceProvider submodelServiceProvider) { if (SubmodelServiceProviders.ContainsKey(submodelId)) { SubmodelServiceProviders[submodelId] = submodelServiceProvider; } else { SubmodelServiceProviders.Add(submodelId, submodelServiceProvider); } return(new Result <ISubmodelDescriptor>(true, submodelServiceProvider.ServiceDescriptor)); }
public static void UseAutoEndpointRegistration(this ISubmodelServiceProvider serviceProvider, ServerConfiguration serverConfiguration) { string multiUrl = serverConfiguration.Hosting.Urls.Find(u => u.Contains("+")); if (!string.IsNullOrEmpty(multiUrl)) { Uri uri = new Uri(multiUrl.Replace("+", "localhost")); List <IEndpoint> endpoints = GetNetworkInterfaceBasedEndpoints(uri.Scheme, uri.Port); serviceProvider.UseDefaultEndpointRegistration(endpoints); } else { List <IEndpoint> endpoints = serverConfiguration.Hosting.Urls.ConvertAll(EndpointConverter); serviceProvider.UseDefaultEndpointRegistration(endpoints); } }
public static void UseDefaultEndpointRegistration(this ISubmodelServiceProvider serviceProvider, IEnumerable <IEndpoint> endpoints) { List <IEndpoint> submodelEndpoints = new List <IEndpoint>(); foreach (var endpoint in endpoints) { string epAddress = endpoint.Address; if (!epAddress.EndsWith("/submodel")) { epAddress = epAddress + (epAddress.EndsWith("/") ? "" : "/") + "submodel"; } submodelEndpoints.Add(EndpointFactory.CreateEndpoint(endpoint.Type, epAddress, endpoint.Security)); } serviceProvider.ServiceDescriptor.AddEndpoints(submodelEndpoints); }
public IResult <ISubmodel> CreateSubmodel(ISubmodel submodel) { if (submodel == null) { return(new Result <ISubmodel>(new ArgumentNullException(nameof(submodel)))); } RegisterSubmodelServiceProvider(submodel.IdShort, submodel.CreateServiceProvider()); ISubmodelServiceProvider serviceProvider = GetSubmodelServiceProvider(submodel.IdShort); if (serviceProvider != null && serviceProvider.GetBinding() != null) { return(new Result <ISubmodel>(true, serviceProvider.GetBinding())); } else { return(new Result <ISubmodel>(false, new Message(MessageType.Error, "Could not retrieve Submodel Service Provider"))); } }
private static void LoadSingleShell() { AssetAdministrationShell aas = SimpleAssetAdministrationShell.SimpleAssetAdministrationShell.GetAssetAdministrationShell(); ISubmodel testSubmodel = aas.Submodels["TestSubmodel"]; ServerSettings submodelServerSettings = ServerSettings.CreateSettings(); submodelServerSettings.ServerConfig.Hosting.ContentPath = "Content"; submodelServerSettings.ServerConfig.Hosting.Urls.Add("http://localhost:5222"); SubmodelHttpServer submodelServer = new SubmodelHttpServer(submodelServerSettings); ISubmodelServiceProvider submodelServiceProvider = testSubmodel.CreateServiceProvider(); submodelServer.SetServiceProvider(submodelServiceProvider); submodelServiceProvider.UseAutoEndpointRegistration(submodelServerSettings.ServerConfig); submodelServer.RunAsync(); ServerSettings aasServerSettings = ServerSettings.CreateSettings(); aasServerSettings.ServerConfig.Hosting.ContentPath = "Content"; aasServerSettings.ServerConfig.Hosting.Urls.Add("http://localhost:5111"); IAssetAdministrationShellServiceProvider aasServiceProvider = aas.CreateServiceProvider(true); aasServiceProvider.SubmodelRegistry.RegisterSubmodelServiceProvider(testSubmodel.IdShort, submodelServiceProvider); aasServiceProvider.UseAutoEndpointRegistration(aasServerSettings.ServerConfig); AssetAdministrationShellHttpServer aasServer = new AssetAdministrationShellHttpServer(aasServerSettings); aasServer.SetServiceProvider(aasServiceProvider); aasServer.ApplicationStopping = () => { registryClient.DeleteAssetAdministrationShell(aas.Identification.Id); }; aasServer.RunAsync(); registryClient.CreateAssetAdministrationShell(new AssetAdministrationShellDescriptor(aas, aasServiceProvider.ServiceDescriptor.Endpoints)); registryClient.CreateSubmodel(aas.Identification.Id, new SubmodelDescriptor(testSubmodel, submodelServiceProvider.ServiceDescriptor.Endpoints)); }
public SubmodelServices(ISubmodelServiceProvider submodelServiceProvider) { this.submodelServiceProvider = submodelServiceProvider; ServiceDescriptor = submodelServiceProvider?.ServiceDescriptor; }
public IndexModel(ISubmodelServiceProvider provider) { ServiceProvider = provider; }
public void RegisterSubmodelServiceProvider(string id, ISubmodelServiceProvider submodelServiceProvider) { repository.RegisterSubmodelServiceProvider(id, submodelServiceProvider); }
public void RegisterSubmodelServiceProvider(string id, ISubmodelServiceProvider submodelServiceProvider) { assetAdministrationShellServiceProvider.SubmodelRegistry.RegisterSubmodelServiceProvider(id, submodelServiceProvider); }
public IResult <ISubmodelDescriptor> RegisterSubmodelServiceProvider(string id, ISubmodelServiceProvider submodelServiceProvider) { var request = base.CreateJsonContentRequest(GetUri(SUBMODELS, id, BINDING), HttpMethod.Post, submodelServiceProvider.ServiceDescriptor); var response = base.SendRequest(request, REQUEST_TIMEOUT); return(base.EvaluateResponse <ISubmodelDescriptor>(response, response.Entity)); }