コード例 #1
0
        public override void Invoke(AWSCredentials creds, RegionEndpoint region, int maxItems)
        {
            AmazonSimpleNotificationServiceConfig config = new AmazonSimpleNotificationServiceConfig();

            config.RegionEndpoint = region;
            ConfigureClient(config);
            AmazonSimpleNotificationServiceClient client = new AmazonSimpleNotificationServiceClient(creds, config);

            ListSubscriptionsByTopicResponse resp = new ListSubscriptionsByTopicResponse();

            do
            {
                ListSubscriptionsByTopicRequest req = new ListSubscriptionsByTopicRequest
                {
                    NextToken = resp.NextToken
                };

                resp = client.ListSubscriptionsByTopic(req);
                CheckError(resp.HttpStatusCode, "200");

                foreach (var obj in resp.Subscriptions)
                {
                    AddObject(obj);
                }
            }while (!string.IsNullOrEmpty(resp.NextToken));
        }
コード例 #2
0
        static SmsController()
        {
            Client = new AmazonSimpleNotificationServiceClient(new BasicAWSCredentials("AKIAJOMZAEESGAYK6EKA", "L6qF0b2Rtgzk3lhLJrh976hqAlz+MWyy8g1ACQ2e"), RegionEndpoint.EUWest1);
            var request  = new ListSubscriptionsByTopicRequest(TopicArn);
            var response = Client.ListSubscriptionsByTopic(request);

            NumberToArn = response.Subscriptions.ToDictionary(x => x.Endpoint, x => x.SubscriptionArn);
        }
コード例 #3
0
        public static IEnumerable <Subscription> ListSubscriptions(string topicArn)
        {
            using (var client = new AmazonSimpleNotificationServiceClient(Settings.AccessKey, Settings.Secret))
            {
                var request = new ListSubscriptionsByTopicRequest(topicArn);

                return(client.ListSubscriptionsByTopic(request).Subscriptions);
            }
        }
コード例 #4
0
        protected bool IsQueueSubscribedToTopic(RegionEndpoint regionEndpoint, Topic topic, string queueUrl)
        {
            var request = new GetQueueAttributesRequest {
                QueueUrl = queueUrl, AttributeNames = new List <string> {
                    "QueueArn"
                }
            };

            var sqsclient = CreateMeABus.DefaultClientFactory().GetSqsClient(regionEndpoint);

            var queueArn = sqsclient.GetQueueAttributes(request).QueueARN;

            var client = new AmazonSimpleNotificationServiceClient(regionEndpoint);

            var subscriptions = client.ListSubscriptionsByTopic(new ListSubscriptionsByTopicRequest(topic.TopicArn)).Subscriptions;

            return(subscriptions.Any(x => !string.IsNullOrEmpty(x.SubscriptionArn) && x.Endpoint == queueArn));
        }
コード例 #5
0
        private bool SubscriptionExists()
        {
            var exists  = false;
            var request = new ListSubscriptionsByTopicRequest
            {
                TopicArn = TopicArn
            };
            var response    = _snsClient.ListSubscriptionsByTopic(request);
            var matchString = string.Format(":{0}", SubscriptionName);
            var matches     = response.Subscriptions.Where(x => x.Endpoint.EndsWith(matchString));

            if (matches.Count() == 1)
            {
                exists           = true;
                _subscriptionArn = matches.ElementAt(0).SubscriptionArn;
            }
            return(exists);
        }
コード例 #6
0
        public void ListSubscriptions()
        {
            ListSubscriptionsByTopicRequest request = new ListSubscriptionsByTopicRequest {
                TopicArn = TopicARN
            };
            var response = client.ListSubscriptionsByTopic(request);

            if (response.HttpStatusCode.IsSuccess())
            {
                foreach (var subscription in response.Subscriptions)
                {
                    Console.WriteLine(subscription.Owner);
                    Console.WriteLine(subscription.Protocol);
                    Console.WriteLine(subscription.SubscriptionArn);
                    Console.WriteLine(subscription.Endpoint);
                }
            }
        }
コード例 #7
0
ファイル: SNSOperation.cs プロジェクト: ylmzertg/AWS
        public void ListSubscriptions()
        {
            ListSubscriptionsByTopicRequest request = new ListSubscriptionsByTopicRequest {
                TopicArn = topicARN
            };

            var response = client.ListSubscriptionsByTopic(request);

            if (response.HttpStatusCode == System.Net.HttpStatusCode.OK)
            {
                foreach (var sub in response.Subscriptions)
                {
                    Console.WriteLine(sub.Owner);
                    Console.WriteLine(sub.Protocol);
                    Console.WriteLine(sub.SubscriptionArn);
                    Console.WriteLine(sub.Endpoint);
                }
            }
            Console.ReadLine();
        }
コード例 #8
0
        //public bool CheckIfTopicExists(string topicName)
        //{
        //    var listTopicsRequest = new ListTopicsRequest();
        //    ListTopicsResponse listTopicsResponse;
        //    do
        //    {
        //        listTopicsResponse = sns.ListTopics(listTopicsRequest);
        //        foreach (var topic in listTopicsResponse.Topics)
        //        {
        //            Console.WriteLine(" Topic: {0}", topic.TopicArn);
        //            // Get topic attributes
        //            var topicAttributes = sns.GetTopicAttributes(new GetTopicAttributesRequest
        //            {
        //                TopicArn = topic.TopicArn
        //            }).Attributes;
        //            if (topicAttributes.Count > 0)
        //            {
        //                Console.WriteLine(" Topic attributes");
        //                foreach (var topicAttribute in topicAttributes)
        //                {
        //                    Console.WriteLine(" -{0} : {1}", topicAttribute.Key, topicAttribute.Value);
        //                }
        //            }
        //            Console.WriteLine();
        //        }
        //        listTopicsRequest.NextToken = listTopicsResponse.NextToken;
        //    } while (listTopicsResponse.NextToken != null);
        //}

        public bool CheckIfSubscriptionExistsForTopic(string topicArn, string protocol, string endpoint)
        {
            var listSubscriptionsByTopicRequest = new ListSubscriptionsByTopicRequest(topicArn);
            ListSubscriptionsByTopicResponse response;

            do
            {
                response = sns.ListSubscriptionsByTopic(listSubscriptionsByTopicRequest);

                foreach (var subscription in response.Subscriptions)
                {
                    if (string.Equals(subscription.Endpoint, endpoint, StringComparison.OrdinalIgnoreCase) &&
                        string.Equals(subscription.Protocol, protocol, StringComparison.OrdinalIgnoreCase))
                    {
                        return(true);
                    }
                }
                listSubscriptionsByTopicRequest.NextToken = response.NextToken;
            }while (response.NextToken != null);
            return(false);
        }
コード例 #9
0
        public void ListSubscriptionsByTopicRequest()
        {
            ListSubscriptionsByTopicRequest request = new ListSubscriptionsByTopicRequest
            {
                TopicArn = "arn:aws:sns:us-west-1:491483104165:TopicApp",
            };

            var response = client.ListSubscriptionsByTopic(request);

            if (response.HttpStatusCode.IsSuccess())
            {
                foreach (var item in response.Subscriptions)
                {
                    Console.WriteLine($"\n\n---------- Subscription ----------\n");
                    Console.WriteLine($"{item.Owner}");
                    Console.WriteLine($"{item.Protocol}");
                    Console.WriteLine($"{item.SubscriptionArn}");
                    Console.WriteLine($"{item.Endpoint}");
                }
            }
        }
コード例 #10
0
        public virtual void DeleteSubscriptions(AmazonSimpleNotificationServiceClient snsClient, string topicArn)
        {
            var listSubscriptionsByTopicRequest = new ListSubscriptionsByTopicRequest
            {
                TopicArn = topicArn
            };

            ListSubscriptionsByTopicResponse listSubscriptionsByTopicResponse =
                snsClient.ListSubscriptionsByTopic(listSubscriptionsByTopicRequest);

            foreach (
                Subscription subscription in
                listSubscriptionsByTopicResponse.Subscriptions)
            {
                var unsubscribeRequest = new UnsubscribeRequest
                {
                    SubscriptionArn = subscription.SubscriptionArn
                };
                snsClient.Unsubscribe(unsubscribeRequest);
            }
        }
コード例 #11
0
ファイル: SNSSamples.cs プロジェクト: philasmar/aws-sdk-net
        public static void SNSListSubscriptionsByTopic()
        {
            #region SNSListSubscriptionsByTopic
            var snsClient = new AmazonSimpleNotificationServiceClient();
            var request   = new ListSubscriptionsByTopicRequest();
            var response  = new ListSubscriptionsByTopicResponse();

            request.TopicArn = "arn:aws:sns:us-east-1:80398EXAMPLE:CodingTestResults";

            do
            {
                response = snsClient.ListSubscriptionsByTopic(request);

                foreach (var sub in response.Subscriptions)
                {
                    Console.WriteLine("Subscription: {0}", sub.SubscriptionArn);

                    var subAttrs = snsClient.GetSubscriptionAttributes(
                        new GetSubscriptionAttributesRequest
                    {
                        SubscriptionArn = sub.SubscriptionArn
                    }).Attributes;

                    if (subAttrs.Count > 0)
                    {
                        foreach (var subAttr in subAttrs)
                        {
                            Console.WriteLine(" -{0} : {1}", subAttr.Key, subAttr.Value);
                        }
                    }

                    Console.WriteLine();
                }

                request.NextToken = response.NextToken;
            } while (!string.IsNullOrEmpty(response.NextToken));
            #endregion

            Console.ReadLine();
        }
コード例 #12
0
ファイル: SNSSamples.cs プロジェクト: philasmar/aws-sdk-net
        public static void SNSCreateSubscribePublish()
        {
            #region SNSCreateSubscribePublish
            var snsClient = new AmazonSimpleNotificationServiceClient();

            var topicRequest = new CreateTopicRequest
            {
                Name = "CodingTestResults"
            };

            var topicResponse = snsClient.CreateTopic(topicRequest);

            var topicAttrRequest = new SetTopicAttributesRequest
            {
                TopicArn       = topicResponse.TopicArn,
                AttributeName  = "DisplayName",
                AttributeValue = "Coding Test Results"
            };

            snsClient.SetTopicAttributes(topicAttrRequest);

            snsClient.Subscribe(new SubscribeRequest
            {
                Endpoint = "*****@*****.**",
                Protocol = "email",
                TopicArn = topicResponse.TopicArn
            });

            // Wait for up to 2 minutes for the user to confirm the subscription.
            DateTime latest = DateTime.Now + TimeSpan.FromMinutes(2);

            while (DateTime.Now < latest)
            {
                var subsRequest = new ListSubscriptionsByTopicRequest
                {
                    TopicArn = topicResponse.TopicArn
                };

                var subs = snsClient.ListSubscriptionsByTopic(subsRequest).Subscriptions;

                var sub = subs[0];

                if (!string.Equals(sub.SubscriptionArn,
                                   "PendingConfirmation", StringComparison.Ordinal))
                {
                    break;
                }

                // Wait 15 seconds before trying again.
                System.Threading.Thread.Sleep(TimeSpan.FromSeconds(15));
            }

            snsClient.Publish(new PublishRequest
            {
                Subject = "Coding Test Results for " +
                          DateTime.Today.ToShortDateString(),
                Message  = "All of today's coding tests passed.",
                TopicArn = topicResponse.TopicArn
            });
            #endregion
        }