Add GetCurrentInstance()
authorMikael Berthe <mikael@lilotux.net>
Thu, 13 Apr 2017 20:54:41 +0200
changeset 112 467dd91bf1f9
parent 111 fc7cd6c90b2e
child 113 bb9aaa5440c1
Add GetCurrentInstance()
instance.go
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/instance.go	Thu Apr 13 20:54:41 2017 +0200
@@ -0,0 +1,34 @@
+package gondole
+
+import (
+	"encoding/json"
+	"fmt"
+
+	"github.com/sendgrid/rest"
+)
+
+// GetCurrentInstance returns current instance information
+func (g *Client) GetCurrentInstance() (*Instance, error) {
+	req := g.prepareRequest("instance")
+	r, err := rest.API(req)
+	if err != nil {
+		return nil, fmt.Errorf("instance: %s", err.Error())
+	}
+
+	// Check for error reply
+	var errorResult Error
+	if err := json.Unmarshal([]byte(r.Body), &errorResult); err == nil {
+		// The empty object is not an error
+		if errorResult.Text != "" {
+			return nil, fmt.Errorf("%s", errorResult.Text)
+		}
+	}
+
+	// Not an error reply; let's unmarshal the data
+	var i Instance
+	err = json.Unmarshal([]byte(r.Body), &i)
+	if err != nil {
+		return nil, fmt.Errorf("instance API: %s", err.Error())
+	}
+	return &i, nil
+}