Files
pmg/pkg/registry/factory.go
T

38 lines
870 B
Go

package registry
import (
"fmt"
"time"
)
// RegistryType represents different package registries
type RegistryType string
const (
RegistryNPM RegistryType = "npm"
RegistryPyPI RegistryType = "pypi"
RegistryGo RegistryType = "go"
)
// FetcherFactory creates appropriate fetchers based on registry type
type FetcherFactory struct {
timeout time.Duration
}
// NewFetcherFactory creates a new factory for registry fetchers
func NewFetcherFactory(timeout time.Duration) *FetcherFactory {
return &FetcherFactory{
timeout: timeout,
}
}
// CreateFetcher returns a fetcher for the specified registry type
func (ff *FetcherFactory) CreateFetcher(registryType RegistryType) (Fetcher, error) {
switch registryType {
case RegistryNPM:
return NewNpmFetcher(ff.timeout), nil
default:
return nil, fmt.Errorf("unsupported registry type: %s", registryType)
}
}