-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
ae6f1dc
commit a7ee7c7
Showing
238 changed files
with
7,474 additions
and
33 deletions.
There are no files selected for viewing
43 changes: 43 additions & 0 deletions
43
FlowDance.AzureFunctions/RabbitMqHttpApiClient/API/RabbitMqApi.Binding.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
using FlowDance.AzureFunctions.RabbitMqHttpApiClient.Models.DefinitionModel; | ||
using FlowDance.AzureFunctions.RabbitMqHttpApiClient.Utils; | ||
|
||
namespace FlowDance.AzureFunctions.RabbitMqHttpApiClient.API | ||
{ | ||
public partial class RabbitMqApi//.Binding | ||
{ | ||
/// <summary> | ||
/// A list of all bindings. | ||
/// </summary> | ||
public async Task<IEnumerable<Binding>> GetBindings() | ||
{ | ||
return await DoGetCall<IEnumerable<Binding>>("api/bindings"); | ||
} | ||
|
||
/// <summary> | ||
/// A list of all bindings in a given virtual host. | ||
/// </summary> | ||
public async Task<IEnumerable<Binding>> GetBindingsByVhost(string virtualHost) | ||
{ | ||
return await DoGetCall<IEnumerable<Binding>>($"api/bindings/{virtualHost.Encode()}"); | ||
} | ||
|
||
/// <summary> | ||
/// A list of all bindings on a given queue. | ||
/// </summary> | ||
public async Task<IEnumerable<Binding>> GetBindingsByVhostAndQueue(string virtualHost, string queueName) | ||
{ | ||
return await DoGetCall<IEnumerable<Binding>>($"api/queues/{virtualHost.Encode()}/{queueName}/bindings"); | ||
} | ||
|
||
/// <summary> | ||
/// A list of all bindings in which a given exchange is the source or destination | ||
/// </summary> | ||
public async Task<IEnumerable<Binding>> GetBindingsByVhostAndExchange( | ||
string virtualHost, string exchangeName, ExchangeBindingType exchangeBindingType) | ||
{ | ||
string bindingType = exchangeBindingType.ToString("G").ToLower(); | ||
var path = $"api/exchanges/{virtualHost.Encode()}/{exchangeName.Encode()}/bindings/{bindingType}"; | ||
return await DoGetCall<IEnumerable<Binding>>(path); | ||
} | ||
} | ||
} |
40 changes: 40 additions & 0 deletions
40
FlowDance.AzureFunctions/RabbitMqHttpApiClient/API/RabbitMqApi.Channel.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
using FlowDance.AzureFunctions.RabbitMqHttpApiClient.Models.ChannelModel; | ||
using FlowDance.AzureFunctions.RabbitMqHttpApiClient.Utils; | ||
|
||
namespace FlowDance.AzureFunctions.RabbitMqHttpApiClient.API | ||
{ | ||
public partial class RabbitMqApi//.Channel | ||
{ | ||
/// <summary> | ||
/// List of all channels for a given connection. | ||
/// </summary> | ||
public async Task<IEnumerable<Channel>> GetChannelsByConnection(string connectionName) | ||
{ | ||
return await DoGetCall<IEnumerable<Channel>>($"/api/connections/{connectionName.Encode()}/channels"); | ||
} | ||
|
||
/// <summary> | ||
/// A list of all open channels. | ||
/// </summary> | ||
public async Task<IEnumerable<Channel>> GetChannels() | ||
{ | ||
return await DoGetCall<IEnumerable<Channel>>("/api/channels"); | ||
} | ||
|
||
/// <summary> | ||
/// A list of all open channels in a specific vhost. | ||
/// </summary> | ||
public async Task<IEnumerable<Channel>> GetChannelsByVhost(string virtualHost) | ||
{ | ||
return await DoGetCall<IEnumerable<Channel>>($"/api/vhosts/{virtualHost.Encode()}/channels"); | ||
} | ||
|
||
/// <summary> | ||
/// Details about an individual channel by name | ||
/// </summary> | ||
public async Task<Channel> GetChannel(string channelName) | ||
{ | ||
return await DoGetCall<Channel>($"/api/channels/{channelName.Encode()}"); | ||
} | ||
} | ||
} |
32 changes: 32 additions & 0 deletions
32
FlowDance.AzureFunctions/RabbitMqHttpApiClient/API/RabbitMqApi.Connection.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
using FlowDance.AzureFunctions.RabbitMqHttpApiClient.Models.ConnectionModel; | ||
using FlowDance.AzureFunctions.RabbitMqHttpApiClient.Utils; | ||
|
||
namespace FlowDance.AzureFunctions.RabbitMqHttpApiClient.API | ||
{ | ||
public partial class RabbitMqApi//.Connection | ||
{ | ||
/// <summary> | ||
/// A list of all open connections. | ||
/// </summary> | ||
public async Task<IEnumerable<Connection>> GetConnections() | ||
{ | ||
return await DoGetCall<IEnumerable<Connection>>("/api/connections"); | ||
} | ||
|
||
/// <summary> | ||
/// A list of all open connections in a specific vhost. | ||
/// </summary> | ||
public async Task<IEnumerable<Connection>> GetConnectionsByVhost(string virtualHost) | ||
{ | ||
return await DoGetCall<IEnumerable<Connection>>($"/api/vhosts/{virtualHost.Encode()}/connections"); | ||
} | ||
|
||
/// <summary> | ||
/// An individual connection by connection name | ||
/// </summary> | ||
public async Task<Connection> GetConnection(string connectionName) | ||
{ | ||
return await DoGetCall<Connection>($"/api/connections/{connectionName.Encode()}"); | ||
} | ||
} | ||
} |
24 changes: 24 additions & 0 deletions
24
FlowDance.AzureFunctions/RabbitMqHttpApiClient/API/RabbitMqApi.Consumer.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
using FlowDance.AzureFunctions.RabbitMqHttpApiClient.Models.ConsumerModel; | ||
using FlowDance.AzureFunctions.RabbitMqHttpApiClient.Utils; | ||
|
||
namespace FlowDance.AzureFunctions.RabbitMqHttpApiClient.API | ||
{ | ||
public partial class RabbitMqApi//.Consumer | ||
{ | ||
/// <summary> | ||
/// A list of all consumers. | ||
/// </summary> | ||
public async Task<IEnumerable<Consumer>> GetConsumers() | ||
{ | ||
return await DoGetCall<IEnumerable<Consumer>>("api/consumers"); | ||
} | ||
|
||
/// <summary> | ||
/// A list of all consumers in a given virtual host. | ||
/// </summary> | ||
public async Task<IEnumerable<Consumer>> GetConsumersByVhost(string virtualHost) | ||
{ | ||
return await DoGetCall<IEnumerable<Consumer>>($"api/consumers/{virtualHost.Encode()}"); | ||
} | ||
} | ||
} |
24 changes: 24 additions & 0 deletions
24
FlowDance.AzureFunctions/RabbitMqHttpApiClient/API/RabbitMqApi.Definition.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
using FlowDance.AzureFunctions.RabbitMqHttpApiClient.Models.DefinitionModel; | ||
using FlowDance.AzureFunctions.RabbitMqHttpApiClient.Utils; | ||
|
||
namespace FlowDance.AzureFunctions.RabbitMqHttpApiClient.API | ||
{ | ||
public partial class RabbitMqApi//.Definition | ||
{ | ||
/// <summary> | ||
/// The server definitions - exchanges, queues, bindings, users, virtual hosts, permissions and parameters. Everything apart from messages. | ||
/// </summary> | ||
public async Task<SystemDefinition> GetDefinitions() | ||
{ | ||
return await DoGetCall<SystemDefinition>("/api/definitions"); | ||
} | ||
|
||
/// <summary> | ||
/// The server definitions for a given virtual host - exchanges, queues, bindings and policies. | ||
/// </summary> | ||
public async Task<VhostDefinition> GetDefinitionByVhost(string virtualHost) | ||
{ | ||
return await DoGetCall<VhostDefinition>($"/api/definitions/{virtualHost.Encode()}"); | ||
} | ||
} | ||
} |
65 changes: 65 additions & 0 deletions
65
FlowDance.AzureFunctions/RabbitMqHttpApiClient/API/RabbitMqApi.Exchange.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
using FlowDance.AzureFunctions.RabbitMqHttpApiClient.Models.ExchangeModel; | ||
using FlowDance.AzureFunctions.RabbitMqHttpApiClient.Models.ExchangeModel.PublishMessageModel; | ||
using FlowDance.AzureFunctions.RabbitMqHttpApiClient.Utils; | ||
using Newtonsoft.Json; | ||
|
||
namespace FlowDance.AzureFunctions.RabbitMqHttpApiClient.API | ||
{ | ||
public partial class RabbitMqApi//.Exchange | ||
{ | ||
/// <summary> | ||
/// A list of all exchanges. | ||
/// </summary> | ||
public async Task<IEnumerable<Exchange>> GetExchanges() | ||
{ | ||
return await DoGetCall<IEnumerable<Exchange>>("api/exchanges"); | ||
} | ||
|
||
/// <summary> | ||
/// A list of all exchanges in a given virtual host. | ||
/// </summary> | ||
public async Task<IEnumerable<Exchange>> GetExchangesByVhost(string virtualHost) | ||
{ | ||
return await DoGetCall<IEnumerable<Exchange>>($"api/exchanges/{virtualHost.Encode()}"); | ||
} | ||
|
||
/// <summary> | ||
/// An individual exchange by virtual host and exchange name | ||
/// </summary> | ||
public async Task<Exchange> GetExchangeByVhostAndName(string virtualHost, string exchangeName) | ||
{ | ||
return await DoGetCall<Exchange>($"api/exchanges/{virtualHost.Encode()}/{exchangeName.Encode()}"); | ||
} | ||
|
||
/// <summary> | ||
/// Publish a message to a given exchange. | ||
/// </summary> | ||
/// <param name="virtualHost"></param> | ||
/// <param name="exchangeName"></param> | ||
/// <param name="routingKey">binding key</param> | ||
/// <param name="payload">message data</param> | ||
/// <param name="payloadEncoding">The payload_encoding key should be either "string" (in which case the payload will be taken to be the UTF-8 encoding of the payload field) or "base64" (in which case the payload field is taken to be base64 encoded).</param> | ||
/// <param name="properties"></param> | ||
/// <returns>true if the message was sent to at least one queue.</returns> | ||
public async Task<bool> PublishMessage( | ||
string virtualHost, string exchangeName, string routingKey, dynamic payload, | ||
PayloadEncoding payloadEncoding = PayloadEncoding.String, Properties properties = null) | ||
{ | ||
if (exchangeName == String.Empty) | ||
throw new ArgumentException("Cannot send message using default exchange in HTTP API"); | ||
|
||
var request = new PublishMessageRequest | ||
{ | ||
payload = JsonConvert.SerializeObject(payload), | ||
routing_key = routingKey, | ||
properties = new Properties(), | ||
payload_encoding = payloadEncoding.ToString("G").ToLower() | ||
}; | ||
|
||
string path = $"/api/exchanges/{virtualHost.Encode()}/{exchangeName.Encode()}/publish"; | ||
var response = await DoCall<PublishMessageResponse>(path, HttpMethod.Post, request); | ||
|
||
return response.Routed; | ||
} | ||
} | ||
} |
31 changes: 31 additions & 0 deletions
31
FlowDance.AzureFunctions/RabbitMqHttpApiClient/API/RabbitMqApi.Node.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
using FlowDance.AzureFunctions.RabbitMqHttpApiClient.Models.NodeModel; | ||
using FlowDance.AzureFunctions.RabbitMqHttpApiClient.Utils; | ||
|
||
namespace FlowDance.AzureFunctions.RabbitMqHttpApiClient.API | ||
{ | ||
public partial class RabbitMqApi//.Node | ||
{ | ||
/// <summary> | ||
/// A list of nodes in the RabbitMQ cluster. | ||
/// </summary> | ||
public async Task<IEnumerable<Node>> GetNodes() | ||
{ | ||
return await DoGetCall<IEnumerable<Node>>("/api/nodes"); | ||
} | ||
|
||
/// <summary> | ||
/// An individual node in the RabbitMQ cluster | ||
/// </summary> | ||
/// <param name="nodeName">node name</param> | ||
/// <param name="withMemory">To get memory statistics</param> | ||
/// <param name="withBinary">to get a breakdown of binary memory use (may be expensive if there are many small binaries in the system)</param> | ||
/// <returns>Node details</returns> | ||
public async Task<Node> GetNode(string nodeName, bool withMemory = false, bool withBinary = false) | ||
{ | ||
string memory = withMemory.ToString().ToLowerInvariant(); | ||
string binary = withBinary.ToString().ToLowerInvariant(); | ||
var path = $"/api/nodes/{nodeName.Encode()}?memory={memory}&binary={binary}"; | ||
return await DoGetCall<Node>(path); | ||
} | ||
} | ||
} |
24 changes: 24 additions & 0 deletions
24
FlowDance.AzureFunctions/RabbitMqHttpApiClient/API/RabbitMqApi.Permission.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
using FlowDance.AzureFunctions.RabbitMqHttpApiClient.Models.DefinitionModel; | ||
using FlowDance.AzureFunctions.RabbitMqHttpApiClient.Utils; | ||
|
||
namespace FlowDance.AzureFunctions.RabbitMqHttpApiClient.API | ||
{ | ||
public partial class RabbitMqApi//.Permission | ||
{ | ||
/// <summary> | ||
/// A list of all permissions for all users. | ||
/// </summary> | ||
public async Task<IEnumerable<Permission>> GetPermissions() | ||
{ | ||
return await DoGetCall<IEnumerable<Permission>>("/api/permissions"); | ||
} | ||
|
||
/// <summary> | ||
/// An individual permission of a user and virtual host. | ||
/// </summary> | ||
public async Task<Permission> GetPermissionByVhostAndUser(string virtualHost, string username) | ||
{ | ||
return await DoGetCall<Permission>($"/api/permissions/{virtualHost.Encode()}/{username.Encode()}"); | ||
} | ||
} | ||
} |
66 changes: 66 additions & 0 deletions
66
FlowDance.AzureFunctions/RabbitMqHttpApiClient/API/RabbitMqApi.Queue.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
using FlowDance.AzureFunctions.RabbitMqHttpApiClient.Models.ExchangeModel.PublishMessageModel; | ||
using FlowDance.AzureFunctions.RabbitMqHttpApiClient.Models.QueueModel; | ||
using FlowDance.AzureFunctions.RabbitMqHttpApiClient.Utils; | ||
|
||
namespace FlowDance.AzureFunctions.RabbitMqHttpApiClient.API | ||
{ | ||
public partial class RabbitMqApi//.Queue | ||
{ | ||
/// <summary> | ||
/// A list of all queues. | ||
/// </summary> | ||
public async Task<IEnumerable<Queue>> GetQueues() | ||
{ | ||
return await DoGetCall<IEnumerable<Queue>>("/api/queues"); | ||
} | ||
|
||
/// <summary> | ||
/// A list of all queues in a given virtual host. | ||
/// </summary> | ||
public async Task<IEnumerable<Queue>> GetQueuesByVhost(string virtualHost) | ||
{ | ||
return await DoGetCall<IEnumerable<Queue>>($"/api/queues/{virtualHost.Encode()}"); | ||
} | ||
|
||
/// <summary> | ||
/// An individual queue by virtual host and queue name. | ||
/// </summary> | ||
public async Task<Queue> GetQueueByVhostAndName(string virtualHost, string queueName) | ||
{ | ||
return await DoGetCall<Queue>($"/api/queues/{virtualHost.Encode()}/{queueName.Encode()}"); | ||
} | ||
|
||
/// <summary> | ||
/// Get messages from a queue. (This is not an HTTP GET as it will alter the state of the queue.) | ||
/// </summary> | ||
/// <param name="virtualHost"></param> | ||
/// <param name="queueName"></param> | ||
/// <param name="count">ols the maximum number of messages to get. You may get fewer messages than this if the queue cannot immediately provide them.</param> | ||
/// <param name="requeue">determines whether the messages will be removed from the queue. If requeue is true they will be requeued - but their redelivered flag will be set.</param> | ||
/// <param name="encoding">must be either "auto" (in which case the payload will be returned as a string if it is valid UTF-8, and base64 encoded otherwise), or "base64" (in which case the payload will always be base64 encoded).</param> | ||
/// <returns></returns> | ||
public async Task<IEnumerable<QueueMessage>> GetQueueMessages(string virtualHost, string queueName, | ||
long count = Int64.MaxValue, bool requeue = true, PayloadEncoding encoding = PayloadEncoding.Auto) | ||
{ | ||
var request = new GetQueueMessagesRequest | ||
{ | ||
count = count, | ||
requeue = requeue, | ||
encoding = encoding.ToString("G").ToLower(), | ||
}; | ||
|
||
string path = $"/api/queues/{virtualHost.Encode()}/{queueName.Encode()}/get"; | ||
return await DoCall<IEnumerable<QueueMessage>>(path, HttpMethod.Post, request); | ||
} | ||
|
||
/// <summary> | ||
/// Purge (delete all messages) of a given queue | ||
/// </summary> | ||
/// <returns>true if all messages is deleted</returns> | ||
public async Task<bool> DeleteAllQueueMessages(string virtualHost, string queueName) | ||
{ | ||
string path = $"/api/queues/{virtualHost.Encode()}/{queueName.Encode()}/contents"; | ||
return await DoDeleteCall(path); | ||
} | ||
} | ||
} |
Oops, something went wrong.