2.6 KiB
2.6 KiB
| title |
|---|
| Core.IO |
Core.IO
Short: Local/remote filesystem helpers.
Overview
Abstracts filesystems (local, SFTP, WebDAV) behind a unified API for reading/writing and listing.
Setup
import (
"github.com/Snider/Core"
"github.com/Snider/Core/io"
"github.com/Snider/Core/io/sftp"
"github.com/Snider/Core/io/webdav"
)
// Example of creating a local medium (pre-initialized)
localMedium := io.Local
// Example of creating an SFTP medium
sftpConfig := sftp.ConnectionConfig{
// ... configure SFTP connection
}
sftpMedium, err := io.NewSFTPMedium(sftpConfig)
if err != nil {
// handle error
}
// Example of creating a WebDAV medium
webdavConfig := webdav.ConnectionConfig{
// ... configure WebDAV connection
}
webdavMedium, err := io.NewWebDAVMedium(webdavConfig)
if err != nil {
// handle error
}
// You can then pass these mediums to services that require an io.Medium
// For example, if a service's New function accepts an io.Medium:
// myService := myservice.New(localMedium)
// If a service registers with core.WithService and needs an io.Medium,
// it would typically receive it during its ServiceStartup or via its New constructor.
// The core.Core itself does not directly register io.Medium implementations
// as services in the same way as other modules, but rather consumes them.
app := core.New(
// ... other services
core.WithServiceLock(),
)
Use
- Access the local filesystem:
io.Local - Create SFTP/WebDAV mediums:
io.NewSFTPMedium(...),io.NewWebDAVMedium(...) - Read/write files using a
Medium:medium.Read(path),medium.Write(path, data) - List directories (if supported by
Mediumimplementation):medium.List(path)(Note:Listis not currently in theMediuminterface, butFileGet,FileSet,EnsureDir,IsFileare) - Copy files between mediums:
io.Copy(sourceMedium, sourcePath, destMedium, destPath)
API
Functions
NewSFTPMedium(cfg sftp.ConnectionConfig) (Medium, error)NewWebDAVMedium(cfg webdav.ConnectionConfig) (Medium, error)Read(m Medium, path string) (string, error)Write(m Medium, path, content string) errorEnsureDir(m Medium, path string) errorIsFile(m Medium, path string) boolCopy(sourceMedium Medium, sourcePath string, destMedium Medium, destPath string) error
Variables
var Local Medium
Interfaces
Mediuminterface:Read(path string) (string, error)Write(path, content string) errorEnsureDir(path string) errorIsFile(path string) boolFileGet(path string) (string, error)FileSet(path, content string) error
Notes
- See package
pkg/io/sftpandpkg/io/webdavfor specific medium configurations.