Client flush func
This commit is contained in:
parent
185ebcd7a0
commit
1a4f3aaa4c
@ -14,6 +14,7 @@ import (
|
|||||||
const (
|
const (
|
||||||
publishEndpoint = "/publish"
|
publishEndpoint = "/publish"
|
||||||
subscribeEndpoint = "/subscribe"
|
subscribeEndpoint = "/subscribe"
|
||||||
|
flushEndpoint = "/flush"
|
||||||
statusEndpoit = "/status"
|
statusEndpoit = "/status"
|
||||||
debugEndpoint = "/debug"
|
debugEndpoint = "/debug"
|
||||||
)
|
)
|
||||||
@ -94,37 +95,35 @@ func (c *Client) Publish(m *Message) bool {
|
|||||||
|
|
||||||
func (c *Client) Subscribe(queues ...string) *Message {
|
func (c *Client) Subscribe(queues ...string) *Message {
|
||||||
url := c.url(subscribeEndpoint, "?queues=", strings.Join(queues, ","))
|
url := c.url(subscribeEndpoint, "?queues=", strings.Join(queues, ","))
|
||||||
|
head, body := c.get(url)
|
||||||
res, err := c.httpClient.Get(url)
|
|
||||||
if err != nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
body, err := ioutil.ReadAll(res.Body)
|
|
||||||
if err != nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
res.Body.Close()
|
|
||||||
|
|
||||||
return &Message{
|
return &Message{
|
||||||
Queue: res.Header.Get("Queue"),
|
Queue: head.Get("Queue"),
|
||||||
Body: body,
|
Body: body,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Client) Status() (stat []*QueueInfo) {
|
func (c *Client) Flush(queues ...string) (messages []*Message) {
|
||||||
url := c.url(statusEndpoit)
|
url := c.url(flushEndpoint, "?queues=", strings.Join(queues, ","))
|
||||||
res, err := http.Get(url)
|
_, body := c.get(url)
|
||||||
if err != nil {
|
|
||||||
|
var tmp []map[string]string
|
||||||
|
if err := json.Unmarshal(body, &tmp); err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
defer res.Body.Close()
|
messages = []*Message{}
|
||||||
body, err := ioutil.ReadAll(res.Body)
|
for _, msg := range tmp {
|
||||||
if err != nil {
|
messages = append(messages, &Message{msg["queue"], []byte(msg["message"])})
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) Status() (stat []*QueueInfo) {
|
||||||
|
url := c.url(statusEndpoit)
|
||||||
|
_, body := c.get(url)
|
||||||
|
|
||||||
tmp := make(map[string]map[string]int)
|
tmp := make(map[string]map[string]int)
|
||||||
if err := json.Unmarshal(body, &tmp); err != nil {
|
if err := json.Unmarshal(body, &tmp); err != nil {
|
||||||
return
|
return
|
||||||
@ -144,16 +143,7 @@ func (c *Client) Status() (stat []*QueueInfo) {
|
|||||||
|
|
||||||
func (c *Client) Debug() *DebugInfo {
|
func (c *Client) Debug() *DebugInfo {
|
||||||
url := c.url(debugEndpoint)
|
url := c.url(debugEndpoint)
|
||||||
res, err := http.Get(url)
|
_, body := c.get(url)
|
||||||
if err != nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
body, err := ioutil.ReadAll(res.Body)
|
|
||||||
if err != nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
res.Body.Close()
|
|
||||||
|
|
||||||
var dbg DebugInfo
|
var dbg DebugInfo
|
||||||
if err := json.Unmarshal(body, &dbg); err != nil {
|
if err := json.Unmarshal(body, &dbg); err != nil {
|
||||||
@ -163,6 +153,21 @@ func (c *Client) Debug() *DebugInfo {
|
|||||||
return &dbg
|
return &dbg
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *Client) get(url string) (http.Header, []byte) {
|
||||||
|
res, err := http.Get(url)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
body, err := ioutil.ReadAll(res.Body)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
res.Body.Close()
|
||||||
|
|
||||||
|
return res.Header, body
|
||||||
|
}
|
||||||
|
|
||||||
func (c *Client) url(path ...string) string {
|
func (c *Client) url(path ...string) string {
|
||||||
parts := []string{"http://", c.Config.Host, ":", strconv.Itoa(c.Config.Port)}
|
parts := []string{"http://", c.Config.Host, ":", strconv.Itoa(c.Config.Port)}
|
||||||
parts = append(parts, path...)
|
parts = append(parts, path...)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user