mirror of
https://github.com/foomo/contentserver.git
synced 2025-10-16 12:25:44 +00:00
84 lines
1.9 KiB
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()
|
|
}
|