123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- // Package file is a file source. Expected format is json
- package file
- import (
- "io/ioutil"
- "os"
- "gogs.baozhida.cn/zoie/OAuth-core/config/source"
- )
- type file struct {
- path string
- opts source.Options
- }
- var (
- DefaultPath = "config.json"
- )
- func (f *file) Read() (*source.ChangeSet, error) {
- fh, err := os.Open(f.path)
- if err != nil {
- return nil, err
- }
- defer fh.Close()
- b, err := ioutil.ReadAll(fh)
- if err != nil {
- return nil, err
- }
- info, err := fh.Stat()
- if err != nil {
- return nil, err
- }
- cs := &source.ChangeSet{
- Format: format(f.path, f.opts.Encoder),
- Source: f.String(),
- Timestamp: info.ModTime(),
- Data: b,
- }
- cs.Checksum = cs.Sum()
- return cs, nil
- }
- func (f *file) String() string {
- return "file"
- }
- func (f *file) Watch() (source.Watcher, error) {
- if _, err := os.Stat(f.path); err != nil {
- return nil, err
- }
- return newWatcher(f)
- }
- func (f *file) Write(cs *source.ChangeSet) error {
- return nil
- }
- func NewSource(opts ...source.Option) source.Source {
- options := source.NewOptions(opts...)
- path := DefaultPath
- f, ok := options.Context.Value(filePathKey{}).(string)
- if ok {
- path = f
- }
- return &file{opts: options, path: path}
- }
|