public Message PublishToTopic(string topicName, Message message) { MessagingRequest request = new MessagingRequest("topics/{topicName}/messages", Method.POST); request.AddUrlSegment("topicName", topicName); request.HttpStatusSuccessCodes.Add(201); request.HttpStatusExceptionMap.Add(404, typeof(TopicNotFoundException)); object postObj = new { body = message.Body, fields = message.Fields, visibility_delay = message.VisibilityDelay }; if (DebugRequests) { Console.WriteLine("-> " + request.JsonSerializer.Serialize(postObj)); } request.AddBody(postObj); MessageResponse response = client.Execute<MessageResponse>(request); Message tmpMessage = new Message(); tmpMessage.ID = response.id; tmpMessage.Body = response.body; tmpMessage.Fields = new FieldList(response.fields); tmpMessage.VisibilityDelay = response.visibility_delay; tmpMessage.SetInitialEntryTime(response.initial_entry_time); return tmpMessage; }
public QueueTopicSubscription CreateTopicSubscription(Topic topic, QueueTopicSubscription subscription) { MessagingRequest request = new MessagingRequest("topics/{topicName}/subscriptions", Method.POST); request.AddUrlSegment("topicName", topic.Name); request.HttpStatusSuccessCodes.Add(200); request.HttpStatusExceptionMap.Add(400, typeof(BadRequestException)); request.HttpStatusSuccessCodes.Add(201); object postObj = new { endpoint_type = "queue", endpoint = new { queue_name = subscription.QueueName } }; if (DebugRequests) { Console.WriteLine("-> " + request.JsonSerializer.Serialize(postObj)); } request.AddBody(postObj); SubscriptionResponse response = client.Execute<SubscriptionResponse>(request); subscription.ID = response.id; subscription.QueueName = response.endpoint.queue_name; return subscription; }
private Topic CreateOrUpdateTopic(Topic topic, bool create = true) { MessagingRequest request = new MessagingRequest("topics/{topicName}", Method.PUT); request.AddUrlSegment("topicName", topic.Name); request.HttpStatusSuccessCodes.Add(200); request.HttpStatusExceptionMap.Add(400, typeof(BadRequestException)); if (create) { request.HttpStatusSuccessCodes.Add(201); } else { request.HttpStatusSuccessCodes.Add(200); } object postObj = new { tags = topic.Tags }; if (DebugRequests) { Console.WriteLine("-> " + request.JsonSerializer.Serialize(postObj)); } request.AddBody(postObj); TopicResponse response = client.Execute<TopicResponse>(request); topic.Name = response.name; topic.Tags = new TagList(response.tags); return topic; }
public HttpTopicSubscription CreateTopicSubscription(Topic topic, HttpTopicSubscription subscription) { MessagingRequest request = new MessagingRequest("topics/{topicName}/subscriptions", Method.POST); request.AddUrlSegment("topicName", topic.Name); request.HttpStatusSuccessCodes.Add(200); request.HttpStatusExceptionMap.Add(400, typeof(BadRequestException)); request.HttpStatusSuccessCodes.Add(201); object postObj = new { endpoint_type = "http", endpoint = new { method = subscription.HttpMethod.ToString(), url = subscription.URL, // Escaping the params member with an @ is required, as "params" is a reserved word in C#. @params = subscription.Parameters, headers = subscription.Headers, body = subscription.Body } }; if (DebugRequests) { Console.WriteLine("-> " + request.JsonSerializer.Serialize(postObj)); } request.AddBody(postObj); SubscriptionResponse response = client.Execute<SubscriptionResponse>(request); subscription.ID = response.id; subscription.URL = response.endpoint.url; subscription.Headers = response.endpoint.headers; subscription.Parameters = response.endpoint.@params; subscription.Body = response.endpoint.body; switch (response.endpoint.method) { case "GET": subscription.HttpMethod = HttpTopicSubscriptionMethod.GET; break; case "POST": subscription.HttpMethod = HttpTopicSubscriptionMethod.POST; break; case "PUT": subscription.HttpMethod = HttpTopicSubscriptionMethod.PUT; break; } return subscription; }
private Queue CreateOrUpdateQueue(Queue queue, bool create = true) { MessagingRequest request = new MessagingRequest("queues/{queueName}", Method.PUT); request.AddUrlSegment("queueName", queue.Name); request.HttpStatusSuccessCodes.Add(200); request.HttpStatusExceptionMap.Add(400, typeof(BadRequestException)); if (create) { request.HttpStatusSuccessCodes.Add(201); } else { request.HttpStatusSuccessCodes.Add(200); } object postObj = new { name = queue.Name, expiration = queue.Expiration, visibility_interval = queue.VisibilityInterval, tags = queue.Tags }; if (DebugRequests) { Console.WriteLine("-> " + request.JsonSerializer.Serialize(postObj)); } request.AddBody(postObj); QueueResponse response = client.Execute<QueueResponse>(request); queue.Name = response.name; queue.Expiration = response.expiration; queue.VisibilityInterval = response.visibility_interval; queue.Tags = new TagList(response.tags); return queue; }