serverpod_cos
Tencent COS helper for Serverpod (presigned URL generation).
Features
- Read credentials from
passwords.yaml, pass other config directly session.cosSigner()for easy presigned URL generation
dependencies:
serverpod_cos: ^0.1.5
Configuration
passwords.yaml (credentials only)
shared:
tencentCosSecretId: '<TENCENT_SECRET_ID>'
tencentCosSecretKey: '<TENCENT_SECRET_KEY>'
Code (non-sensitive config)
final signer = session.cosSigner(
appConfig: CosAppConfig(
bucket: 'my-bucket',
region: 'ap-guangzhou',
customDomain: 'https://my-cdn.example.com',
),
);
Official storage compatibility
This package uses presigned URLs + custom endpoints.
For official CloudStorage API compatibility, use:
dependencies:
serverpod_cloud_storage_cos: ^0.1.5
Usage
import 'package:serverpod/serverpod.dart';
import 'package:serverpod_cos/serverpod_cos.dart';
class MyEndpoint extends Endpoint {
Future<String> createUploadUrl(Session session, String objectKey) async {
final signer = session.cosSigner(
appConfig: CosAppConfig(
bucket: 'my-bucket',
region: 'ap-guangzhou',
),
);
return signer.generatePresignedUrl(
'PUT',
objectKey,
expires: 3600,
);
}
}
API Reference
CosAppConfig
Non-sensitive configuration:
CosAppConfig(
bucket: 'my-bucket', // Required
region: 'ap-guangzhou', // Required
customDomain: 'https://cdn.example.com', // Optional
)
CosPasswordKeys
Customize credential keys:
CosPasswordKeys(
secretId: 'mySecretIdKey', // Default: tencentCosSecretId
secretKey: 'mySecretKeyKey', // Default: tencentCosSecretKey
)
Maintenance
- Versioning: SemVer
- Feedback: issue / PR