diff options
Diffstat (limited to 'vendor/github.com/minio/minio-go/v7/CLAUDE.md')
| -rw-r--r-- | vendor/github.com/minio/minio-go/v7/CLAUDE.md | 125 |
1 files changed, 0 insertions, 125 deletions
diff --git a/vendor/github.com/minio/minio-go/v7/CLAUDE.md b/vendor/github.com/minio/minio-go/v7/CLAUDE.md deleted file mode 100644 index 26ff95323..000000000 --- a/vendor/github.com/minio/minio-go/v7/CLAUDE.md +++ /dev/null @@ -1,125 +0,0 @@ -CLAUDE.md -========= - -This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. - -Commands --------- - -### Testing - -```bash -# Run all tests with race detection (requires MinIO server at localhost:9000) -SERVER_ENDPOINT=localhost:9000 ACCESS_KEY=minioadmin SECRET_KEY=minioadmin ENABLE_HTTPS=1 MINT_MODE=full go test -race -v ./... - -# Run tests without race detection -go test ./... - -# Run short tests only (no functional tests) -go test -short -race ./... - -# Run functional tests -go build -race functional_tests.go -SERVER_ENDPOINT=localhost:9000 ACCESS_KEY=minioadmin SECRET_KEY=minioadmin ENABLE_HTTPS=1 MINT_MODE=full ./functional_tests - -# Run functional tests without TLS -SERVER_ENDPOINT=localhost:9000 ACCESS_KEY=minioadmin SECRET_KEY=minioadmin ENABLE_HTTPS=0 MINT_MODE=full ./functional_tests -``` - -### Linting and Code Quality - -```bash -# Run all checks (lint, vet, test, examples, functional tests) -make checks - -# Run linter only -make lint - -# Run vet and staticcheck -make vet - -# Alternative: run golangci-lint directly -golangci-lint run --timeout=5m --config ./.golangci.yml -``` - -### Building Examples - -```bash -# Build all examples -make examples - -# Build a specific example -cd examples/s3 && go build -mod=mod putobject.go -``` - -Architecture ------------- - -### Core Client Structure - -The MinIO Go SDK is organized around a central `Client` struct (api.go:52) that implements Amazon S3 compatible methods. Key architectural patterns: - -1. **Modular API Organization**: API methods are split into logical files: - - - `api-bucket-*.go`: Bucket operations (lifecycle, encryption, versioning, etc.) - - `api-object-*.go`: Object operations (legal hold, retention, tagging, etc.) - - `api-get-*.go`, `api-put-*.go`: GET and PUT operations - - `api-list.go`: Listing operations - - `api-stat.go`: Status/info operations - -2. **Credential Management**: The `pkg/credentials/` package provides various credential providers: - - - Static credentials - - Environment variables (AWS/MinIO) - - IAM roles - - STS (Security Token Service) variants - - File-based credentials - - Chain provider for fallback mechanisms - -3. **Request Signing**: The `pkg/signer/` package handles AWS signature versions: - - - V2 signatures (legacy) - - V4 signatures (standard) - - Streaming signatures for large uploads - -4. **Transport Layer**: Custom HTTP transport with: - - - Retry logic with configurable max retries - - Health status monitoring - - Tracing support via httptrace - - Bucket location caching (`bucketLocCache`\) - - Session caching for credentials - -5. **Helper Packages**: - - - `pkg/encrypt/`: Server-side encryption utilities - - `pkg/notification/`: Event notification handling - - `pkg/policy/`: Bucket policy management - - `pkg/lifecycle/`: Object lifecycle rules - - `pkg/tags/`: Object and bucket tagging - - `pkg/s3utils/`: S3 utility functions - - `pkg/kvcache/`: Key-value caching - - `pkg/singleflight/`: Deduplication of concurrent requests - -### Testing Strategy - -- Unit tests alongside implementation files (`*_test.go`\) -- Comprehensive functional tests in `functional_tests.go` requiring a live MinIO server -- Example programs in `examples/` directory demonstrating API usage -- Build tag `//go:build mint` for integration tests - -### Error Handling - -- Custom error types in `api-error-response.go` -- HTTP status code mapping -- Retry logic for transient failures -- Detailed error context preservation - -Important Patterns ------------------- - -1. **Context Usage**: All API methods accept `context.Context` for cancellation and timeout control -2. **Options Pattern**: Methods use Options structs for optional parameters (e.g., `PutObjectOptions`, `GetObjectOptions`\) -3. **Streaming Support**: Large file operations use io.Reader/Writer interfaces for memory efficiency -4. **Bucket Lookup Types**: Supports both path-style and virtual-host-style S3 URLs -5. **MD5/SHA256 Hashing**: Configurable hash functions for integrity checks via `md5Hasher` and `sha256Hasher` |
