instance.go
changeset 239 ca5639b4768e
parent 238 1c0042e76902
equal deleted inserted replaced
238:1c0042e76902 239:ca5639b4768e
     5 */
     5 */
     6 
     6 
     7 package madon
     7 package madon
     8 
     8 
     9 import (
     9 import (
    10 	"fmt"
       
    11 	"strconv"
       
    12 	"strings"
       
    13 	"time"
       
    14 
       
    15 	"github.com/sendgrid/rest"
    10 	"github.com/sendgrid/rest"
    16 )
    11 )
    17 
    12 
    18 // GetCurrentInstance returns current instance information
    13 // GetCurrentInstance returns current instance information
    19 func (mc *Client) GetCurrentInstance() (*Instance, error) {
    14 func (mc *Client) GetCurrentInstance() (*Instance, error) {
    43 	if err := mc.apiCall("v1/instance/activity", rest.Get, nil, nil, nil, &activity); err != nil {
    38 	if err := mc.apiCall("v1/instance/activity", rest.Get, nil, nil, nil, &activity); err != nil {
    44 		return nil, err
    39 		return nil, err
    45 	}
    40 	}
    46 	return activity, nil
    41 	return activity, nil
    47 }
    42 }
    48 
       
    49 /* Activity time handling */
       
    50 
       
    51 // UnmarshalJSON handles deserialization for custom ActivityTime type
       
    52 func (act *ActivityTime) UnmarshalJSON(b []byte) error {
       
    53 	s, err := strconv.ParseInt(strings.Trim(string(b), "\""), 10, 64)
       
    54 	if err != nil {
       
    55 		return err
       
    56 	}
       
    57 	if s == 0 {
       
    58 		act.Time = time.Time{}
       
    59 		return nil
       
    60 	}
       
    61 	act.Time = time.Unix(s, 0)
       
    62 	return nil
       
    63 }
       
    64 
       
    65 // MarshalJSON handles serialization for custom ActivityTime type
       
    66 func (act *ActivityTime) MarshalJSON() ([]byte, error) {
       
    67 	return []byte(fmt.Sprintf("\"%d\"", act.Unix())), nil
       
    68 }