KennethanCeyer/gowap

View on GitHub
squeak/nuts.go

Summary

Maintainability
A
0 mins
Test Coverage
package squeak

import (
    "encoding/base64"
    "encoding/json"
    "github.com/golang/snappy"
    log "github.com/sirupsen/logrus"
    "io/ioutil"
    "path/filepath"
)

type Nuts struct {
    Private string
    Public  string
}

func (n *Nuts) Save(nutsPath string) error {
    keyStore := make([]string, 2)
    for key, keyPath := range []string{n.Private, n.Public} {
        keyData, err := ioutil.ReadFile(keyPath)
        if err != nil {
            return err
        }
        keyStore[key] = string(keyData)
    }

    jsonData, _ := json.Marshal(keyStore)
    var buf []byte
    buf = snappy.Encode(buf, jsonData)
    data := make([]byte, base64.StdEncoding.EncodedLen(len(buf)))
    base64.StdEncoding.Encode(data, buf)

    log.WithFields(log.Fields{
        "nuts": filepath.Base(nutsPath),
    }).Info("new nuts has been added")

    return ioutil.WriteFile(nutsPath, data, 0644)
}