public async Task <OrganizationApplicationKey> Execute(GetApplicationKey query,
                                                               CancellationToken cancellationToken = new CancellationToken())
        {
            if (query == null)
            {
                throw new ArgumentNullException("query");
            }
            if (string.IsNullOrWhiteSpace(query.Key))
            {
                throw new ArgumentException("Key is required");
            }

            CloudTable keyIndexTable = _tableProvider.GetTable(_settings.KeyOrganizationApplicationIndexTableName);

            TableQuery <KeyOrganizationApplicationIndexEntity> userAppQuery = new TableQuery <KeyOrganizationApplicationIndexEntity>()
                                                                              .Where(TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, query.Key)).Take(1);

            IEnumerable <KeyOrganizationApplicationIndexEntity> keyApps =
                await keyIndexTable.ExecuteQueryAsync(userAppQuery, cancellationToken);

            KeyOrganizationApplicationIndexEntity keyApp = keyApps.SingleOrDefault();

            if (keyApp == null)
            {
                throw new ApplicationNotFoundException(string.Format("The key was not found: {0}", query.Key));
            }

            return(keyApp);
        }
Esempio n. 2
0
        public async Task <OrganizationApplicationKey> Execute(CreateApplicationKey command,
                                                               CancellationToken cancellationToken = new CancellationToken())
        {
            GetApplication query = new GetApplicationQuery(command.UserId, command.ApplicationId);

            UserOrganizationApplication application = await _getApplication.Execute(query, cancellationToken);

            CloudTable appKeyTable = _tableProvider.GetTable(_settings.OrganizationApplicationKeyTableName);

            string key = GenerateKey();

            var appKeyEntity = new OrganizationApplicationKeyEntity(key, application.OrganizationId, application.OrganizationName, command.ApplicationId,
                                                                    application.ApplicationName, command.Timestamp);

            await appKeyTable.ExecuteAsync(TableOperation.Insert(appKeyEntity), cancellationToken);

            var indexEntity = new KeyOrganizationApplicationIndexEntity(key, application.OrganizationId, application.OrganizationName,
                                                                        application.ApplicationId, application.ApplicationName, command.Timestamp);

            CloudTable indexTable = _tableProvider.GetTable(_settings.KeyOrganizationApplicationIndexTableName);

            await indexTable.ExecuteAsync(TableOperation.Insert(indexEntity), cancellationToken);

            return(appKeyEntity);
        }