46 lines
907 B
Go
46 lines
907 B
Go
|
package api
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
|
||
|
"git.tilde.town/tildetown/bbj2/server/cmd/config"
|
||
|
"git.tilde.town/tildetown/bbj2/server/cmd/db"
|
||
|
)
|
||
|
|
||
|
type HTTPError struct {
|
||
|
Msg string
|
||
|
Code int
|
||
|
}
|
||
|
|
||
|
func (e *HTTPError) Error() string {
|
||
|
return fmt.Sprintf("%d %s", e.Code, e.Msg)
|
||
|
}
|
||
|
|
||
|
type BBJResponse struct {
|
||
|
Error bool `json:"error"`
|
||
|
Data interface{} `json:"data"`
|
||
|
Usermap map[string]db.User `json:"usermap"`
|
||
|
}
|
||
|
|
||
|
type API struct {
|
||
|
User *db.User
|
||
|
Opts config.Options
|
||
|
}
|
||
|
|
||
|
func (a *API) InstanceInfo() (*BBJResponse, error) {
|
||
|
type instanceInfo struct {
|
||
|
InstanceName string `json:"instance_name"`
|
||
|
AllowAnon bool `json:"allow_anon"`
|
||
|
Admins []string
|
||
|
}
|
||
|
return &BBJResponse{
|
||
|
Data: instanceInfo{
|
||
|
InstanceName: a.Opts.Config.InstanceName,
|
||
|
AllowAnon: a.Opts.Config.AllowAnon,
|
||
|
Admins: a.Opts.Config.Admins,
|
||
|
},
|
||
|
}, nil
|
||
|
}
|
||
|
|
||
|
type ApiHandler func() (*BBJResponse, error)
|