Ejemplo n.º 1
0
 public static Uri GetResourceUri(this IOicResourceRepository resource)
 {
     throw new NotImplementedException();
     //return new UriBuilder($"oic://{resource.Device.Endpoint.Authority}")
     //{
     //    Path = resource.RelativeUri
     //}.Uri;
 }
Ejemplo n.º 2
0
 public ResourceRepositoryMiddleware(RequestDelegate next, IServiceProvider services, IOptions <ResourceRepositoryOptions> options)
 {
     _next               = next;
     _options            = options.Value;
     _oicConfiguration   = services.GetRequiredService <OicConfiguration>();
     _resourceRepository = _options.ResourceRepository
                           ?? (_options.ResourceRepositoryType != null
                             ? (IOicResourceRepository)ActivatorUtilities.CreateInstance(services, _options.ResourceRepositoryType, _options.ResourceRepositoryArgs)
                             : ActivatorUtilities.CreateInstance <DefaultResourceRepository>(services));
 }
Ejemplo n.º 3
0
        public ResourceRepositoryContext(OicContext context, ResourceRepositoryOptions options, IOicResourceRepository resourceProvider)
        {
            _context          = context ?? throw new ArgumentNullException(nameof(context));
            _options          = options ?? throw new ArgumentNullException(nameof(options));
            _resourceProvider = resourceProvider ?? throw new ArgumentNullException(nameof(resourceProvider));

            // Since request path is a segment, ensure it is surrounded with slashes.
            _requestPath = _options.RequestPath ?? "/";
            if (!_requestPath.EndsWith("/"))
            {
                _requestPath += "/";
            }
            if (!_requestPath.StartsWith("/"))
            {
                _requestPath = "/" + _requestPath;
            }
        }
Ejemplo n.º 4
0
        public DefaultResourceRepository(IHostingEnvironment hostingEnvironment, ILogger <DefaultResourceRepository> logger, IServiceProvider service)
        {
            _logger             = logger;
            _hostingEnvironment = hostingEnvironment;

            // First, check IServiceProvider for any IOicResourceRepository instances
            var repositoryServices = service.GetServices <IOicResourceRepository>();

            var defaultService = repositoryServices.FirstOrDefault(r => r.GetType().GetCustomAttribute <DefaultResourceRepositoryAttribute>() != null);

            if (defaultService != null)
            {
                _resourceRepository = defaultService;
            }
            else if (repositoryServices.Count() == 1)
            {
                _resourceRepository = repositoryServices.First();
            }
            else if (repositoryServices.Count() > 1)
            {
                throw new NotSupportedException($"Multiple {nameof(IOicResourceRepository)} instances were provided in {nameof(IServiceProvider)}. Please add {nameof(DefaultResourceRepositoryAttribute)} to one, or remove multiple instances");
            }
            else
            {
                // TODO: IOicRepositoryContext to return a repository?
                var repositories = Assembly.Load(new AssemblyName(hostingEnvironment.ApplicationName))
                                   .ExportedTypes
                                   .Where(t => typeof(IOicResourceRepository).IsAssignableFrom(t));

                var repository = GetRepository(repositories);

                if (repository != null)
                {
                    _resourceRepository = (IOicResourceRepository)ActivatorUtilities.CreateInstance(service, repository);
                }
            }
        }