--- a/instance.go Wed Mar 21 13:19:50 2018 +0100
+++ b/instance.go Wed Mar 21 15:06:54 2018 +0100
@@ -7,6 +7,11 @@
package madon
import (
+ "fmt"
+ "strconv"
+ "strings"
+ "time"
+
"github.com/sendgrid/rest"
)
@@ -20,6 +25,8 @@
}
// GetInstancePeers returns current instance peers
+// The peers are defined as the domains of users the instance has previously
+// resolved.
func (mc *Client) GetInstancePeers() ([]InstancePeer, error) {
var peers []InstancePeer
if err := mc.apiCall("instance/peers", rest.Get, nil, nil, nil, &peers); err != nil {
@@ -29,10 +36,31 @@
}
// GetInstanceActivity returns current instance activity
-func (mc *Client) GetInstanceActivity() (interface{}, error) {
- var activity interface{}
+func (mc *Client) GetInstanceActivity() ([]WeekActivity, error) {
+ var activity []WeekActivity
if err := mc.apiCall("instance/activity", rest.Get, nil, nil, nil, &activity); err != nil {
return nil, err
}
return activity, nil
}
+
+/* Activity time handling */
+
+// UnmarshalJSON handles deserialization for custom ActivityTime type
+func (act *ActivityTime) UnmarshalJSON(b []byte) error {
+ s, err := strconv.ParseInt(strings.Trim(string(b), "\""), 10, 64)
+ if err != nil {
+ return err
+ }
+ if s == 0 {
+ act.Time = time.Time{}
+ return nil
+ }
+ act.Time = time.Unix(s, 0)
+ return nil
+}
+
+// MarshalJSON handles serialization for custom ActivityTime type
+func (act *ActivityTime) MarshalJSON() ([]byte, error) {
+ return []byte(fmt.Sprintf("\"%d\"", act.Unix())), nil
+}