contentserver/client/client.go

84 lines
1.9 KiB
Go

package client
import (
"time"
"github.com/foomo/contentserver/content"
"github.com/foomo/contentserver/requests"
"github.com/foomo/contentserver/responses"
"github.com/foomo/contentserver/server"
)
// Client a content server client
type Client struct {
t transport
}
func NewClient(
server string,
connectionPoolSize int,
waitTimeout time.Duration,
) (c *Client, err error) {
c = &Client{
t: newSocketTransport(server, connectionPoolSize, waitTimeout),
}
return
}
func NewHTTPClient(server string) (c *Client, err error) {
c = &Client{
t: newHTTPTransport(server),
}
return
}
// Update tell the server to update itself
func (c *Client) Update() (response *responses.Update, err error) {
response = &responses.Update{}
err = c.t.call(server.HandlerUpdate, &requests.Update{}, response)
return
}
// GetContent request site content
func (c *Client) GetContent(request *requests.Content) (response *content.SiteContent, err error) {
response = &content.SiteContent{}
err = c.t.call(server.HandlerGetContent, request, response)
return
}
// GetURIs resolve uris for ids in a dimension
func (c *Client) GetURIs(dimension string, IDs []string) (uriMap map[string]string, err error) {
uriMap = map[string]string{}
err = c.t.call(
server.HandlerGetURIs,
&requests.URIs{
Dimension: dimension,
IDs: IDs,
},
&uriMap,
)
return
}
// GetNodes request nodes
func (c *Client) GetNodes(env *requests.Env, nodes map[string]*requests.Node) (nodesResponse map[string]*content.Node, err error) {
r := &requests.Nodes{
Env: env,
Nodes: nodes,
}
nodesResponse = map[string]*content.Node{}
err = c.t.call(server.HandlerGetNodes, r, &nodesResponse)
return
}
// GetRepo get the whole repo
func (c *Client) GetRepo() (response map[string]*content.RepoNode, err error) {
response = map[string]*content.RepoNode{}
err = c.t.call(server.HandlerGetRepo, &requests.Repo{}, &response)
return
}
func (c *Client) ShutDown() {
c.t.shutdown()
}