From e97ac5033fe63309e630b807e8814de771641d67 Mon Sep 17 00:00:00 2001 From: James Shubin Date: Sat, 4 Mar 2017 19:43:19 -0500 Subject: [PATCH] resources: Split util functions into separate file This also adds errwrap to their implementation. --- resources/resources.go | 35 ------------------------- resources/util.go | 59 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+), 35 deletions(-) create mode 100644 resources/util.go diff --git a/resources/resources.go b/resources/resources.go index 05293e29..3475b8b7 100644 --- a/resources/resources.go +++ b/resources/resources.go @@ -19,9 +19,6 @@ package resources import ( - "bytes" - "encoding/base64" - "encoding/gob" "fmt" "log" "math" @@ -674,35 +671,3 @@ func (obj *BaseRes) Poll() error { func (obj *BaseRes) Prometheus() *prometheus.Prometheus { return obj.prometheus } - -// ResToB64 encodes a resource to a base64 encoded string (after serialization) -func ResToB64(res Res) (string, error) { - b := bytes.Buffer{} - e := gob.NewEncoder(&b) - err := e.Encode(&res) // pass with & - if err != nil { - return "", fmt.Errorf("Gob failed to encode: %v", err) - } - return base64.StdEncoding.EncodeToString(b.Bytes()), nil -} - -// B64ToRes decodes a resource from a base64 encoded string (after deserialization) -func B64ToRes(str string) (Res, error) { - var output interface{} - bb, err := base64.StdEncoding.DecodeString(str) - if err != nil { - return nil, fmt.Errorf("Base64 failed to decode: %v", err) - } - b := bytes.NewBuffer(bb) - d := gob.NewDecoder(b) - err = d.Decode(&output) // pass with & - if err != nil { - return nil, fmt.Errorf("Gob failed to decode: %v", err) - } - res, ok := output.(Res) - if !ok { - return nil, fmt.Errorf("Output %v is not a Res", res) - - } - return res, nil -} diff --git a/resources/util.go b/resources/util.go new file mode 100644 index 00000000..9ef4eada --- /dev/null +++ b/resources/util.go @@ -0,0 +1,59 @@ +// Mgmt +// Copyright (C) 2013-2017+ James Shubin and the project contributors +// Written by James Shubin and the project contributors +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + +package resources + +import ( + "bytes" + "encoding/base64" + "encoding/gob" + "fmt" + + errwrap "github.com/pkg/errors" +) + +// ResToB64 encodes a resource to a base64 encoded string (after serialization). +func ResToB64(res Res) (string, error) { + b := bytes.Buffer{} + e := gob.NewEncoder(&b) + err := e.Encode(&res) // pass with & + if err != nil { + return "", errwrap.Wrapf(err, "gob failed to encode") + } + return base64.StdEncoding.EncodeToString(b.Bytes()), nil +} + +// B64ToRes decodes a resource from a base64 encoded string (after deserialization). +func B64ToRes(str string) (Res, error) { + var output interface{} + bb, err := base64.StdEncoding.DecodeString(str) + if err != nil { + return nil, errwrap.Wrapf(err, "base64 failed to decode") + } + b := bytes.NewBuffer(bb) + d := gob.NewDecoder(b) + err = d.Decode(&output) // pass with & + if err != nil { + return nil, errwrap.Wrapf(err, "gob failed to decode") + } + res, ok := output.(Res) + if !ok { + return nil, fmt.Errorf("Output %v is not a Res", res) + + } + return res, nil +}