78 lines
1.7 KiB
Go
78 lines
1.7 KiB
Go
/*
|
|
* Copyright 2019 Umputun. All rights reserved.
|
|
* Use of this source code is governed by a MIT-style
|
|
* license that can be found in the LICENSE file.
|
|
*/
|
|
|
|
package admin
|
|
|
|
import (
|
|
"encoding/json"
|
|
|
|
"github.com/go-pkgz/jrpc"
|
|
)
|
|
|
|
// RPC implements remote engine and delegates all Calls to remote http server
|
|
type RPC struct {
|
|
jrpc.Client
|
|
}
|
|
|
|
// Key returns the key, same for all sites
|
|
func (r *RPC) Key(siteID string) (key string, err error) {
|
|
resp, err := r.Call("admin.key", siteID)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
err = json.Unmarshal(*resp.Result, &key)
|
|
return key, err
|
|
}
|
|
|
|
// Admins returns list of admin's ids for given site
|
|
func (r *RPC) Admins(siteID string) (ids []string, err error) {
|
|
resp, err := r.Call("admin.admins", siteID)
|
|
if err != nil {
|
|
return []string{}, err
|
|
}
|
|
|
|
if err := json.Unmarshal(*resp.Result, &ids); err != nil {
|
|
return []string{}, err
|
|
}
|
|
return ids, nil
|
|
}
|
|
|
|
// Email gets email address for given site
|
|
func (r *RPC) Email(siteID string) (email string, err error) {
|
|
resp, err := r.Call("admin.email", siteID)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
if err := json.Unmarshal(*resp.Result, &email); err != nil {
|
|
return "", err
|
|
}
|
|
return email, nil
|
|
}
|
|
|
|
// Enabled returns true if allowed
|
|
func (r *RPC) Enabled(siteID string) (ok bool, err error) {
|
|
resp, err := r.Call("admin.enabled", siteID)
|
|
if err != nil {
|
|
return false, err
|
|
}
|
|
|
|
if err := json.Unmarshal(*resp.Result, &ok); err != nil {
|
|
return false, err
|
|
}
|
|
return ok, nil
|
|
}
|
|
|
|
// OnEvent reacts (register) events about data modification
|
|
func (r *RPC) OnEvent(siteID string, et EventType) error {
|
|
_, err := r.Call("admin.event", siteID, et)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|