/// <summary> /// Handles the Click event of the btnSave control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param> protected void btnSave_Click(object sender, EventArgs e) { using (var rockContext = new RockContext()) { AssetStorageProvider assetStorageProvider = null; var assetStorageProviderService = new AssetStorageProviderService(rockContext); if (AssetStorageProviderId != 0) { assetStorageProvider = assetStorageProviderService.Get(AssetStorageProviderId); } if (assetStorageProvider == null) { assetStorageProvider = new Rock.Model.AssetStorageProvider(); assetStorageProviderService.Add(assetStorageProvider); } assetStorageProvider.Name = tbName.Text; assetStorageProvider.IsActive = cbIsActive.Checked; assetStorageProvider.Description = tbDescription.Text; assetStorageProvider.EntityTypeId = cpAssetStorageType.SelectedEntityTypeId; rockContext.SaveChanges(); assetStorageProvider.LoadAttributes(rockContext); Rock.Attribute.Helper.GetEditValues(phAttributes, assetStorageProvider); assetStorageProvider.SaveAttributeValues(rockContext); } NavigateToParentPage(); }
private void ProcessAssetStorageProviderAsset(HttpContext context, HttpPostedFile uploadedFile) { int? assetStorageId = context.Request.Form["StorageId"].AsIntegerOrNull(); string assetKey = context.Request.Form["Key"] + uploadedFile.FileName; if (assetStorageId == null || assetKey.IsNullOrWhiteSpace()) { throw new Rock.Web.FileUploadException("Insufficient info to upload a file of this type.", System.Net.HttpStatusCode.Forbidden); } var assetStorageService = new AssetStorageProviderService(new RockContext()); AssetStorageProvider assetStorageProvider = assetStorageService.Get((int)assetStorageId); assetStorageProvider.LoadAttributes(); var component = assetStorageProvider.GetAssetStorageComponent(); var asset = new Rock.Storage.AssetStorage.Asset(); asset.Key = assetKey; asset.Type = Rock.Storage.AssetStorage.AssetType.File; asset.AssetStream = uploadedFile.InputStream; if (component.UploadObject(assetStorageProvider, asset)) { context.Response.Write(new { Id = string.Empty, FileName = assetKey }.ToJson()); } else { throw new Rock.Web.FileUploadException("Unable to upload file", System.Net.HttpStatusCode.BadRequest); } }
/// <summary> /// Overridden to take JSON input of AssetStorageID and Key and create a URL. If the asset is using Amazon then a presigned URL is /// created. /// </summary> /// <param name="parentControl">The parent control.</param> /// <param name="value">Information about the value</param> /// <param name="configurationValues">The configuration values.</param> /// <param name="condensed">Flag indicating if the value should be condensed (i.e. for use in a grid column)</param> /// <returns></returns> public override string FormatValue(Control parentControl, string value, Dictionary <string, ConfigurationValue> configurationValues, bool condensed) { Storage.AssetStorage.Asset asset = GetAssetInfoFromValue(value); if (asset == null) { return(string.Empty); } AssetStorageProvider assetStorageProvider = new AssetStorageProvider(); int?assetStorageId = asset.AssetStorageProviderId; if (assetStorageId != null) { var assetStorageService = new AssetStorageProviderService(new RockContext()); assetStorageProvider = assetStorageService.Get(assetStorageId.Value); assetStorageProvider.LoadAttributes(); } var component = assetStorageProvider.GetAssetStorageComponent(); string uri = component.CreateDownloadLink(assetStorageProvider, asset); return(uri); }
protected AssetStorageProvider GetAssetStorageProvider() { var assetStorageProviderService = new AssetStorageProviderService(new RockContext()); AssetStorageProvider assetStorageProvider = assetStorageProviderService.Get(_assetStorageProviderServiceGuid); assetStorageProvider.LoadAttributes(); return(assetStorageProvider); }
private static void CreateAssetStorageProvider(TestContext testContext) { AssetStorageProvider assetStorageProvider = null; var bucketName = testContext.Properties["GoogleBucketName"].ToStringSafe(); var apiKey = testContext.Properties["GoogleServiceAccountJsonKey"].ToStringSafe(); // Just Assert Inconclusive if the GoogleStorageAccountName and GoogleAccountAccessKey are blank if (string.IsNullOrEmpty(bucketName) || string.IsNullOrEmpty(apiKey)) { Assert.That.Inconclusive($"The GoogleStorageAccountName and GoogleAccountAccessKey must be set up in your Test > Test Settings > Test Setting File in order to run these tests."); } try { using (var rockContext = new RockContext()) { var assetStorageProviderService = new AssetStorageProviderService(rockContext); assetStorageProvider = assetStorageProviderService.Get(_assetStorageProviderServiceGuid); if (assetStorageProvider == null) { // This is the registered Guid for the 'Rock.Storage.AssetStorage.GoogleCloudStorageComponent' entity type var entityType = EntityTypeCache.Get(Rock.SystemGuid.EntityType.STORAGE_ASSETSTORAGE_GOOGLECLOUD.AsGuid()); assetStorageProvider = new AssetStorageProvider(); assetStorageProvider.Name = "TEST Google Cloud AssetStorageProvider"; assetStorageProvider.Guid = _assetStorageProviderServiceGuid; assetStorageProvider.EntityTypeId = entityType.Id; assetStorageProvider.IsActive = true; assetStorageProviderService.Add(assetStorageProvider); rockContext.SaveChanges(); var assetStorageProviderComponentEntityType = EntityTypeCache.Get(assetStorageProvider.EntityTypeId.Value); var assetStorageProviderEntityType = EntityTypeCache.Get <Rock.Model.AssetStorageProvider>(); Helper.UpdateAttributes( assetStorageProviderComponentEntityType.GetEntityType(), assetStorageProviderEntityType.Id, "EntityTypeId", assetStorageProviderComponentEntityType.Id.ToString(), rockContext); } assetStorageProvider.LoadAttributes(); assetStorageProvider.SetAttributeValue("BucketName", bucketName); assetStorageProvider.SetAttributeValue("ApiKey", Encryption.EncryptString(apiKey)); assetStorageProvider.SetAttributeValue("RootFolder", testContext.Properties["UnitTestRootFolder"].ToStringSafe()); assetStorageProvider.SaveAttributeValues(rockContext); } } catch (System.Exception ex) { Assert.That.Inconclusive($"Unable to get the Google Cloud Asset Storage Provider ({ex.Message})."); } }
private static void CreateAssetStorageProvider(TestContext testContext) { AssetStorageProvider assetStorageProvider = null; var accessKey = testContext.Properties["AWSAccessKey"].ToStringSafe(); var secretKey = testContext.Properties["AWSSecretKey"].ToStringSafe(); try { using (var rockContext = new RockContext()) { var assetStorageProviderService = new AssetStorageProviderService(rockContext); assetStorageProvider = assetStorageProviderService.Get(_assetStorageProviderServiceGuid); if (assetStorageProvider == null) { var entityType = EntityTypeCache.Get(Rock.SystemGuid.EntityType.STORAGE_ASSETSTORAGE_AMAZONS3.AsGuid()); assetStorageProvider = new AssetStorageProvider(); assetStorageProvider.Name = "TEST Amazon S3 AssetStorageProvider"; assetStorageProvider.Guid = _assetStorageProviderServiceGuid; assetStorageProvider.EntityTypeId = entityType.Id; assetStorageProvider.IsActive = true; assetStorageProviderService.Add(assetStorageProvider); rockContext.SaveChanges(); var assetStorageProviderComponentEntityType = EntityTypeCache.Get(assetStorageProvider.EntityTypeId.Value); var assetStorageProviderEntityType = EntityTypeCache.Get <Rock.Model.AssetStorageProvider>(); Helper.UpdateAttributes( assetStorageProviderComponentEntityType.GetEntityType(), assetStorageProviderEntityType.Id, "EntityTypeId", assetStorageProviderComponentEntityType.Id.ToString(), rockContext); } assetStorageProvider.LoadAttributes(); assetStorageProvider.SetAttributeValue("GenerateSingedURLs", "False"); // The attribute Key has that typo. assetStorageProvider.SetAttributeValue("AWSRegion", testContext.Properties["AWSRegion"].ToStringSafe()); assetStorageProvider.SetAttributeValue("Bucket", testContext.Properties["AWSBucket"].ToStringSafe()); assetStorageProvider.SetAttributeValue("Expiration", "525600"); assetStorageProvider.SetAttributeValue("RootFolder", testContext.Properties["UnitTestRootFolder"].ToStringSafe()); assetStorageProvider.SetAttributeValue("AWSProfileName", testContext.Properties["AWSProfileName"].ToStringSafe()); assetStorageProvider.SetAttributeValue("AWSAccessKey", accessKey); assetStorageProvider.SetAttributeValue("AWSSecretKey", secretKey); assetStorageProvider.SaveAttributeValues(rockContext); } } catch (System.Exception ex) { Assert.That.Inconclusive($"Unable to get the Amazon S3 Asset Storage Provider ({ex.Message})."); } }
private AssetStorageProvider GetAssetStorageProvider() { var assetStorageService = new AssetStorageProviderService(new RockContext()); AssetStorageProvider assetStorageProvider = assetStorageService.Get(3); // need mock assetStorageProvider.LoadAttributes(); assetStorageProvider.SetAttributeValue("RootFolder", "TestFolder"); return(assetStorageProvider); }
private AssetStorageProvider GetAssetStorageProvider() { var assetStorageService = new AssetStorageProviderService(new RockContext()); AssetStorageProvider assetStorageProvider = assetStorageService.Get(1); // this is the stock, local file system provider assetStorageProvider.LoadAttributes(); assetStorageProvider.SetAttributeValue("RootFolder", "TestFolder"); return(assetStorageProvider); }
private static void SeedIntialData() { var assetStorageProviderService = new AssetStorageProviderService(new RockContext()); var assetStorageProvider = assetStorageProviderService.Get(_assetStorageProviderServiceGuid); assetStorageProvider.LoadAttributes(); var assetStorageComponent = assetStorageProvider.GetAssetStorageComponent(); using (new HttpSimulator("/", webContentFolder).SimulateRequest()) { var rootAsset = new Asset { Key = assetStorageProvider.GetAttributeValue("RootFolder"), Type = AssetType.Folder }; bool isSuccess = assetStorageComponent.CreateFolder(assetStorageProvider, rootAsset); if (!isSuccess) { Assert.That.Inconclusive($"Unable to create root folder while seeding data"); } var parentFolder = new Asset(); parentFolder.Name = "ParentFolder"; parentFolder.Type = AssetType.Folder; isSuccess = assetStorageComponent.CreateFolder(assetStorageProvider, parentFolder); for (var i = 1; i < 11; i++) { var testFolder = new Asset { Name = $"{parentFolder.Name}/TestFolder-{i}", Type = AssetType.Folder }; isSuccess = assetStorageComponent.CreateFolder(assetStorageProvider, testFolder); assetStorageComponent.UploadObject(assetStorageProvider, new Asset { Name = $"{parentFolder.Name}/TestFile-{i}.txt", AssetStream = new MemoryStream(_testTextFileBytes) }); assetStorageComponent.UploadObject(assetStorageProvider, new Asset { Name = $"{testFolder.Name}/TestFile-{i}.txt", AssetStream = new MemoryStream(_testTextFileBytes) }); } } }
/// <summary> /// Gets the asset storage provider using the ID stored in the hidden field, otherwise returns a new AssetStorageProvider. /// </summary> /// <returns></returns> private AssetStorageProvider GetAssetStorageProvider() { AssetStorageProvider assetStorageProvider = new AssetStorageProvider(); string assetStorageId = hfAssetStorageId.Value; if (assetStorageId.IsNotNullOrWhiteSpace()) { var assetStorageService = new AssetStorageProviderService(new RockContext()); assetStorageProvider = assetStorageService.Get(assetStorageId.AsInteger()); assetStorageProvider.LoadAttributes(); } return(assetStorageProvider); }
/// <summary> /// Handles the DeleteClick event of the rGridAssetStorageProvider control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="RowEventArgs"/> instance containing the event data.</param> protected void rGridAssetStorageProvider_DeleteClick(object sender, RowEventArgs e) { var rockContext = new RockContext(); var assetStorageProviderService = new AssetStorageProviderService(rockContext); var assetStorageProvider = assetStorageProviderService.Get(e.RowKeyId); if (assetStorageProvider != null) { assetStorageProviderService.Delete(assetStorageProvider); rockContext.SaveChanges(); } BindGrid(); }
/// <summary> /// Shows the detail. /// </summary> /// <param name="assetStorageProviderId">The asset storage provider identifier.</param> public void ShowDetail(int assetStorageProviderId) { if (!IsUserAuthorized(Authorization.VIEW)) { nbEditModeMessage.Text = EditModeMessage.NotAuthorizedToView(AssetStorageProvider.FriendlyTypeName); return; } AssetStorageProvider assetStorageProvider = null; var rockContext = new RockContext(); if (assetStorageProviderId == 0) { assetStorageProvider = new AssetStorageProvider(); pdAuditDetails.Visible = false; } else { var assetStorageProviderService = new AssetStorageProviderService(rockContext); assetStorageProvider = assetStorageProviderService.Get(assetStorageProviderId); pdAuditDetails.SetEntity(assetStorageProvider, ResolveRockUrl("~")); if (assetStorageProvider == null) { assetStorageProvider = new AssetStorageProvider(); pdAuditDetails.Visible = false; } } if (assetStorageProvider.Id == 0) { lActionTitle.Text = ActionTitle.Add(AssetStorageProvider.FriendlyTypeName).FormatAsHtmlTitle(); } else { lActionTitle.Text = assetStorageProvider.Name.FormatAsHtmlTitle(); } hlInactive.Visible = !assetStorageProvider.IsActive; tbName.Text = assetStorageProvider.Name; cbIsActive.Checked = assetStorageProvider.IsActive; tbDescription.Text = assetStorageProvider.Description; cpAssetStorageType.SetValue(assetStorageProvider.EntityType != null ? assetStorageProvider.EntityType.Guid.ToString().ToUpper() : string.Empty); BuildDynamicControls(assetStorageProvider, true); }
protected static void InternalClassCleanup() { var assetStorageProviderService = new AssetStorageProviderService(new RockContext()); var assetStorageProvider = assetStorageProviderService.Get(_assetStorageProviderServiceGuid); var storageComponent = assetStorageProvider.GetAssetStorageComponent(); var unitTestFolder = new Asset { Key = assetStorageProvider.GetAttributeValue("RootFolder"), Type = AssetType.Folder }; using (new HttpSimulator("/", webContentFolder).SimulateRequest()) { var items = storageComponent.ListObjects(assetStorageProvider, unitTestFolder); foreach (var item in items) { if (item.Key == unitTestFolder.Key) { continue; } storageComponent.DeleteAsset(assetStorageProvider, item); } } if (!string.IsNullOrEmpty(webContentFolder)) { try { Directory.Delete(webContentFolder, recursive: true); } catch { // do nothing. } } }