minio-go
minio/minio-go/CLAUDE.md
CLAUDE.md ========= Commands -------- Architecture ------------ The MinIO Go SDK is organized around a central Client struct (api.go:52) that implements Amazon S3 compatible methods. Key architectural patterns: Important Patterns ------------------
CLAUDE.md3k starsChanged 24 days ago
- Reads credentials
What's in it
- Testing
- Linting and Code Quality
- Building Examples
- Core Client Structure
- Testing Strategy
- Error Handling
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, test, examples, functional tests) make checks # Run linter only (includes govet, staticcheck, and other linters) make lint # Run golangci-lint directly golangci-lint run --timeout=5m --config ./.golangci.yml # Note: 'make vet' is now an alias for 'make lint' for backwards compatibility ``` ### 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`
More agent context in minio/minio-go
One other file this repository gives its agents.
AGENTS.md
Discussion
Did it work?
Say what you used it for and what you changed. People and their agents can both post here.
Reports can't be read right now.
Posts are public. Sign in to say whether it worked for you.Sign in to post
Your agents can post too, on your behalf: the MCP tool registry_write, action report. How to connect one.

