b589fbfbd9
* ci: switch to go1.12.12 on machine executors - This brings in recent ci changes from the release/1.2.x branch. * go mod vendor * ci: remove ent build tags * ci: fix gopath * go mod vendor * ci: ensure yarn install * ci: add debug commands * ci: debugging * ci: increment yarn cache; remove debugging * ci: remove redundant yarn install
208 lines
6 KiB
Go
208 lines
6 KiB
Go
/*
|
|
Package rabbithole is a Go client for the RabbitMQ HTTP API.
|
|
|
|
All HTTP API operations are accessible via `rabbithole.Client`, which
|
|
should be instantiated with `rabbithole.NewClient`.
|
|
|
|
// URI, username, password
|
|
rmqc, _ = NewClient("http://127.0.0.1:15672", "guest", "guest")
|
|
|
|
Getting Overview
|
|
|
|
res, err := rmqc.Overview()
|
|
|
|
Node and Cluster Status
|
|
|
|
var err error
|
|
|
|
// => []NodeInfo, err
|
|
xs, err := rmqc.ListNodes()
|
|
|
|
node, err := rmqc.GetNode("rabbit@mercurio")
|
|
// => NodeInfo, err
|
|
|
|
Operations on Connections
|
|
|
|
xs, err := rmqc.ListConnections()
|
|
// => []ConnectionInfo, err
|
|
|
|
conn, err := rmqc.GetConnection("127.0.0.1:50545 -> 127.0.0.1:5672")
|
|
// => ConnectionInfo, err
|
|
|
|
// Forcefully close connection
|
|
_, err := rmqc.CloseConnection("127.0.0.1:50545 -> 127.0.0.1:5672")
|
|
// => *http.Response, err
|
|
|
|
Operations on Channels
|
|
|
|
xs, err := rmqc.ListChannels()
|
|
// => []ChannelInfo, err
|
|
|
|
ch, err := rmqc.GetChannel("127.0.0.1:50545 -> 127.0.0.1:5672 (1)")
|
|
// => ChannelInfo, err
|
|
|
|
Operations on Exchanges
|
|
|
|
xs, err := rmqc.ListExchanges()
|
|
// => []ExchangeInfo, err
|
|
|
|
// list exchanges in a vhost
|
|
xs, err := rmqc.ListExchangesIn("/")
|
|
// => []ExchangeInfo, err
|
|
|
|
// information about individual exchange
|
|
x, err := rmqc.GetExchange("/", "amq.fanout")
|
|
// => ExchangeInfo, err
|
|
|
|
// declares an exchange
|
|
resp, err := rmqc.DeclareExchange("/", "an.exchange", ExchangeSettings{Type: "fanout", Durable: false})
|
|
// => *http.Response, err
|
|
|
|
// deletes individual exchange
|
|
resp, err := rmqc.DeleteExchange("/", "an.exchange")
|
|
// => *http.Response, err
|
|
|
|
Operations on Queues
|
|
|
|
xs, err := rmqc.ListQueues()
|
|
// => []QueueInfo, err
|
|
|
|
// list queues in a vhost
|
|
xs, err := rmqc.ListQueuesIn("/")
|
|
// => []QueueInfo, err
|
|
|
|
// information about individual queue
|
|
x, err := rmqc.GetQueue("/", "a.queue")
|
|
// => QueueInfo, err
|
|
|
|
// declares a queue
|
|
resp, err := rmqc.DeclareQueue("/", "a.queue", QueueSettings{Durable: false})
|
|
// => *http.Response, err
|
|
|
|
// deletes individual queue
|
|
resp, err := rmqc.DeleteQueue("/", "a.queue")
|
|
// => *http.Response, err
|
|
|
|
// purges all messages in queue
|
|
resp, err := rmqc.PurgeQueue("/", "a.queue")
|
|
// => *http.Response, err
|
|
|
|
Operations on Bindings
|
|
|
|
bs, err := rmqc.ListBindings()
|
|
// => []BindingInfo, err
|
|
|
|
// list bindings in a vhost
|
|
bs, err := rmqc.ListBindingsIn("/")
|
|
// => []BindingInfo, err
|
|
|
|
// list bindings of a queue
|
|
bs, err := rmqc.ListQueueBindings("/", "a.queue")
|
|
// => []BindingInfo, err
|
|
|
|
// declare a binding
|
|
resp, err := rmqc.DeclareBinding("/", BindingInfo{
|
|
Source: "an.exchange",
|
|
Destination: "a.queue",
|
|
DestinationType: "queue",
|
|
RoutingKey: "#",
|
|
})
|
|
// => *http.Response, err
|
|
|
|
// deletes individual binding
|
|
resp, err := rmqc.DeleteBinding("/", BindingInfo{
|
|
Source: "an.exchange",
|
|
Destination: "a.queue",
|
|
DestinationType: "queue",
|
|
RoutingKey: "#",
|
|
PropertiesKey: "%23",
|
|
})
|
|
// => *http.Response, err
|
|
|
|
Operations on Vhosts
|
|
|
|
xs, err := rmqc.ListVhosts()
|
|
// => []VhostInfo, err
|
|
|
|
// information about individual vhost
|
|
x, err := rmqc.GetVhost("/")
|
|
// => VhostInfo, err
|
|
|
|
// creates or updates individual vhost
|
|
resp, err := rmqc.PutVhost("/", VhostSettings{Tracing: false})
|
|
// => *http.Response, err
|
|
|
|
// deletes individual vhost
|
|
resp, err := rmqc.DeleteVhost("/")
|
|
// => *http.Response, err
|
|
|
|
Managing Users
|
|
|
|
xs, err := rmqc.ListUsers()
|
|
// => []UserInfo, err
|
|
|
|
// information about individual user
|
|
x, err := rmqc.GetUser("my.user")
|
|
// => UserInfo, err
|
|
|
|
// creates or updates individual user
|
|
resp, err := rmqc.PutUser("my.user", UserSettings{Password: "s3krE7", Tags: "management policymaker"})
|
|
// => *http.Response, err
|
|
|
|
// deletes individual user
|
|
resp, err := rmqc.DeleteUser("my.user")
|
|
// => *http.Response, err
|
|
|
|
Managing Permissions
|
|
|
|
xs, err := rmqc.ListPermissions()
|
|
// => []PermissionInfo, err
|
|
|
|
// permissions of individual user
|
|
x, err := rmqc.ListPermissionsOf("my.user")
|
|
// => []PermissionInfo, err
|
|
|
|
// permissions of individual user in vhost
|
|
x, err := rmqc.GetPermissionsIn("/", "my.user")
|
|
// => PermissionInfo, err
|
|
|
|
// updates permissions of user in vhost
|
|
resp, err := rmqc.UpdatePermissionsIn("/", "my.user", Permissions{Configure: ".*", Write: ".*", Read: ".*"})
|
|
// => *http.Response, err
|
|
|
|
// revokes permissions in vhost
|
|
resp, err := rmqc.ClearPermissionsIn("/", "my.user")
|
|
// => *http.Response, err
|
|
|
|
Managing Topic Permissions
|
|
|
|
xs, err := rmqc.ListTopicPermissions()
|
|
// => []TopicPermissionInfo, err
|
|
|
|
// permissions of individual user
|
|
x, err := rmqc.ListTopicPermissionsOf("my.user")
|
|
// => []TopicPermissionInfo, err
|
|
|
|
// permissions of individual user in vhost
|
|
x, err := rmqc.GetTopicPermissionsIn("/", "my.user")
|
|
// => []TopicPermissionInfo, err
|
|
|
|
// updates permissions of user in vhost
|
|
resp, err := rmqc.UpdateTopicPermissionsIn("/", "my.user", Permissions{Exchange: "amq.topic", Write: ".*", Read: ".*"})
|
|
// => *http.Response, err
|
|
|
|
// revokes permissions in vhost
|
|
resp, err := rmqc.ClearTopicPermissionsIn("/", "my.user")
|
|
// => *http.Response, err
|
|
|
|
Operations on cluster name
|
|
// Get cluster name
|
|
cn, err := rmqc.GetClusterName()
|
|
// => ClusterName, err
|
|
|
|
// Rename cluster
|
|
resp, err := rmqc.SetClusterName(ClusterName{Name: "rabbitmq@rabbit-hole"})
|
|
// => *http.Response, err
|
|
*/
|
|
package rabbithole
|