diff --git a/aspnet-core/framework/nexus/LINGYUN.Abp.BlobStoring.Nexus/README.EN.md b/aspnet-core/framework/nexus/LINGYUN.Abp.BlobStoring.Nexus/README.EN.md new file mode 100644 index 000000000..631d9922b --- /dev/null +++ b/aspnet-core/framework/nexus/LINGYUN.Abp.BlobStoring.Nexus/README.EN.md @@ -0,0 +1,95 @@ +# LINGYUN.Abp.BlobStoring.Nexus + +[简体中文](./README.md) | English + +A BLOB storage provider based on Sonatype Nexus. + +## Features + +* Support for storing files in Nexus repository +* Support for basic file operations including upload, download, and delete +* Support for file path normalization +* Support for file duplication check and override options +* Multi-tenancy support + +## Module Dependencies + +```csharp +[DependsOn(typeof(AbpBlobStoringNexusModule))] +public class YouProjectModule : AbpModule +{ + // other +} +``` + +## Basic Usage + +### 1. Configure Nexus Storage + +Configure Nexus storage options in `appsettings.json`: + +```json +{ + "BlobStoring": { + "Nexus": { + "Repository": "your-repository-name" + } + } +} +``` + +### 2. Configure Container + +```csharp +Configure(options => +{ + options.Containers.ConfigureDefault(container => + { + container.UseNexus(nexus => + { + nexus.Repository = "your-repository-name"; + }); + }); +}); +``` + +### 3. Use BLOB Storage + +```csharp +public class MyService +{ + private readonly IBlobContainer _blobContainer; + + public MyService(IBlobContainer blobContainer) + { + _blobContainer = blobContainer; + } + + public async Task SaveBlobAsync(byte[] bytes) + { + await _blobContainer.SaveAsync("my-blob-name", bytes); + } + + public async Task GetBlobAsync() + { + return await _blobContainer.GetAllBytesAsync("my-blob-name"); + } +} +``` + +## Configuration Options + +* Repository - Nexus repository name + +## Best Practices + +1. Plan file paths and naming properly for better management and maintenance +2. Configure file override options based on actual requirements +3. Use multi-tenancy features appropriately to ensure data isolation + +## Notes + +1. Ensure Nexus repository is properly configured and accessible +2. File paths are automatically normalized, replacing backslashes with forward slashes +3. By default, overwriting existing files is not allowed, the OverrideExisting option needs to be explicitly set +4. File operations may be affected by network conditions, consider adding appropriate error handling mechanisms diff --git a/aspnet-core/framework/nexus/LINGYUN.Abp.BlobStoring.Nexus/README.md b/aspnet-core/framework/nexus/LINGYUN.Abp.BlobStoring.Nexus/README.md new file mode 100644 index 000000000..479906fad --- /dev/null +++ b/aspnet-core/framework/nexus/LINGYUN.Abp.BlobStoring.Nexus/README.md @@ -0,0 +1,95 @@ +# LINGYUN.Abp.BlobStoring.Nexus + +[English](./README.EN.md) | 简体中文 + +基于 Sonatype Nexus 的 Blob 存储提供程序。 + +## 功能 + +* 支持将文件存储到 Nexus 仓库 +* 支持文件的上传、下载、删除等基本操作 +* 支持文件路径规范化 +* 支持文件重复检查和覆盖选项 +* 支持多租户 + +## 模块依赖 + +```csharp +[DependsOn(typeof(AbpBlobStoringNexusModule))] +public class YouProjectModule : AbpModule +{ + // other +} +``` + +## 基本用法 + +### 1. 配置 Nexus 存储 + +在 `appsettings.json` 中配置 Nexus 存储选项: + +```json +{ + "BlobStoring": { + "Nexus": { + "Repository": "your-repository-name" + } + } +} +``` + +### 2. 配置容器 + +```csharp +Configure(options => +{ + options.Containers.ConfigureDefault(container => + { + container.UseNexus(nexus => + { + nexus.Repository = "your-repository-name"; + }); + }); +}); +``` + +### 3. 使用 BLOB 存储 + +```csharp +public class MyService +{ + private readonly IBlobContainer _blobContainer; + + public MyService(IBlobContainer blobContainer) + { + _blobContainer = blobContainer; + } + + public async Task SaveBlobAsync(byte[] bytes) + { + await _blobContainer.SaveAsync("my-blob-name", bytes); + } + + public async Task GetBlobAsync() + { + return await _blobContainer.GetAllBytesAsync("my-blob-name"); + } +} +``` + +## 配置选项 + +* Repository - Nexus 仓库名称 + +## 最佳实践 + +1. 合理规划文件路径和命名,便于管理和维护 +2. 根据实际需求配置文件覆盖选项 +3. 合理使用多租户功能,确保数据隔离 + +## 注意事项 + +1. 确保 Nexus 仓库已正确配置并可访问 +2. 文件路径会被自动规范化,将反斜杠替换为正斜杠 +3. 默认情况下不允许覆盖已存在的文件,需要显式设置 OverrideExisting 选项 +4. 文件操作可能会受到网络状况的影响,建议添加适当的错误处理机制 diff --git a/aspnet-core/framework/nexus/LINGYUN.Abp.Sonatype.Nexus/README.EN.md b/aspnet-core/framework/nexus/LINGYUN.Abp.Sonatype.Nexus/README.EN.md new file mode 100644 index 000000000..c24374857 --- /dev/null +++ b/aspnet-core/framework/nexus/LINGYUN.Abp.Sonatype.Nexus/README.EN.md @@ -0,0 +1,120 @@ +# LINGYUN.Abp.Sonatype.Nexus + +[简体中文](./README.md) | English + +ABP framework integration module for Sonatype Nexus REST API. + +## Features + +* Support for Nexus repository management +* Support for component management +* Support for asset management +* Support for search functionality +* Support for basic authentication + +## Module Dependencies + +```csharp +[DependsOn(typeof(AbpSonatypeNexusModule))] +public class YouProjectModule : AbpModule +{ + // other +} +``` + +## Basic Usage + +### 1. Configure Nexus Connection + +Configure Nexus connection options in `appsettings.json`: + +```json +{ + "SonatypeNexus": { + "BaseUrl": "http://127.0.0.1:8081", + "UserName": "sonatype", + "Password": "sonatype" + } +} +``` + +### 2. Use Repository Management + +```csharp +public class MyService +{ + private readonly INexusRepositoryManager _repositoryManager; + + public MyService(INexusRepositoryManager repositoryManager) + { + _repositoryManager = repositoryManager; + } + + public async Task> GetRepositoriesAsync() + { + var result = await _repositoryManager.ListAsync(); + return result.Items; + } +} +``` + +### 3. Use Component Management + +```csharp +public class MyService +{ + private readonly INexusComponentManager _componentManager; + + public MyService(INexusComponentManager componentManager) + { + _componentManager = componentManager; + } + + public async Task UploadComponentAsync(string repository, string directory, byte[] fileBytes) + { + var asset = new Asset("filename.txt", fileBytes); + var args = new NexusRawBlobUploadArgs(repository, directory, asset); + await _componentManager.UploadAsync(args); + } +} +``` + +### 4. Use Asset Management + +```csharp +public class MyService +{ + private readonly INexusAssetManager _assetManager; + + public MyService(INexusAssetManager assetManager) + { + _assetManager = assetManager; + } + + public async Task> GetAssetsAsync(string repository) + { + var result = await _assetManager.ListAsync(repository); + return result.Items; + } +} +``` + +## Configuration Options + +* BaseUrl - Nexus server address +* UserName - Username +* Password - Password + +## Best Practices + +1. Keep authentication information secure +2. Plan repository structure and component classification properly +3. Regularly clean up unnecessary components and assets +4. Use appropriate error handling mechanisms + +## Notes + +1. Ensure Nexus server is properly configured and accessible +2. Consider network conditions and timeout settings when uploading large files +3. Delete operations are irreversible, proceed with caution +4. Some operations require administrator privileges diff --git a/aspnet-core/framework/nexus/LINGYUN.Abp.Sonatype.Nexus/README.md b/aspnet-core/framework/nexus/LINGYUN.Abp.Sonatype.Nexus/README.md new file mode 100644 index 000000000..c26deb4aa --- /dev/null +++ b/aspnet-core/framework/nexus/LINGYUN.Abp.Sonatype.Nexus/README.md @@ -0,0 +1,120 @@ +# LINGYUN.Abp.Sonatype.Nexus + +[English](./README.EN.md) | 简体中文 + +Sonatype Nexus REST API 的 ABP 框架集成模块。 + +## 功能 + +* 支持 Nexus 仓库管理 +* 支持组件(Component)管理 +* 支持资源(Asset)管理 +* 支持搜索功能 +* 支持基本认证 + +## 模块依赖 + +```csharp +[DependsOn(typeof(AbpSonatypeNexusModule))] +public class YouProjectModule : AbpModule +{ + // other +} +``` + +## 基本用法 + +### 1. 配置 Nexus 连接 + +在 `appsettings.json` 中配置 Nexus 连接选项: + +```json +{ + "SonatypeNexus": { + "BaseUrl": "http://127.0.0.1:8081", + "UserName": "sonatype", + "Password": "sonatype" + } +} +``` + +### 2. 使用仓库管理 + +```csharp +public class MyService +{ + private readonly INexusRepositoryManager _repositoryManager; + + public MyService(INexusRepositoryManager repositoryManager) + { + _repositoryManager = repositoryManager; + } + + public async Task> GetRepositoriesAsync() + { + var result = await _repositoryManager.ListAsync(); + return result.Items; + } +} +``` + +### 3. 使用组件管理 + +```csharp +public class MyService +{ + private readonly INexusComponentManager _componentManager; + + public MyService(INexusComponentManager componentManager) + { + _componentManager = componentManager; + } + + public async Task UploadComponentAsync(string repository, string directory, byte[] fileBytes) + { + var asset = new Asset("filename.txt", fileBytes); + var args = new NexusRawBlobUploadArgs(repository, directory, asset); + await _componentManager.UploadAsync(args); + } +} +``` + +### 4. 使用资源管理 + +```csharp +public class MyService +{ + private readonly INexusAssetManager _assetManager; + + public MyService(INexusAssetManager assetManager) + { + _assetManager = assetManager; + } + + public async Task> GetAssetsAsync(string repository) + { + var result = await _assetManager.ListAsync(repository); + return result.Items; + } +} +``` + +## 配置选项 + +* BaseUrl - Nexus 服务器地址 +* UserName - 用户名 +* Password - 密码 + +## 最佳实践 + +1. 妥善保管认证信息,避免泄露 +2. 合理规划仓库结构和组件分类 +3. 定期清理不需要的组件和资源 +4. 使用适当的错误处理机制 + +## 注意事项 + +1. 确保 Nexus 服务器已正确配置并可访问 +2. 上传大文件时需要注意网络状况和超时设置 +3. 删除操作不可恢复,请谨慎操作 +4. 部分操作需要管理员权限