123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- package cedar
- import (
- "bufio"
- "encoding/gob"
- "encoding/json"
- "io"
- "os"
- )
- // Save saves the cedar to an io.Writer,
- // where dataType is either "json" or "gob".
- func (da *Cedar) Save(out io.Writer, dataType string) error {
- switch dataType {
- case "gob", "GOB":
- dataEecoder := gob.NewEncoder(out)
- return dataEecoder.Encode(da.cedar)
- case "json", "JSON":
- dataEecoder := json.NewEncoder(out)
- return dataEecoder.Encode(da.cedar)
- }
- return ErrInvalidDataType
- }
- // SaveToFile saves the cedar to a file,
- // where dataType is either "json" or "gob".
- func (da *Cedar) SaveToFile(fileName string, dataType string) error {
- file, err := os.OpenFile(fileName, os.O_CREATE|os.O_WRONLY, 0666)
- if err != nil {
- return err
- }
- defer file.Close()
- out := bufio.NewWriter(file)
- defer out.Flush()
- da.Save(out, dataType)
- return nil
- }
- // Load loads the cedar from an io.Writer,
- // where dataType is either "json" or "gob".
- func (da *Cedar) Load(in io.Reader, dataType string) error {
- switch dataType {
- case "gob", "GOB":
- dataDecoder := gob.NewDecoder(in)
- return dataDecoder.Decode(da.cedar)
- case "json", "JSON":
- dataDecoder := json.NewDecoder(in)
- return dataDecoder.Decode(da.cedar)
- }
- return ErrInvalidDataType
- }
- // LoadFromFile loads the cedar from a file,
- // where dataType is either "json" or "gob".
- func (da *Cedar) LoadFromFile(fileName string, dataType string) error {
- file, err := os.OpenFile(fileName, os.O_RDONLY, 0600)
- defer file.Close()
- if err != nil {
- return err
- }
- in := bufio.NewReader(file)
- return da.Load(in, dataType)
- }
|