author | Mikael Berthe <mikael@lilotux.net> |
Wed, 21 Mar 2018 15:06:54 +0100 | |
changeset 221 | f9228d1f4267 |
parent 211 | 12f0761e6442 |
child 238 | 1c0042e76902 |
permissions | -rw-r--r-- |
130 | 1 |
/* |
207 | 2 |
Copyright 2017-2018 Mikael Berthe |
130 | 3 |
|
4 |
Licensed under the MIT license. Please see the LICENSE file is this directory. |
|
5 |
*/ |
|
6 |
||
138
23d3a518d0ad
Update package name in source files
Mikael Berthe <mikael@lilotux.net>
parents:
130
diff
changeset
|
7 |
package madon |
112 | 8 |
|
9 |
import ( |
|
221
f9228d1f4267
instance activity: Add a WeekActivity type
Mikael Berthe <mikael@lilotux.net>
parents:
211
diff
changeset
|
10 |
"fmt" |
f9228d1f4267
instance activity: Add a WeekActivity type
Mikael Berthe <mikael@lilotux.net>
parents:
211
diff
changeset
|
11 |
"strconv" |
f9228d1f4267
instance activity: Add a WeekActivity type
Mikael Berthe <mikael@lilotux.net>
parents:
211
diff
changeset
|
12 |
"strings" |
f9228d1f4267
instance activity: Add a WeekActivity type
Mikael Berthe <mikael@lilotux.net>
parents:
211
diff
changeset
|
13 |
"time" |
f9228d1f4267
instance activity: Add a WeekActivity type
Mikael Berthe <mikael@lilotux.net>
parents:
211
diff
changeset
|
14 |
|
112 | 15 |
"github.com/sendgrid/rest" |
16 |
) |
|
17 |
||
18 |
// GetCurrentInstance returns current instance information |
|
138
23d3a518d0ad
Update package name in source files
Mikael Berthe <mikael@lilotux.net>
parents:
130
diff
changeset
|
19 |
func (mc *Client) GetCurrentInstance() (*Instance, error) { |
112 | 20 |
var i Instance |
155 | 21 |
if err := mc.apiCall("instance", rest.Get, nil, nil, nil, &i); err != nil { |
120 | 22 |
return nil, err |
112 | 23 |
} |
24 |
return &i, nil |
|
25 |
} |
|
210
3f1f5cb7ae70
Initial instance statistics (peers/activity) support
Mikael Berthe <mikael@lilotux.net>
parents:
207
diff
changeset
|
26 |
|
3f1f5cb7ae70
Initial instance statistics (peers/activity) support
Mikael Berthe <mikael@lilotux.net>
parents:
207
diff
changeset
|
27 |
// GetInstancePeers returns current instance peers |
221
f9228d1f4267
instance activity: Add a WeekActivity type
Mikael Berthe <mikael@lilotux.net>
parents:
211
diff
changeset
|
28 |
// The peers are defined as the domains of users the instance has previously |
f9228d1f4267
instance activity: Add a WeekActivity type
Mikael Berthe <mikael@lilotux.net>
parents:
211
diff
changeset
|
29 |
// resolved. |
211
12f0761e6442
Add new type InstancePeer
Mikael Berthe <mikael@lilotux.net>
parents:
210
diff
changeset
|
30 |
func (mc *Client) GetInstancePeers() ([]InstancePeer, error) { |
12f0761e6442
Add new type InstancePeer
Mikael Berthe <mikael@lilotux.net>
parents:
210
diff
changeset
|
31 |
var peers []InstancePeer |
210
3f1f5cb7ae70
Initial instance statistics (peers/activity) support
Mikael Berthe <mikael@lilotux.net>
parents:
207
diff
changeset
|
32 |
if err := mc.apiCall("instance/peers", rest.Get, nil, nil, nil, &peers); err != nil { |
3f1f5cb7ae70
Initial instance statistics (peers/activity) support
Mikael Berthe <mikael@lilotux.net>
parents:
207
diff
changeset
|
33 |
return nil, err |
3f1f5cb7ae70
Initial instance statistics (peers/activity) support
Mikael Berthe <mikael@lilotux.net>
parents:
207
diff
changeset
|
34 |
} |
3f1f5cb7ae70
Initial instance statistics (peers/activity) support
Mikael Berthe <mikael@lilotux.net>
parents:
207
diff
changeset
|
35 |
return peers, nil |
3f1f5cb7ae70
Initial instance statistics (peers/activity) support
Mikael Berthe <mikael@lilotux.net>
parents:
207
diff
changeset
|
36 |
} |
3f1f5cb7ae70
Initial instance statistics (peers/activity) support
Mikael Berthe <mikael@lilotux.net>
parents:
207
diff
changeset
|
37 |
|
3f1f5cb7ae70
Initial instance statistics (peers/activity) support
Mikael Berthe <mikael@lilotux.net>
parents:
207
diff
changeset
|
38 |
// GetInstanceActivity returns current instance activity |
221
f9228d1f4267
instance activity: Add a WeekActivity type
Mikael Berthe <mikael@lilotux.net>
parents:
211
diff
changeset
|
39 |
func (mc *Client) GetInstanceActivity() ([]WeekActivity, error) { |
f9228d1f4267
instance activity: Add a WeekActivity type
Mikael Berthe <mikael@lilotux.net>
parents:
211
diff
changeset
|
40 |
var activity []WeekActivity |
210
3f1f5cb7ae70
Initial instance statistics (peers/activity) support
Mikael Berthe <mikael@lilotux.net>
parents:
207
diff
changeset
|
41 |
if err := mc.apiCall("instance/activity", rest.Get, nil, nil, nil, &activity); err != nil { |
3f1f5cb7ae70
Initial instance statistics (peers/activity) support
Mikael Berthe <mikael@lilotux.net>
parents:
207
diff
changeset
|
42 |
return nil, err |
3f1f5cb7ae70
Initial instance statistics (peers/activity) support
Mikael Berthe <mikael@lilotux.net>
parents:
207
diff
changeset
|
43 |
} |
3f1f5cb7ae70
Initial instance statistics (peers/activity) support
Mikael Berthe <mikael@lilotux.net>
parents:
207
diff
changeset
|
44 |
return activity, nil |
3f1f5cb7ae70
Initial instance statistics (peers/activity) support
Mikael Berthe <mikael@lilotux.net>
parents:
207
diff
changeset
|
45 |
} |
221
f9228d1f4267
instance activity: Add a WeekActivity type
Mikael Berthe <mikael@lilotux.net>
parents:
211
diff
changeset
|
46 |
|
f9228d1f4267
instance activity: Add a WeekActivity type
Mikael Berthe <mikael@lilotux.net>
parents:
211
diff
changeset
|
47 |
/* Activity time handling */ |
f9228d1f4267
instance activity: Add a WeekActivity type
Mikael Berthe <mikael@lilotux.net>
parents:
211
diff
changeset
|
48 |
|
f9228d1f4267
instance activity: Add a WeekActivity type
Mikael Berthe <mikael@lilotux.net>
parents:
211
diff
changeset
|
49 |
// UnmarshalJSON handles deserialization for custom ActivityTime type |
f9228d1f4267
instance activity: Add a WeekActivity type
Mikael Berthe <mikael@lilotux.net>
parents:
211
diff
changeset
|
50 |
func (act *ActivityTime) UnmarshalJSON(b []byte) error { |
f9228d1f4267
instance activity: Add a WeekActivity type
Mikael Berthe <mikael@lilotux.net>
parents:
211
diff
changeset
|
51 |
s, err := strconv.ParseInt(strings.Trim(string(b), "\""), 10, 64) |
f9228d1f4267
instance activity: Add a WeekActivity type
Mikael Berthe <mikael@lilotux.net>
parents:
211
diff
changeset
|
52 |
if err != nil { |
f9228d1f4267
instance activity: Add a WeekActivity type
Mikael Berthe <mikael@lilotux.net>
parents:
211
diff
changeset
|
53 |
return err |
f9228d1f4267
instance activity: Add a WeekActivity type
Mikael Berthe <mikael@lilotux.net>
parents:
211
diff
changeset
|
54 |
} |
f9228d1f4267
instance activity: Add a WeekActivity type
Mikael Berthe <mikael@lilotux.net>
parents:
211
diff
changeset
|
55 |
if s == 0 { |
f9228d1f4267
instance activity: Add a WeekActivity type
Mikael Berthe <mikael@lilotux.net>
parents:
211
diff
changeset
|
56 |
act.Time = time.Time{} |
f9228d1f4267
instance activity: Add a WeekActivity type
Mikael Berthe <mikael@lilotux.net>
parents:
211
diff
changeset
|
57 |
return nil |
f9228d1f4267
instance activity: Add a WeekActivity type
Mikael Berthe <mikael@lilotux.net>
parents:
211
diff
changeset
|
58 |
} |
f9228d1f4267
instance activity: Add a WeekActivity type
Mikael Berthe <mikael@lilotux.net>
parents:
211
diff
changeset
|
59 |
act.Time = time.Unix(s, 0) |
f9228d1f4267
instance activity: Add a WeekActivity type
Mikael Berthe <mikael@lilotux.net>
parents:
211
diff
changeset
|
60 |
return nil |
f9228d1f4267
instance activity: Add a WeekActivity type
Mikael Berthe <mikael@lilotux.net>
parents:
211
diff
changeset
|
61 |
} |
f9228d1f4267
instance activity: Add a WeekActivity type
Mikael Berthe <mikael@lilotux.net>
parents:
211
diff
changeset
|
62 |
|
f9228d1f4267
instance activity: Add a WeekActivity type
Mikael Berthe <mikael@lilotux.net>
parents:
211
diff
changeset
|
63 |
// MarshalJSON handles serialization for custom ActivityTime type |
f9228d1f4267
instance activity: Add a WeekActivity type
Mikael Berthe <mikael@lilotux.net>
parents:
211
diff
changeset
|
64 |
func (act *ActivityTime) MarshalJSON() ([]byte, error) { |
f9228d1f4267
instance activity: Add a WeekActivity type
Mikael Berthe <mikael@lilotux.net>
parents:
211
diff
changeset
|
65 |
return []byte(fmt.Sprintf("\"%d\"", act.Unix())), nil |
f9228d1f4267
instance activity: Add a WeekActivity type
Mikael Berthe <mikael@lilotux.net>
parents:
211
diff
changeset
|
66 |
} |