コード例 #1
0
 public DocDbRestUtility(IConfigurationProvider configProvider)
     : this(configProvider.GetConfigurationSettingValue("docdb.EndpointUrl"),
            configProvider.GetConfigurationSettingValue("docdb.PrimaryAuthorizationKey"),
            configProvider.GetConfigurationSettingValue("docdb.DatabaseId"),
            configProvider.GetConfigurationSettingValue("docdb.DocumentCollectionId"))
 {
 }
        public VirtualDeviceTableStorage(IConfigurationProvider configProvider, IAzureTableStorageClientFactory tableStorageClientFactory)
        {
            var storageConnectionString = configProvider.GetConfigurationSettingValue("device.StorageConnectionString");
            var deviceTableName         = configProvider.GetConfigurationSettingValue("device.TableName");

            _azureTableStorageClient = tableStorageClientFactory.CreateClient(storageConnectionString, deviceTableName);
        }
コード例 #3
0
 public DocDbRestHelper(IConfigurationProvider configProvider)
 {
     this._docDbEndpoint  = configProvider.GetConfigurationSettingValue("docdb.EndpointUrl");
     this._docDbKey       = configProvider.GetConfigurationSettingValue("docdb.PrimaryAuthorizationKey");
     this._dbName         = configProvider.GetConfigurationSettingValue("docdb.DatabaseId");
     this._collectionName = configProvider.GetConfigurationSettingValue("docdb.DocumentCollectionId");
 }
コード例 #4
0
 public DocDbRestHelper(IConfigurationProvider configProvider)
 {
     this._docDbEndpoint = configProvider.GetConfigurationSettingValue("docdb.EndpointUrl");
     this._docDbKey = configProvider.GetConfigurationSettingValue("docdb.PrimaryAuthorizationKey");
     this._dbName = configProvider.GetConfigurationSettingValue("docdb.DatabaseId");
     this._collectionName = configProvider.GetConfigurationSettingValue("docdb.DocumentCollectionId");
 }
コード例 #5
0
        public void ConfigureAuth(IAppBuilder app, IConfigurationProvider configProvider)
        {
            string aadClientId = configProvider.GetConfigurationSettingValue("ida.AADClientId");
            string aadInstance = configProvider.GetConfigurationSettingValue("ida.AADInstance");
            string aadTenant   = configProvider.GetConfigurationSettingValue("ida.AADTenant");
            string authority   = string.Format(CultureInfo.InvariantCulture, aadInstance, aadTenant);

            app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);

            app.UseCookieAuthentication(new CookieAuthenticationOptions());

            app.UseOpenIdConnectAuthentication(
                new OpenIdConnectAuthenticationOptions
            {
                ClientId      = aadClientId,
                Authority     = authority,
                Notifications = new OpenIdConnectAuthenticationNotifications
                {
                    AuthenticationFailed = context =>
                    {
                        string appBaseUrl = context.Request.Scheme + "://" + context.Request.Host + context.Request.PathBase;

                        context.ProtocolMessage.RedirectUri = appBaseUrl + "/";
                        context.HandleResponse();
                        context.Response.Redirect(context.ProtocolMessage.RedirectUri);

                        return(Task.FromResult(0));
                    }
                }
            });
        }
コード例 #6
0
        public void ConfigureAuth(IAppBuilder app, IConfigurationProvider configProvider)
        {
            string aadClientId = configProvider.GetConfigurationSettingValue("ida.AADClientId");
            string aadInstance = configProvider.GetConfigurationSettingValue("ida.AADInstance");
            string aadTenant = configProvider.GetConfigurationSettingValue("ida.AADTenant");
            string authority = string.Format(CultureInfo.InvariantCulture, aadInstance, aadTenant);

            app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);

            app.UseCookieAuthentication(new CookieAuthenticationOptions());

            app.UseOpenIdConnectAuthentication(
                new OpenIdConnectAuthenticationOptions
                {
                    ClientId = aadClientId,
                    Authority = authority,
                    Notifications = new OpenIdConnectAuthenticationNotifications
                    {
                        AuthenticationFailed = context =>
                        {
                            string appBaseUrl = context.Request.Scheme + "://" + context.Request.Host + context.Request.PathBase;

                            context.ProtocolMessage.RedirectUri = appBaseUrl + "/";
                            context.HandleResponse();
                            context.Response.Redirect(context.ProtocolMessage.RedirectUri);

                            return Task.FromResult(0);
                        }
                    }
                });
        }
コード例 #7
0
 public MLDataProcessorHost(
     IConfigurationProvider configurationProvider) :
     base(configurationProvider.GetConfigurationSettingValue("eventHub.HubName"),
          configurationProvider.GetConfigurationSettingValue("eventHub.ConnectionString"),
          configurationProvider.GetConfigurationSettingValue("eventHub.StorageConnectionString"),
          configurationProvider)
 {
 }
コード例 #8
0
 public ActionMappingRepository(IConfigurationProvider configurationProvider, IBlobStorageClientFactory blobStorageClientFactory)
 {
     string blobName = configurationProvider.GetConfigurationSettingValue("ActionMappingStoreBlobName");
     string connectionString = configurationProvider.GetConfigurationSettingValue("device.StorageConnectionString");
     string containerName = configurationProvider.GetConfigurationSettingValue("ActionMappingStoreContainerName");
     _blobName = blobName;
     _blobStorageManager = blobStorageClientFactory.CreateClient(connectionString, containerName);
 }
        public ActionMappingRepository(IConfigurationProvider configurationProvider, IBlobStorageClientFactory blobStorageClientFactory)
        {
            string blobName         = configurationProvider.GetConfigurationSettingValue("ActionMappingStoreBlobName");
            string connectionString = configurationProvider.GetConfigurationSettingValue("device.StorageConnectionString");
            string containerName    = configurationProvider.GetConfigurationSettingValue("ActionMappingStoreContainerName");

            _blobName           = blobName;
            _blobStorageManager = blobStorageClientFactory.CreateClient(connectionString, containerName);
        }
コード例 #10
0
        public void ConfigureAuth(IAppBuilder app, IConfigurationProvider configProvider)
        {
            string aadClientId = configProvider.GetConfigurationSettingValue("ida.AADClientId");
            string aadInstance = configProvider.GetConfigurationSettingValue("ida.AADInstance");
            string aadTenant   = configProvider.GetConfigurationSettingValue("ida.AADTenant");
            string authority   = string.Format(CultureInfo.InvariantCulture, aadInstance, aadTenant);

            app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);

            app.UseCookieAuthentication(new CookieAuthenticationOptions());

            app.UseOpenIdConnectAuthentication(
                new OpenIdConnectAuthenticationOptions
            {
                ClientId              = aadClientId,
                Authority             = authority,
                PostLogoutRedirectUri = configProvider.GetConfigurationSettingValue("RedirectUrl"),
                RedirectUri           = configProvider.GetConfigurationSettingValue("RedirectUrl"),

                TokenValidationParameters = new TokenValidationParameters
                {
                    // SaveSigninToken = true,
                    RoleClaimType = "http://schemas.microsoft.com/ws/2008/06/identity/claims/role",
                },
                Notifications = new OpenIdConnectAuthenticationNotifications
                {
                    AuthenticationFailed = async context =>
                    {
                        string appBaseUrl = context.Request.Scheme + "://" + context.Request.Host + context.Request.PathBase;

                        context.ProtocolMessage.RedirectUri = appBaseUrl + "/";
                        context.HandleResponse();
                        context.Response.Redirect(context.ProtocolMessage.RedirectUri);
                        await Task.FromResult(0).ConfigureAwait(false);
                    },
                    RedirectToIdentityProvider = async context =>
                    {
                        context.ProtocolMessage.Prompt = "login";
                        await Task.FromResult(0).ConfigureAwait(false);
                    },
                    AuthorizationCodeReceived = async context =>
                    {
                        /*
                         * var code = context.Code;
                         * ClientCredential credential = new ClientCredential(aadClientId, "DA7uLMjQK9UTDyVQD9nR8k47ahhHJhfRykBcJgTxMSY=");
                         * AuthenticationContext authContext = new AuthenticationContext(authority, TokenCache.DefaultShared);
                         * Uri uri = new Uri(HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Path));
                         * var result = await authContext.AcquireTokenByAuthorizationCodeAsync(code, uri, credential, "https://graph.windows.net").ConfigureAwait(false);
                         * string accessToken = result.AccessToken;
                         * var header = result.CreateAuthorizationHeader();
                         */
                    }
                }
            });

            this.WSFedAuth(app, configProvider);
        }
コード例 #11
0
 public SimulationController(IIotHubRepository iotHubRepository, IConfigurationProvider configProvider)
 {
     this.iotHubRepository        = iotHubRepository;
     this.configurationProvider   = configProvider;
     this.storageConnectionString = configProvider.GetConfigurationSettingValue("device.StorageConnectionString");
     this.telemetryTableName      = configProvider.GetConfigurationSettingValue("TelemetryStoreContainerName");
     this.mlResultTableName       = configProvider.GetConfigurationSettingValue("MLResultTableName");
     this.simulatorStateTableName = configProvider.GetConfigurationSettingValue("SimulatorStateTableName");
 }
コード例 #12
0
ファイル: DocumentDbClient.cs プロジェクト: klavshp/PnIoTPoc
        /// <summary>
        /// Creates a new instance of <see cref="DocumentDBClient{T}"/>
        /// </summary>
        /// <param name="configurationProvider"></param>
        public DocumentDBClient(IConfigurationProvider configurationProvider)
        {
            string endpointUrl             = configurationProvider.GetConfigurationSettingValue("docdb.EndpointUrl");
            string primaryAuthorizationKey = configurationProvider.GetConfigurationSettingValue("docdb.PrimaryAuthorizationKey");

            _client         = new DocumentClient(new Uri(endpointUrl), primaryAuthorizationKey);
            _databaseId     = configurationProvider.GetConfigurationSettingValue("docdb.DatabaseId");
            _collectionName = configurationProvider.GetConfigurationSettingValue("docdb.DocumentCollectionId");
        }
コード例 #13
0
 public SimulationController(IIotHubRepository iotHubRepository, IConfigurationProvider configProvider)
 {
     this.iotHubRepository = iotHubRepository;
     this.configurationProvider = configProvider;
     this.storageConnectionString = configProvider.GetConfigurationSettingValue("device.StorageConnectionString");
     this.telemetryTableName = configProvider.GetConfigurationSettingValue("TelemetryStoreContainerName");
     this.mlResultTableName = configProvider.GetConfigurationSettingValue("MLResultTableName");
     this.simulatorStateTableName = configProvider.GetConfigurationSettingValue("SimulatorStateTableName");
 }
コード例 #14
0
        public void ConfigureAuth(IAppBuilder app, IConfigurationProvider configProvider)
        {
            app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);

            // Primary authentication method for web site to Azure AD via the WsFederation below
            app.UseCookieAuthentication(new CookieAuthenticationOptions());

            string federationMetadataAddress = configProvider.GetConfigurationSettingValue("ida.FederationMetadataAddress");
            string federationRealm = configProvider.GetConfigurationSettingValue("ida.FederationRealm");

            if (string.IsNullOrEmpty(federationMetadataAddress) || string.IsNullOrEmpty(federationRealm))
            {
                throw new ApplicationException("Config issue: Unable to load required federation values from web.config or other configuration source.");
            }

            // check for default values that will cause app to fail to startup with an unhelpful 404 exception
            if (federationMetadataAddress.StartsWith("-- ", StringComparison.Ordinal) ||
                federationRealm.StartsWith("-- ", StringComparison.Ordinal))
            {
                throw new ApplicationException("Config issue: Default federation values from web.config need to be overridden or replaced.");
            }

            app.UseWsFederationAuthentication(
                new WsFederationAuthenticationOptions
                {
                    MetadataAddress = federationMetadataAddress,
                    Wtrealm = federationRealm
                });

            string aadTenant = configProvider.GetConfigurationSettingValue("ida.AADTenant");
            string aadAudience = configProvider.GetConfigurationSettingValue("ida.AADAudience");

            if (string.IsNullOrEmpty(aadTenant) || string.IsNullOrEmpty(aadAudience))
            {
                throw new ApplicationException("Config issue: Unable to load required AAD values from web.config or other configuration source.");
            }

            // check for default values that will cause failure
            if (aadTenant.StartsWith("-- ", StringComparison.Ordinal) ||
                aadAudience.StartsWith("-- ", StringComparison.Ordinal))
            {
                throw new ApplicationException("Config issue: Default AAD values from web.config need to be overridden or replaced.");
            }

            // Fallback authentication method to allow "Authorization: Bearer <token>" in the header for WebAPI calls
            app.UseWindowsAzureActiveDirectoryBearerAuthentication(
                new WindowsAzureActiveDirectoryBearerAuthenticationOptions
                {
                    Tenant = aadTenant,
                    TokenValidationParameters = new TokenValidationParameters
                    {
                        ValidAudience = aadAudience,
                        RoleClaimType = "http://schemas.microsoft.com/identity/claims/scope" // Used to unwrap token roles and provide them to [Authorize(Roles="")] attributes
                    }
                });
        }
コード例 #15
0
        private void WSFedAuth(IAppBuilder app, IConfigurationProvider configProvider)
        {
            /*
             * string federationMetadataAddress = configProvider.GetConfigurationSettingValue("ida.FederationMetadataAddress");
             * string federationRealm = configProvider.GetConfigurationSettingValue("ida.FederationRealm");
             *
             * if (string.IsNullOrEmpty(federationMetadataAddress) || string.IsNullOrEmpty(federationRealm))
             * {
             *  throw new ApplicationException("Config issue: Unable to load required federation values from web.config or other configuration source.");
             * }
             *
             * // check for default values that will cause app to fail to startup with an unhelpful 404 exception
             * if (federationMetadataAddress.StartsWith("-- ", StringComparison.Ordinal) ||
             *  federationRealm.StartsWith("-- ", StringComparison.Ordinal))
             * {
             *  throw new ApplicationException("Config issue: Default federation values from web.config need to be overridden or replaced.");
             * }
             *
             * app.UseWsFederationAuthentication(
             *  new WsFederationAuthenticationOptions
             *  {
             *      MetadataAddress = federationMetadataAddress,
             *      Wtrealm = federationRealm
             *  });
             *
             */

            string aadTenant   = configProvider.GetConfigurationSettingValue("ida.AADTenant");
            string aadAudience = configProvider.GetConfigurationSettingValue("ida.AADAudience");

            if (string.IsNullOrEmpty(aadTenant) || string.IsNullOrEmpty(aadAudience))
            {
                throw new ApplicationException("Config issue: Unable to load required AAD values from web.config or other configuration source.");
            }

            // check for default values that will cause failure
            if (aadTenant.StartsWith("-- ", StringComparison.Ordinal) ||
                aadAudience.StartsWith("-- ", StringComparison.Ordinal))
            {
                throw new ApplicationException("Config issue: Default AAD values from web.config need to be overridden or replaced.");
            }

            // Fallback authentication method to allow "Authorization: Bearer <token>" in the header for WebAPI calls
            app.UseWindowsAzureActiveDirectoryBearerAuthentication(
                new WindowsAzureActiveDirectoryBearerAuthenticationOptions
            {
                Tenant = aadTenant,
                TokenValidationParameters = new TokenValidationParameters
                {
                    ValidAudience = aadAudience,

                    RoleClaimType = "http://schemas.microsoft.com/ws/2008/06/identity/claims/role"     // Used to unwrap token roles and provide them to [Authorize(Roles="")] attributes
                },
            });
        }
コード例 #16
0
        /// <summary>
        /// Initializes a new instance of the AlertsRepository class.
        /// </summary>
        /// <param name="configProvider">
        /// The IConfigurationProvider implementation with which the new 
        /// instance will be initialized.
        /// </param>
        public AlertsRepository(IConfigurationProvider configProvider)
        {
            if (configProvider == null)
            {
                throw new ArgumentNullException("configProvider");
            }

            this.alertsContainerConnectionString = configProvider.GetConfigurationSettingValue("device.StorageConnectionString");
            this.alertsStoreContainerName = configProvider.GetConfigurationSettingValue("AlertsStoreContainerName");
            this.deviceAlertsDataPrefix =configProvider.GetConfigurationSettingValue("DeviceAlertsDataPrefix");
        }
コード例 #17
0
        /// <summary>
        /// Initializes a new instance of the AlertsRepository class.
        /// </summary>
        /// <param name="configProvider">
        /// The IConfigurationProvider implementation with which the new
        /// instance will be initialized.
        /// </param>
        public AlertsRepository(IConfigurationProvider configProvider)
        {
            if (configProvider == null)
            {
                throw new ArgumentNullException("configProvider");
            }

            this.alertsContainerConnectionString = configProvider.GetConfigurationSettingValue("device.StorageConnectionString");
            this.alertsStoreContainerName        = configProvider.GetConfigurationSettingValue("AlertsStoreContainerName");
            this.deviceAlertsDataPrefix          = configProvider.GetConfigurationSettingValue("DeviceAlertsDataPrefix");
        }
        public DocDbRestUtility(IConfigurationProvider configProvider)
        {
            if (configProvider == null)
            {
                throw new ArgumentNullException("configProvider");
            }

            _docDbEndpoint  = configProvider.GetConfigurationSettingValue("docdb.EndpointUrl");
            _docDbKey       = configProvider.GetConfigurationSettingValue("docdb.PrimaryAuthorizationKey");
            _dbName         = configProvider.GetConfigurationSettingValue("docdb.DatabaseId");
            _collectionName = configProvider.GetConfigurationSettingValue("docdb.DocumentCollectionId");
        }
コード例 #19
0
        /// <summary>
        /// Initializes a new instance of the AlertsRepository class.
        /// </summary>
        /// <param name="configProvider">
        /// The IConfigurationProvider implementation with which the new 
        /// instance will be initialized.
        /// </param>
        public AlertsRepository(IConfigurationProvider configProvider, IBlobStorageClientFactory blobStorageClientFactory)
        {
            if (configProvider == null)
            {
                throw new ArgumentNullException("configProvider");
            }

            string alertsContainerConnectionString = configProvider.GetConfigurationSettingValue("device.StorageConnectionString");
            string alertsStoreContainerName = configProvider.GetConfigurationSettingValue("AlertsStoreContainerName");
            this._blobStorageManager = blobStorageClientFactory.CreateClient(alertsContainerConnectionString, alertsStoreContainerName);
            this.deviceAlertsDataPrefix = configProvider.GetConfigurationSettingValue("DeviceAlertsDataPrefix");
        }
        /// <summary>
        /// Initializes a new instance of the DeviceTelemetryRepository class.
        /// </summary>
        /// <param name="configProvider">
        /// The IConfigurationProvider implementation with which to initialize
        /// the new instance.
        /// </param>
        public DeviceTelemetryRepository(IConfigurationProvider configProvider)
        {
            if (configProvider == null)
            {
                throw new ArgumentNullException("configProvider");
            }

            _telemetryContainerName         = configProvider.GetConfigurationSettingValue("TelemetryStoreContainerName");
            _telemetryDataPrefix            = configProvider.GetConfigurationSettingValue("TelemetryDataPrefix");
            _telemetryStoreConnectionString = configProvider.GetConfigurationSettingValue("device.StorageConnectionString");
            _telemetrySummaryPrefix         = configProvider.GetConfigurationSettingValue("TelemetrySummaryPrefix");
        }
コード例 #21
0
        public DocDbRestUtility(IConfigurationProvider configProvider)
        {
            if (configProvider == null)
            {
                throw new ArgumentNullException("configProvider");
            }

            _docDbEndpoint = configProvider.GetConfigurationSettingValue("docdb.EndpointUrl");
            _docDbKey = configProvider.GetConfigurationSettingValue("docdb.PrimaryAuthorizationKey");
            _dbName = configProvider.GetConfigurationSettingValue("docdb.DatabaseId");
            _collectionName = configProvider.GetConfigurationSettingValue("docdb.DocumentCollectionId");
        }
コード例 #22
0
        /// <summary>
        /// Initializes a new instance of the DeviceTelemetryRepository class.
        /// </summary>
        /// <param name="configProvider">
        /// The IConfigurationProvider implementation with which to initialize 
        /// the new instance.
        /// </param>
        public DeviceTelemetryRepository(IConfigurationProvider configProvider)
        {
            if (configProvider == null)
            {
                throw new ArgumentNullException("configProvider");
            }

            _telemetryContainerName = configProvider.GetConfigurationSettingValue("TelemetryStoreContainerName");
            _telemetryDataPrefix = configProvider.GetConfigurationSettingValue("TelemetryDataPrefix");
            _telemetryStoreConnectionString = configProvider.GetConfigurationSettingValue("device.StorageConnectionString");
            _telemetrySummaryPrefix = configProvider.GetConfigurationSettingValue("TelemetrySummaryPrefix");
        }
コード例 #23
0
        /// <summary>
        /// Initializes a new instance of the DeviceTelemetryRepository class.
        /// </summary>
        /// <param name="configProvider">
        /// The IConfigurationProvider implementation with which to initialize 
        /// the new instance.
        /// </param>
        public DeviceTelemetryRepository(IConfigurationProvider configProvider, IBlobStorageClientFactory blobStorageClientFactory)
        {
            if (configProvider == null)
            {
                throw new ArgumentNullException("configProvider");
            }

            string telemetryContainerName = configProvider.GetConfigurationSettingValue("TelemetryStoreContainerName");
            _telemetryDataPrefix = configProvider.GetConfigurationSettingValue("TelemetryDataPrefix");
            string telemetryStoreConnectionString = configProvider.GetConfigurationSettingValue("device.StorageConnectionString");
            _telemetrySummaryPrefix = configProvider.GetConfigurationSettingValue("TelemetrySummaryPrefix");
            _blobStorageManager = blobStorageClientFactory.CreateClient(telemetryStoreConnectionString,telemetryContainerName);
        }
コード例 #24
0
        /// <summary>
        /// Initializes a new instance of the AlertsRepository class.
        /// </summary>
        /// <param name="configProvider">
        /// The IConfigurationProvider implementation with which the new
        /// instance will be initialized.
        /// </param>
        public AlertsRepository(IConfigurationProvider configProvider, IBlobStorageClientFactory blobStorageClientFactory)
        {
            if (configProvider == null)
            {
                throw new ArgumentNullException("configProvider");
            }

            string alertsContainerConnectionString = configProvider.GetConfigurationSettingValue("device.StorageConnectionString");
            string alertsStoreContainerName        = configProvider.GetConfigurationSettingValue("AlertsStoreContainerName");

            this._blobStorageManager    = blobStorageClientFactory.CreateClient(alertsContainerConnectionString, alertsStoreContainerName);
            this.deviceAlertsDataPrefix = configProvider.GetConfigurationSettingValue("DeviceAlertsDataPrefix");
        }
コード例 #25
0
        /// <summary>
        /// Initializes a new instance of the LocationJerkRepository class.
        /// </summary>
        /// <param name="configProvider">
        /// The IConfigurationProvider implementation with which to initialize
        /// the new instance.
        /// </param>
        /// <param name="blobStorageClientFactory">
        /// The IBlobStorageClientFactory implementation with which to initialize
        /// the new instance.
        /// </param>
        public LocationJerkRepository(IConfigurationProvider configProvider, IBlobStorageClientFactory blobStorageClientFactory)
        {
            if (configProvider == null)
            {
                throw new ArgumentNullException("configProvider");
            }

            string blobName         = configProvider.GetConfigurationSettingValue("LocationJerkBlobName");
            string connectionString = configProvider.GetConfigurationSettingValue("device.StorageConnectionString");
            string containerName    = configProvider.GetConfigurationSettingValue("LocationJerkContainerName");

            _blobName           = blobName;
            _blobStorageManager = blobStorageClientFactory.CreateClient(connectionString, containerName);
        }
コード例 #26
0
        public DeviceRulesRepository(IConfigurationProvider configurationProvider)
        {
            this._configurationProvider = configurationProvider;

            _storageAccountConnectionString = configurationProvider.GetConfigurationSettingValue("device.StorageConnectionString");
            _deviceRulesBlobStoreContainerName = configurationProvider.GetConfigurationSettingValue("DeviceRulesStoreContainerName");
            _deviceRulesNormalizedTableName = configurationProvider.GetConfigurationSettingValue("DeviceRulesTableName");
            _blobName = configurationProvider.GetConfigurationSettingValue("AsaRefDataRulesBlobName");

            // note: InvariantCulture is read-only, so use en-US and hardcode all relevant aspects
            CultureInfo culture = CultureInfo.CreateSpecificCulture("en-US");
            _formatInfo = culture.DateTimeFormat;
            _formatInfo.ShortDatePattern = @"yyyy-MM-dd";
            _formatInfo.ShortTimePattern = @"HH-mm";
        }
コード例 #27
0
        /// <summary>
        /// Initializes a new instance of the DeviceTelemetryRepository class.
        /// </summary>
        /// <param name="configProvider">
        /// The IConfigurationProvider implementation with which to initialize
        /// the new instance.
        /// </param>
        public DeviceTelemetryRepository(IConfigurationProvider configProvider, IBlobStorageClientFactory blobStorageClientFactory)
        {
            if (configProvider == null)
            {
                throw new ArgumentNullException("configProvider");
            }

            string telemetryContainerName = configProvider.GetConfigurationSettingValue("TelemetryStoreContainerName");

            _telemetryDataPrefix = configProvider.GetConfigurationSettingValue("TelemetryDataPrefix");
            string telemetryStoreConnectionString = configProvider.GetConfigurationSettingValue("device.StorageConnectionString");

            _telemetrySummaryPrefix = configProvider.GetConfigurationSettingValue("TelemetrySummaryPrefix");
            _blobStorageManager     = blobStorageClientFactory.CreateClient(telemetryStoreConnectionString, telemetryContainerName);
        }
コード例 #28
0
        private async Task ProcessEventItem(dynamic eventData)
        {
            if (eventData == null || eventData.ObjectType == null)
            {
                Trace.TraceWarning("Event has no ObjectType defined.  No action was taken on Event packet.");
                return;
            }

            string objectType = eventData.ObjectType.ToString();

            var objectTypePrefix = _configurationProvider.GetConfigurationSettingValue("ObjectTypePrefix");

            if (string.IsNullOrWhiteSpace(objectTypePrefix))
            {
                objectTypePrefix = "";
            }


            if (objectType == objectTypePrefix + SampleDeviceFactory.OBJECT_TYPE_DEVICE_INFO)
            {
                await ProcessDeviceInfo(eventData);
            }
            else
            {
                Trace.TraceWarning("Unknown ObjectType in event.");
            }
        }
        public EngineTelemetryFactory(ILogger logger, IConfigurationProvider config)
        {
            _logger = logger;
            _config = config;

            // This will load the CSV data from the specified file in blob storage;
            // any failure in accessing or reading the data will be handled as an exception
            Stream dataStream = CloudStorageAccount
                .Parse(config.GetConfigurationSettingValue("device.StorageConnectionString"))
                .CreateCloudBlobClient()
                .GetContainerReference(config.GetConfigurationSettingValue("SimulatorDataContainer"))
                .GetBlockBlobReference(config.GetConfigurationSettingValue("SimulatorDataFileName"))
                .OpenRead();

            _dataset = ParsingHelper.ParseCsv(new StreamReader(dataStream)).ToExpandoObjects().ToList();
        }
コード例 #30
0
        private async Task <List <string> > BootstrapDefaultDevices()
        {
            List <string> sampleIds = SampleDeviceFactory.GetDefaultDeviceNames();

            foreach (string id in sampleIds)
            {
                dynamic      device       = DeviceSchemaHelper.BuildDeviceStructure(id, true);
                SecurityKeys securityKeys = _securityKeyGenerator.CreateRandomKeys();
                try
                {
                    await _iotHubRepository.AddDeviceAsync(device, securityKeys);

                    await _virtualDeviceStorage.AddOrUpdateDeviceAsync(new InitialDeviceConfig()
                    {
                        DeviceId = DeviceSchemaHelper.GetDeviceID(device),
                        HostName = _configProvider.GetConfigurationSettingValue("iotHub.HostName"),
                        Key      = securityKeys.PrimaryKey
                    });
                }
                catch (Exception ex)
                {
                    //if we fail adding to table storage for the device simulator just continue
                    Trace.TraceError("Failed to add simulated device : {0}", ex.Message);
                }
            }
            return(sampleIds);
        }
コード例 #31
0
        public MRSServiceInvoker(IConfigurationProvider configurationProvider)
        {
            _configurationProvider = configurationProvider;
            var baseUri = new Uri(_configurationProvider.GetConfigurationSettingValue("MRSApiUrl"));

            pmRClient = new PredictiveMaintenance(baseUri);
        }
コード例 #32
0
 public DeviceIconRepository(IConfigurationProvider configurationProvider, IBlobStorageClientFactory blobStorageClientFactory)
 {
     _storageAccountConnectionString    = configurationProvider.GetConfigurationSettingValue("device.StorageConnectionString");
     _deviceIconsBlobStoreContainerName = configurationProvider.GetConfigurationSettingValueOrDefault("DeviceIconStoreContainerName", "deviceicons");
     _blobStorageClient = blobStorageClientFactory.CreateClient(_storageAccountConnectionString, _deviceIconsBlobStoreContainerName);
     _writePolicyName   = _deviceIconsBlobStoreContainerName + "-write";
 }
コード例 #33
0
        /// <summary>
        /// Sends an event to IoT Hub using the provided eventId GUID
        /// </summary>
        /// <param name="device"></param>
        /// <param name="eventId"></param>
        /// <param name="eventData"></param>
        /// <returns></returns>
        public async Task SendEventAsync(Guid eventId, dynamic eventData)
        {
            byte[] bytes;
            string objectType       = this.GetObjectType(eventData);
            var    objectTypePrefix = _configurationProvider.GetConfigurationSettingValue("ObjectTypePrefix");

            if (!string.IsNullOrWhiteSpace(objectType) && !string.IsNullOrEmpty(objectTypePrefix))
            {
                eventData.ObjectType = objectTypePrefix + objectType;
            }

            // sample code to trace the raw JSON that is being sent
            //string rawJson = JsonConvert.SerializeObject(eventData);
            //Trace.TraceInformation(rawJson);

            bytes = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(eventData));

            var message = new Client.Message(bytes);

            message.Properties["EventId"] = eventId.ToString();

            await AzureRetryHelper.OperationWithBasicRetryAsync(async() =>
            {
                try
                {
                    await _deviceClient.SendEventAsync(message);
                }
                catch (Exception ex)
                {
                    _logger.LogError($"SendEventAsync failed, device: {_device.DeviceID}, exception: {ex.Message}");
                }
            });
        }
コード例 #34
0
        public JobRepository(IConfigurationProvider configurationProvider, IAzureTableStorageClientFactory tableStorageClientFactory)
        {
            var connectionString = configurationProvider.GetConfigurationSettingValue("device.StorageConnectionString");
            var tableName        = configurationProvider.GetConfigurationSettingValueOrDefault("JobTableName", "JobList");

            _azureTableStorageClient = tableStorageClientFactory.CreateClient(connectionString, tableName);
        }
コード例 #35
0
        public DeviceRulesRepository(IConfigurationProvider configurationProvider)
        {
            _configurationProvider = configurationProvider;

            _storageAccountConnectionString    = configurationProvider.GetConfigurationSettingValue("device.StorageConnectionString");
            _deviceRulesBlobStoreContainerName = configurationProvider.GetConfigurationSettingValue("DeviceRulesStoreContainerName");
            _deviceRulesNormalizedTableName    = configurationProvider.GetConfigurationSettingValue("DeviceRulesTableName");
            _blobName = configurationProvider.GetConfigurationSettingValue("AsaRefDataRulesBlobName");

            // note: InvariantCulture is read-only, so use en-US and hardcode all relevant aspects
            CultureInfo culture = CultureInfo.CreateSpecificCulture("en-US");

            _formatInfo = culture.DateTimeFormat;
            _formatInfo.ShortDatePattern = @"yyyy-MM-dd";
            _formatInfo.ShortTimePattern = @"HH-mm";
        }
コード例 #36
0
        public LocationRulesRepository(IConfigurationProvider configurationProvider, IAzureTableStorageClientFactory tableStorageClientFactory, IBlobStorageClientFactory blobStorageClientFactory)
        {
            _storageAccountConnectionString      = configurationProvider.GetConfigurationSettingValue("device.StorageConnectionString");
            _locationRulesBlobStoreContainerName = configurationProvider.GetConfigurationSettingValue("LocationRulesStoreContainerName");
            _locationRulesNormalizedTableName    = configurationProvider.GetConfigurationSettingValue("LocationRulesTableName");
            _azureTableStorageClient             = tableStorageClientFactory.CreateClient(_storageAccountConnectionString, _locationRulesNormalizedTableName);
            _blobName          = configurationProvider.GetConfigurationSettingValue("AsaRefLocationRulesBlobName");
            _blobStorageClient = blobStorageClientFactory.CreateClient(_storageAccountConnectionString, _locationRulesBlobStoreContainerName);

            // note: InvariantCulture is read-only, so use en-US and hardcode all relevant aspects
            CultureInfo culture = CultureInfo.CreateSpecificCulture("en-US");

            _formatInfo = culture.DateTimeFormat;
            _formatInfo.ShortDatePattern = @"yyyy-MM-dd";
            _formatInfo.ShortTimePattern = @"HH-mm";
        }
コード例 #37
0
        public EngineTelemetryFactory(ILogger logger, IConfigurationProvider config)
        {
            _logger = logger;
            _config = config;

            // This will load the CSV data from the specified file in blob storage;
            // any failure in accessing or reading the data will be handled as an exception
            Stream dataStream = CloudStorageAccount
                                .Parse(config.GetConfigurationSettingValue("device.StorageConnectionString"))
                                .CreateCloudBlobClient()
                                .GetContainerReference(config.GetConfigurationSettingValue("SimulatorDataContainer"))
                                .GetBlockBlobReference(config.GetConfigurationSettingValue("SimulatorDataFileName"))
                                .OpenRead();

            _dataset = ParsingHelper.ParseCsv(new StreamReader(dataStream)).ToExpandoObjects().ToList();
        }
コード例 #38
0
        public override async Task ProcessItem(dynamic eventData)
        {
            // Ensure this is a correctly-formatted event for ML; ignore it otherwise
            if (eventData == null || eventData.deviceid == null || eventData.cycle == null ||
                eventData.sensor9 == null || eventData.sensor11 == null || eventData.sensor14 == null || eventData.sensor15 == null)
            {
                return;
            }

            // The experiment theoretically supports multiple inputs at once,
            // even though we only get one value at a time, so the request
            // requires an array of inputs
            MLRequest mlRequest = new MLRequest(ML_REQUEST_COLUMNS, new string[, ]
            {
                {
                    // The id is required to be numeric, so we hash the actual device id
                    eventData.deviceid.ToString().GetHashCode().ToString(),
                    // The remaining entries are string representations of the numeric values
                    eventData.cycle.ToString(),
                    eventData.sensor9.ToString(),
                    eventData.sensor11.ToString(),
                    eventData.sensor14.ToString(),
                    eventData.sensor15.ToString()
                }
            }
                                                );

            HttpClient http = new HttpClient();

            http.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", _configurationProvider.GetConfigurationSettingValue("MLApiKey"));
            http.BaseAddress = new Uri(_configurationProvider.GetConfigurationSettingValue("MLApiUrl") + ML_ENDPOINT);

            HttpResponseMessage response = await http.PostAsJsonAsync("", mlRequest);

            if (response.IsSuccessStatusCode)
            {
                MLResponse result = JsonConvert.DeserializeObject <MLResponse>(await response.Content.ReadAsStringAsync());

                RulTableEntity entry = new RulTableEntity
                {
                    PartitionKey = eventData.deviceid.ToString(),
                    RowKey       = eventData.cycle.ToString(),
                    // Extract the single relevant RUL value from the JSON output
                    Rul = result.Results["data"].value.Values[0, RUL_COLUMN],
                    // Since the simulator might replay data, ensure we can overwrite table values
                    ETag = "*"
                };

                // We don't need a data model to represent the result of this operation,
                // so we use a stub table/model convertor
                await AzureTableStorageHelper.DoTableInsertOrReplaceAsync <object, RulTableEntity>(entry, (RulTableEntity e) => null,
                                                                                                   _configurationProvider.GetConfigurationSettingValue("eventHub.StorageConnectionString"),
                                                                                                   _configurationProvider.GetConfigurationSettingValue("MLResultTableName"));
            }
            else
            {
                throw new Exception(string.Format("The ML request failed with status code: {0}", response.StatusCode));
            }
        }
コード例 #39
0
        public DeviceRegistryRepository(IConfigurationProvider configProvider, IDocDbRestUtility docDbRestUtil)
        {
            if (configProvider == null)
            {
                throw new ArgumentNullException("configProvider");
            }

            _endpointUri = configProvider.GetConfigurationSettingValue("docdb.EndpointUrl");
            _authorizationKey = configProvider.GetConfigurationSettingValue("docdb.PrimaryAuthorizationKey");
            _databaseId = configProvider.GetConfigurationSettingValue("docdb.DatabaseId");
            _documentCollectionName = configProvider.GetConfigurationSettingValue("docdb.DocumentCollectionId");


            _docDbRestUtil = docDbRestUtil;
            Task.Run(() => _docDbRestUtil.InitializeDatabase()).Wait();
            Task.Run(() => _docDbRestUtil.InitializeCollection()).Wait();
        }
コード例 #40
0
        public DeviceRegistryRepository(IConfigurationProvider configProvider, IDocDbRestUtility docDbRestUtil)
        {
            if (configProvider == null)
            {
                throw new ArgumentNullException("configProvider");
            }

            _endpointUri            = configProvider.GetConfigurationSettingValue("docdb.EndpointUrl");
            _authorizationKey       = configProvider.GetConfigurationSettingValue("docdb.PrimaryAuthorizationKey");
            _databaseId             = configProvider.GetConfigurationSettingValue("docdb.DatabaseId");
            _documentCollectionName = configProvider.GetConfigurationSettingValue("docdb.DocumentCollectionId");


            _docDbRestUtil = docDbRestUtil;
            Task.Run(() => _docDbRestUtil.InitializeDatabase()).Wait();
            Task.Run(() => _docDbRestUtil.InitializeCollection()).Wait();
        }
コード例 #41
0
        public IotHubRepository(IConfigurationProvider configProvider)
        {
            // Temporary code to bypass https cert validation till DNS on IotHub is configured
            ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, errors) => true;

            _iotHubConnectionString = configProvider.GetConfigurationSettingValue("iotHub.ConnectionString");
            _deviceManager = RegistryManager.CreateFromConnectionString(_iotHubConnectionString);
        }
コード例 #42
0
        public IotHubRepository(IConfigurationProvider configProvider)
        {
            // Temporary code to bypass https cert validation till DNS on IotHub is configured
            ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, errors) => true;

            _iotHubConnectionString = configProvider.GetConfigurationSettingValue("iotHub.ConnectionString");
            _deviceManager          = RegistryManager.CreateFromConnectionString(_iotHubConnectionString);
        }
コード例 #43
0
        public MLDataProcessor(IConfigurationProvider configurationProvider)
        {
            _configurationProvider = configurationProvider;
            var analyticsType = (AnalyticsTypes)Enum.Parse(typeof(AnalyticsTypes), _configurationProvider.GetConfigurationSettingValue("AnalyticsType"));

            _mlServiceInvoker = AnalyticsServiceInvokerFactory.CreateMLServerInvoker(analyticsType, configurationProvider);
            Trace.TraceInformation($"Created ML service invoker of type: {_mlServiceInvoker.GetType().Name}");
        }
コード例 #44
0
        public DeviceController(IDeviceLogic deviceLogic, IDeviceTypeLogic deviceTypeLogic,
            IConfigurationProvider configProvider,
            IApiRegistrationRepository apiRegistrationRepository,
            ICellularExtensions cellularExtensions)
        {
            _deviceLogic = deviceLogic;
            _deviceTypeLogic = deviceTypeLogic;
            _apiRegistrationRepository = apiRegistrationRepository;
            _cellularExtensions = cellularExtensions;

            _iotHubName = configProvider.GetConfigurationSettingValue("iotHub.HostName");
        }
コード例 #45
0
 public UserSettingsRepository(IConfigurationProvider configProvider, AzureTableStorageClientFactory tableStorageClientFactory)
 {
     _storageAccountConnectionString = configProvider.GetConfigurationSettingValue("device.StorageConnectionString");
     _azureTableStorageClient = tableStorageClientFactory.CreateClient(_storageAccountConnectionString, _settingsTableName);
 }
コード例 #46
0
 public ActionMappingRepository(IConfigurationProvider configurationProvider)
 {
     _connectionString = configurationProvider.GetConfigurationSettingValue("device.StorageConnectionString");
     _containerName = configurationProvider.GetConfigurationSettingValue("ActionMappingStoreContainerName");
     _blobName = configurationProvider.GetConfigurationSettingValue("ActionMappingStoreBlobName");
 }
コード例 #47
0
 public ApiRegistrationRepository(IConfigurationProvider configProvider, IAzureTableStorageClientFactory tableStorageClientFactory)
 {
     _azureTableStorageClient = tableStorageClientFactory.CreateClient(configProvider.GetConfigurationSettingValue("device.StorageConnectionString"), API_TABLE_NAME);
 }
コード例 #48
0
 public UserSettingsRepository(IConfigurationProvider configProvider)
 {
     _storageAccountConnectionString = configProvider.GetConfigurationSettingValue("device.StorageConnectionString");
 }
コード例 #49
0
 public DeviceController(IDeviceLogic deviceLogic, IDeviceTypeLogic deviceTypeLogic, IConfigurationProvider configProvider)
 {
     _deviceLogic = deviceLogic;
     _deviceTypeLogic = deviceTypeLogic;
     this.iotHubName = configProvider.GetConfigurationSettingValue("iotHub.HostName");
 }
コード例 #50
0
 public VirtualDeviceTableStorage(IConfigurationProvider configProvider)
 {
     _storageConnectionString = configProvider.GetConfigurationSettingValue("device.StorageConnectionString");
     _deviceTableName = configProvider.GetConfigurationSettingValue("device.TableName");
 }
 public AppConfigRepository(IConfigurationProvider configProvider, ILogger logger)
 {
     _devices = new List<InitialDeviceConfig>();
     _hostName = configProvider.GetConfigurationSettingValue("iotHub.HostName");
     _logger = logger;
 }
コード例 #52
0
 public VirtualDeviceTableStorage(IConfigurationProvider configProvider, IAzureTableStorageClientFactory tableStorageClientFactory)
 {
     var storageConnectionString = configProvider.GetConfigurationSettingValue("device.StorageConnectionString");
     var deviceTableName = configProvider.GetConfigurationSettingValue("device.TableName");
     _azureTableStorageClient = tableStorageClientFactory.CreateClient(storageConnectionString, deviceTableName);
 }
コード例 #53
0
 public ApiRegistrationRepository(IConfigurationProvider configProvider)
 {
     _table = AzureTableStorageHelper.GetTable(
            configProvider.GetConfigurationSettingValue("device.StorageConnectionString"), API_TABLE_NAME);
 }
コード例 #54
0
 public DocDbRestUtility(IConfigurationProvider configProvider)
     : this(configProvider.GetConfigurationSettingValue("docdb.EndpointUrl"),
         configProvider.GetConfigurationSettingValue("docdb.PrimaryAuthorizationKey"),
         configProvider.GetConfigurationSettingValue("docdb.DatabaseId"),
         configProvider.GetConfigurationSettingValue("docdb.DocumentCollectionId"))
 { }