{"id":30232259,"url":"https://github.com/hardyscc/storage-svc","last_synced_at":"2025-08-14T23:40:25.217Z","repository":{"id":304483371,"uuid":"1018917269","full_name":"hardyscc/storage-svc","owner":"hardyscc","description":null,"archived":false,"fork":false,"pushed_at":"2025-07-13T12:44:48.000Z","size":27,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-13T12:46:02.383Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hardyscc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-07-13T10:41:01.000Z","updated_at":"2025-07-13T12:44:51.000Z","dependencies_parsed_at":"2025-07-13T12:46:06.169Z","dependency_job_id":"edf4177e-bfb5-487e-8f74-54b7c433f254","html_url":"https://github.com/hardyscc/storage-svc","commit_stats":null,"previous_names":["hardyscc/storage-svc"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/hardyscc/storage-svc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hardyscc%2Fstorage-svc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hardyscc%2Fstorage-svc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hardyscc%2Fstorage-svc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hardyscc%2Fstorage-svc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hardyscc","download_url":"https://codeload.github.com/hardyscc/storage-svc/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hardyscc%2Fstorage-svc/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270500503,"owners_count":24595156,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-14T02:00:10.309Z","response_time":75,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-08-14T23:40:19.534Z","updated_at":"2025-08-14T23:40:25.203Z","avatar_url":"https://github.com/hardyscc.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Storage Service - AWS S3 Compatible API\n\nThis is a Spring Boot 3 application that provides an AWS S3 compatible API using local file system storage.\n\n## Features\n\n- AWS S3 compatible REST API\n- Authentication and authorization using access/secret keys\n- Local file system storage\n- Support for bucket operations (create, delete, list)\n- Support for object operations (put, get, delete, head, list)\n- Compatible with MinIO client CLI\n\n## Configuration\n\nThe application uses the following default configuration:\n\n- **Port**: 9000\n- **Access Key**: minioadmin\n- **Secret Key**: minioadmin\n- **Storage Path**: ./storage-data\n- **Bucket Metadata Path**: ./bucket-metadata\n\nYou can customize these settings in `src/main/resources/application.properties`.\n\n## Running the Application\n\n### Prerequisites\n\n- Java 17 or higher\n- Maven 3.6 or higher\n\n### Build and Run\n\n```bash\nmvn clean install\nmvn spring-boot:run\n```\n\nThe service will start on port 9000.\n\n## Testing with MinIO Client\n\n### Install MinIO Client\n\n```bash\n# macOS\nbrew install minio/stable/mc\n\n# Linux\nwget https://dl.min.io/client/mc/release/linux-amd64/mc\nchmod +x mc\nsudo mv mc /usr/local/bin/\n\n# Or use the provided setup script\n./setup-minio-cli.sh\n```\n\n### Automated Testing\n\nThis project includes comprehensive test scripts for MinIO CLI:\n\n#### Quick Test\n\n```bash\n./quick-test-minio.sh\n```\n\nPerforms basic operations to verify the service is working correctly.\n\n#### Comprehensive Test Suite\n\n```bash\n./test-minio-cli.sh\n```\n\nRuns a full test suite including:\n\n- Bucket operations (create, list, delete)\n- Object operations (upload, download, delete, metadata)\n- Nested folder structures\n- File integrity verification\n- Error handling\n- Performance testing with concurrent operations\n- Complete cleanup\n\n### Manual Testing\n\n#### Configure MinIO Client\n\n```bash\nmc alias set local http://localhost:9000 minioadmin minioadmin\n```\n\n### Basic Operations\n\n#### List buckets\n\n```bash\nmc ls local\n```\n\n#### Create a bucket\n\n```bash\nmc mb local/test-bucket\n```\n\n#### Upload a file\n\n```bash\necho \"Hello World\" \u003e test.txt\nmc cp test.txt local/test-bucket/\n```\n\n#### List objects in bucket\n\n```bash\nmc ls local/test-bucket\n```\n\n#### Download a file\n\n```bash\nmc cp local/test-bucket/test.txt downloaded-test.txt\n```\n\n#### Delete a file\n\n```bash\nmc rm local/test-bucket/test.txt\n```\n\n#### Delete a bucket\n\n```bash\nmc rb local/test-bucket\n```\n\n## API Endpoints\n\n### Bucket Operations\n\n- `GET /` - List all buckets\n- `PUT /{bucketName}` - Create a bucket\n- `DELETE /{bucketName}` - Delete a bucket\n- `GET /{bucketName}` - List objects in bucket\n\n### Object Operations\n\n- `PUT /{bucketName}/{objectKey}` - Upload an object\n- `GET /{bucketName}/{objectKey}` - Download an object\n- `DELETE /{bucketName}/{objectKey}` - Delete an object\n- `HEAD /{bucketName}/{objectKey}` - Get object metadata\n\n## Authentication\n\nThe service uses AWS Signature Version 4 authentication (simplified implementation). The MinIO client handles this automatically when configured with the access and secret keys.\n\n## Storage Structure\n\nFiles are stored in the local file system under the configured storage path:\n\n```\n./storage-data/\n├── bucket1/\n│   ├── file1.txt\n│   └── folder/\n│       └── file2.txt\n└── bucket2/\n    └── another-file.txt\n```\n\n## Health Check\n\nCheck application health:\n\n```bash\ncurl http://localhost:9000/actuator/health\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhardyscc%2Fstorage-svc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhardyscc%2Fstorage-svc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhardyscc%2Fstorage-svc/lists"}