public StatusCode Register()
        {
            WebhookSettings settings = new WebhookSettings()
            {
                Url          = EndpointRoute,
                Subscription = Subscription
            };
            string json = JsonConvert.SerializeObject((WebhookSettingsDTO)settings);

            var httpWebRequest = (HttpWebRequest)WebRequest.Create("https://chatapi.viber.com/pa/set_webhook");

            httpWebRequest.Headers.Add("X-Viber-Auth-Token", AuthToken);
            httpWebRequest.ContentType = "application/json";
            httpWebRequest.Method      = "POST";

            using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
            {
                streamWriter.Write(json);
                streamWriter.Flush();
                streamWriter.Close();
            }
            var    httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
            string result       = string.Empty;

            using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
            {
                result = streamReader.ReadToEnd();
            }
            RegistrationResponse info = JsonConvert.DeserializeObject <RegistrationResponse>(result);

            return((StatusCode)info.status);
        }
        private WebhookSettings GetwebhookSettings(IServiceProvider provider)
        {
            var webhookSettings = new WebhookSettings();

            Configuration.GetSection($"Values:{nameof(XeroConfiguration)}:{nameof(WebhookSettings)}").Bind(webhookSettings);
            return(webhookSettings);
        }
Beispiel #3
0
        public ValidationFailure Test(WebhookSettings settings)
        {
            try
            {
                NotifyWebhook(
                    new WebhookPayload
                    {
                        EventType = "Test",
                        Series = new WebhookSeries()
                        {
                            Id = 1,
                            Title = "Test Title",
                            Path = "C:\\testpath",
                            TvdbId = 1234
                        },
                        Episodes = new List<WebhookEpisode>() {
                            new WebhookEpisode()
                            {
                                Id = 123,
                                EpisodeNumber = 1,
                                SeasonNumber = 1,
                                Title = "Test title"
                            }
                        }
                    },
                    settings
                );
            }
            catch (WebhookException ex)
            {
                return new NzbDroneValidationFailure("Url", ex.Message);
            }

            return null;
        }
Beispiel #4
0
        private Client(string apiKey, string username, string password, HttpClient httpClient, bool disposeClient, StrongGridClientOptions options)
        {
            _mustDisposeHttpClient = disposeClient;
            _httpClient            = httpClient;
            _options = options ?? GetDefaultOptions();

            _fluentClient = new FluentClient(new Uri(SENDGRID_V3_BASE_URI), httpClient)
                            .SetUserAgent(Client.UserAgent)
                            .SetRequestCoordinator(new SendGridRetryStrategy());

            _fluentClient.Filters.Remove <DefaultErrorFilter>();

            // Order is important: DiagnosticHandler must be first.
            // Also, the list of filters must be kept in sync with the filters in Utils.GetFluentClient in the unit testing project.
            _fluentClient.Filters.Add(new DiagnosticHandler(_options.LogLevelSuccessfulCalls, _options.LogLevelFailedCalls));
            _fluentClient.Filters.Add(new SendGridErrorHandler());

            if (!string.IsNullOrEmpty(apiKey))
            {
                _fluentClient.SetBearerAuthentication(apiKey);
            }
            if (!string.IsNullOrEmpty(username))
            {
                _fluentClient.SetBasicAuthentication(username, password);
            }

            AccessManagement   = new AccessManagement(_fluentClient);
            Alerts             = new Alerts(_fluentClient);
            ApiKeys            = new ApiKeys(_fluentClient);
            Batches            = new Batches(_fluentClient);
            Blocks             = new Blocks(_fluentClient);
            Bounces            = new Bounces(_fluentClient);
            Campaigns          = new Campaigns(_fluentClient);
            Categories         = new Categories(_fluentClient);
            Contacts           = new Contacts(_fluentClient);
            CustomFields       = new CustomFields(_fluentClient);
            Designs            = new Designs(_fluentClient);
            EmailActivities    = new EmailActivities(_fluentClient);
            EmailValidation    = new EmailValidation(_fluentClient);
            GlobalSuppressions = new GlobalSuppressions(_fluentClient);
            InvalidEmails      = new InvalidEmails(_fluentClient);
            IpAddresses        = new IpAddresses(_fluentClient);
            IpPools            = new IpPools(_fluentClient);
            Lists                = new Lists(_fluentClient);
            Mail                 = new Mail(_fluentClient);
            Segments             = new Segments(_fluentClient);
            SenderIdentities     = new SenderIdentities(_fluentClient);
            Settings             = new Settings(_fluentClient);
            SpamReports          = new SpamReports(_fluentClient);
            Statistics           = new Statistics(_fluentClient);
            Subusers             = new Subusers(_fluentClient);
            Suppressions         = new Suppressions(_fluentClient);
            Teammates            = new Teammates(_fluentClient);
            Templates            = new Templates(_fluentClient);
            UnsubscribeGroups    = new UnsubscribeGroups(_fluentClient);
            User                 = new User(_fluentClient);
            WebhookSettings      = new WebhookSettings(_fluentClient);
            WebhookStats         = new WebhookStats(_fluentClient);
            SenderAuthentication = new SenderAuthentication(_fluentClient);
        }
Beispiel #5
0
        private Client(string apiKey, string username, string password, string baseUri, string apiVersion, HttpClient httpClient)
        {
            _mustDisposeHttpClient = httpClient == null;
            _httpClient            = httpClient;

#if DEBUG
            Version = "DEBUG";
#else
            var assemblyVersion = typeof(Client).GetTypeInfo().Assembly.GetName().Version;
            Version = $"{assemblyVersion.Major}.{assemblyVersion.Minor}.{assemblyVersion.Build}";
#endif

            _fluentClient = new FluentClient(new Uri($"{baseUri.TrimEnd('/')}/{apiVersion.TrimStart('/')}"), httpClient)
                            .SetUserAgent($"StrongGrid/{Version} (+https://github.com/Jericho/StrongGrid)")
                            .SetRequestCoordinator(new SendGridRetryStrategy());

            _fluentClient.Filters.Remove <DefaultErrorFilter>();
            _fluentClient.Filters.Add(new DiagnosticHandler());
            _fluentClient.Filters.Add(new SendGridErrorHandler());

            if (!string.IsNullOrEmpty(apiKey))
            {
                _fluentClient.SetBearerAuthentication(apiKey);
            }
            if (!string.IsNullOrEmpty(username))
            {
                _fluentClient.SetBasicAuthentication(username, password);
            }

            AccessManagement   = new AccessManagement(_fluentClient);
            Alerts             = new Alerts(_fluentClient);
            ApiKeys            = new ApiKeys(_fluentClient);
            Batches            = new Batches(_fluentClient);
            Blocks             = new Blocks(_fluentClient);
            Bounces            = new Bounces(_fluentClient);
            Campaigns          = new Campaigns(_fluentClient);
            Categories         = new Categories(_fluentClient);
            Contacts           = new Contacts(_fluentClient);
            CustomFields       = new CustomFields(_fluentClient);
            GlobalSuppressions = new GlobalSuppressions(_fluentClient);
            InvalidEmails      = new InvalidEmails(_fluentClient);
            IpAddresses        = new IpAddresses(_fluentClient);
            IpPools            = new IpPools(_fluentClient);
            Lists             = new Lists(_fluentClient);
            Mail              = new Mail(_fluentClient);
            Segments          = new Segments(_fluentClient);
            SenderIdentities  = new SenderIdentities(_fluentClient);
            Settings          = new Settings(_fluentClient);
            SpamReports       = new SpamReports(_fluentClient);
            Statistics        = new Statistics(_fluentClient);
            Subusers          = new Subusers(_fluentClient);
            Suppressions      = new Suppressions(_fluentClient);
            Teammates         = new Teammates(_fluentClient);
            Templates         = new Templates(_fluentClient);
            UnsubscribeGroups = new UnsubscribeGroups(_fluentClient);
            User              = new User(_fluentClient);
            WebhookSettings   = new WebhookSettings(_fluentClient);
            WebhookStats      = new WebhookStats(_fluentClient);
            Whitelabel        = new Whitelabel(_fluentClient);
        }
        public WebhookService(ILogger <WebhookService> logger, HttpClient client, WebhookSettings settings)
        {
            _logger   = logger;
            _settings = settings;

            client.BaseAddress = new Uri("https://discord.com/api/");
            _client            = client;
        }
        public static void DoWork(OperationController operation)
        {
            System.Globalization.CultureInfo before = Thread.CurrentThread.CurrentCulture;
            Thread.CurrentThread.CurrentCulture =
                new System.Globalization.CultureInfo("en-US");
            operation.Reset();
            var sw = new Stopwatch();

            try
            {
                sw.Start();
                var fInfo = new FileInfo(operation.InputFile);

                var parser = new EvtcParser(new EvtcParserSettings(Properties.Settings.Default.Anonymous,
                                                                   Properties.Settings.Default.SkipFailedTries,
                                                                   Properties.Settings.Default.ParsePhases,
                                                                   Properties.Settings.Default.ParseCombatReplay,
                                                                   Properties.Settings.Default.ComputeDamageModifiers,
                                                                   Properties.Settings.Default.CustomTooShort,
                                                                   Properties.Settings.Default.DetailledWvW),
                                            APIController);

                //Process evtc here
                ParsedEvtcLog log = parser.ParseLog(operation, fInfo, out GW2EIEvtcParser.ParserHelpers.ParsingFailureReason failureReason);
                if (failureReason != null)
                {
                    failureReason.Throw();
                }
                var      externalTraces = new List <string>();
                string[] uploadresult   = UploadOperation(externalTraces, fInfo);
                if (Properties.Settings.Default.SendEmbedToWebhook && Properties.Settings.Default.UploadToDPSReports)
                {
                    var webhookSettings = new WebhookSettings(Properties.Settings.Default.WebhookURL, !Properties.Settings.Default.SendSimpleMessageToWebhook ? BuildEmbed(log, uploadresult[0]) : null);
                    WebhookController.SendMessage(externalTraces, uploadresult[0], webhookSettings);
                }
                foreach (string trace in externalTraces)
                {
                    operation.UpdateProgress(trace);
                }
                if (uploadresult[0].Contains("https"))
                {
                    operation.DPSReportLink = uploadresult[0];
                }
                //Creating File
                GenerateFiles(log, operation, uploadresult, fInfo);
            }
            catch (Exception ex)
            {
                throw new ProgramException(ex);
            }
            finally
            {
                sw.Stop();
                GC.Collect();
                Thread.CurrentThread.CurrentCulture = before;
                operation.Elapsed = ("Elapsed " + sw.ElapsedMilliseconds + " ms");
            }
        }
Beispiel #8
0
        public WebhookEventService(string name, IOptions <WebhookSettings> webhookSettings, ILogger <HiarcEventServiceProvider> logger)
        {
            _name            = name;
            _webhookSettings = webhookSettings.Value;
            _logger          = logger;

            var serviceProvider = new ServiceCollection().AddHttpClient().BuildServiceProvider();

            clientFactory = serviceProvider.GetService <IHttpClientFactory>();
        }
Beispiel #9
0
        public void OnRename(Series series, WebhookSettings settings)
        {
            var payload = new WebhookPayload
            {
                EventType = "Rename",
                Series = new WebhookSeries(series)
            };

            NotifyWebhook(payload, settings);
        }
Beispiel #10
0
        /// <summary>
        /// Initializes a new instance of the <see cref="BaseClient" /> class.
        /// </summary>
        /// <param name="apiKey">Your api key.</param>
        /// <param name="httpClient">Allows you to inject your own HttpClient. This is useful, for example, to setup the HtppClient with a proxy.</param>
        /// <param name="disposeClient">Indicates if the http client should be dispose when this instance of BaseClient is disposed.</param>
        /// <param name="options">Options for the SendGrid client.</param>
        /// <param name="logger">Logger.</param>
        public BaseClient(string apiKey, HttpClient httpClient, bool disposeClient, StrongGridClientOptions options, ILogger logger = null)
        {
            _mustDisposeHttpClient = disposeClient;
            _httpClient            = httpClient;
            _options = options;
            _logger  = logger ?? NullLogger.Instance;

            _fluentClient = new FluentClient(new Uri(SENDGRID_V3_BASE_URI), httpClient)
                            .SetUserAgent($"StrongGrid/{Version} (+https://github.com/Jericho/StrongGrid)")
                            .SetRequestCoordinator(new SendGridRetryStrategy());

            _fluentClient.Filters.Remove <DefaultErrorFilter>();

            // Remove all the built-in formatters and replace them with our custom JSON formatter
            _fluentClient.Formatters.Clear();
            _fluentClient.Formatters.Add(new JsonFormatter());

            // Order is important: DiagnosticHandler must be first.
            // Also, the list of filters must be kept in sync with the filters in Utils.GetFluentClient in the unit testing project.
            _fluentClient.Filters.Add(new DiagnosticHandler(_options.LogLevelSuccessfulCalls, _options.LogLevelFailedCalls, _logger));
            _fluentClient.Filters.Add(new SendGridErrorHandler());

            if (string.IsNullOrEmpty(apiKey))
            {
                throw new ArgumentNullException(apiKey);
            }
            _fluentClient.SetBearerAuthentication(apiKey);

            AccessManagement   = new AccessManagement(FluentClient);
            Alerts             = new Alerts(FluentClient);
            ApiKeys            = new ApiKeys(FluentClient);
            Batches            = new Batches(FluentClient);
            Blocks             = new Blocks(FluentClient);
            Bounces            = new Bounces(FluentClient);
            Designs            = new Designs(FluentClient);
            EmailActivities    = new EmailActivities(FluentClient);
            EmailValidation    = new EmailValidation(FluentClient);
            GlobalSuppressions = new GlobalSuppressions(FluentClient);
            InvalidEmails      = new InvalidEmails(FluentClient);
            IpAddresses        = new IpAddresses(FluentClient);
            IpPools            = new IpPools(FluentClient);
            Mail                 = new Mail(FluentClient);
            Settings             = new Settings(FluentClient);
            SpamReports          = new SpamReports(FluentClient);
            Statistics           = new Statistics(FluentClient);
            Subusers             = new Subusers(FluentClient);
            Suppressions         = new Suppressions(FluentClient);
            Teammates            = new Teammates(FluentClient);
            Templates            = new Templates(FluentClient);
            UnsubscribeGroups    = new UnsubscribeGroups(FluentClient);
            User                 = new User(FluentClient);
            WebhookSettings      = new WebhookSettings(FluentClient);
            WebhookStats         = new WebhookStats(FluentClient);
            SenderAuthentication = new SenderAuthentication(FluentClient);
        }
Beispiel #11
0
        /// <summary>
        /// Webhook. Реигстрация
        /// </summary>
        /// <param name="endpointRouteURL"></param>
        /// <returns></returns>
        // public StatusCode RemovingYourWebhook(string endpointRouteURL)
        public string RegisterWebhook_my_VbAPI_1(string webhookUrl) // ++
        {
            string result = string.Empty;

            try
            {
                WebhookSettings settings = new WebhookSettings()
                {
                    Url = webhookUrl
                          // Subscription = Subscription
                };

                string json = JsonConvert.SerializeObject((WebhookSettings)settings);

                var httpWebRequest = (HttpWebRequest)WebRequest.Create("https://chatapi.viber.com/pa/set_webhook");
                httpWebRequest.Headers.Add("X-Viber-Auth-Token", _authToken);
                httpWebRequest.ContentType = "application/json";
                httpWebRequest.Method      = "POST";

                using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
                {
                    streamWriter.Write(json);
                    streamWriter.Flush();
                    streamWriter.Close();
                }

                var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
                // string result = string.Empty;

                using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
                {
                    result = streamReader.ReadToEnd();
                }

                // RegistrationResponse info = JsonConvert.DeserializeObject<RegistrationResponse>(result);
                // return (StatusCode)info.status;
                result = json + " \r\n - // - \r\n " + result;
                // result = json;
            }
            catch (Exception ex)
            {
                string s = ex.Message;
                string t = ex.StackTrace;
                // throw;
                //MessageBox.Show(s + " \r\n "
                //                  + t);
            }

            return(result);
        }
Beispiel #12
0
 public void NotifyWebhook(WebhookPayload body, WebhookSettings settings)
 {
     try {
         var client = RestClientFactory.BuildClient(settings.Url);
         var request = new RestRequest((Method) settings.Method);
         request.RequestFormat = DataFormat.Json;
         request.AddBody(body);
         client.ExecuteAndValidate(request);
     }
     catch (RestException ex)
     {
         throw new WebhookException("Unable to post to webhook: {0}", ex, ex.Message);
     }
 }
Beispiel #13
0
 public void OnGrab(Series series, RemoteEpisode episode, QualityModel quality, WebhookSettings settings)
 {
     var payload = new WebhookPayload
     {
         EventType = "Grab",
         Series = new WebhookSeries(series),
         Episodes = episode.Episodes.ConvertAll(x => new WebhookEpisode(x)
         {
             Quality = quality.Quality.Name,
             QualityVersion = quality.Revision.Version,
             ReleaseGroup = episode.ParsedEpisodeInfo.ReleaseGroup
         })
     };
     NotifyWebhook(payload, settings);
 }
        public async Task UpdateEventWebhookSettingsAsync()
        {
            // Arrange
            var enabled          = true;
            var url              = "url";
            var bounce           = true;
            var click            = true;
            var deferred         = true;
            var delivered        = true;
            var dropped          = true;
            var groupResubscribe = true;
            var groupUnsubscribe = true;
            var open             = true;
            var processed        = true;
            var spamReport       = true;
            var unsubscribe      = true;

            var apiResponse = @"{
				'enabled': true,
				'url': 'url',
				'group_resubscribe': true,
				'delivered': true,
				'group_unsubscribe': true,
				'spam_report': true,
				'bounce': true,
				'deferred': true,
				'unsubscribe': true,
				'processed': true,
				'open': true,
				'click': true,
				'dropped': true
			}"            ;

            var mockHttp = new MockHttpMessageHandler();

            mockHttp.Expect(new HttpMethod("PATCH"), Utils.GetSendGridApiUri(EVENT_ENDPOINT, "settings")).Respond("application/json", apiResponse);

            var client   = Utils.GetFluentClient(mockHttp);
            var webhooks = new WebhookSettings(client);

            // Act
            var result = await webhooks.UpdateEventWebhookSettingsAsync(enabled, url, bounce, click, deferred, delivered, dropped, groupResubscribe, groupUnsubscribe, open, processed, spamReport, unsubscribe, null, CancellationToken.None).ConfigureAwait(false);

            // Assert
            mockHttp.VerifyNoOutstandingExpectation();
            mockHttp.VerifyNoOutstandingRequest();
            result.ShouldNotBeNull();
        }
Beispiel #15
0
        public void OnDownload(Series series, EpisodeFile episodeFile, WebhookSettings settings)
        {
            var payload = new WebhookPayload
            {
                EventType = "Download",
                Series = new WebhookSeries(series),
                Episodes = episodeFile.Episodes.Value.ConvertAll(x => new WebhookEpisode(x) {
                    Quality = episodeFile.Quality.Quality.Name,
                    QualityVersion = episodeFile.Quality.Revision.Version,
                    ReleaseGroup = episodeFile.ReleaseGroup,
                    SceneName = episodeFile.SceneName
                })
            };

            NotifyWebhook(payload, settings);
        }
        public async Task GetEventWebhookSettingsAsync()
        {
            // Arrange

            var apiResponse = @"{
				'enabled': true,
				'url': 'url',
				'group_resubscribe': true,
				'delivered': true,
				'group_unsubscribe': true,
				'spam_report': true,
				'bounce': true,
				'deferred': true,
				'unsubscribe': true,
				'processed': true,
				'open': true,
				'click': true,
				'dropped': true
			}"            ;

            var mockHttp = new MockHttpMessageHandler();

            mockHttp.Expect(HttpMethod.Get, Utils.GetSendGridApiUri(EVENT_ENDPOINT, "settings")).Respond("application/json", apiResponse);

            var client   = Utils.GetFluentClient(mockHttp);
            var webhooks = new WebhookSettings(client);

            // Act
            var result = await webhooks.GetEventWebhookSettingsAsync(null, CancellationToken.None).ConfigureAwait(false);

            // Assert
            mockHttp.VerifyNoOutstandingExpectation();
            mockHttp.VerifyNoOutstandingRequest();
            result.ShouldNotBeNull();
            result.Url.ShouldBe("url");
            result.GroupResubscribe.ShouldBe(true);
            result.Delivered.ShouldBe(true);
            result.GroupUnsubscribe.ShouldBe(true);
            result.SpamReport.ShouldBe(true);
            result.Bounce.ShouldBe(true);
            result.Deferred.ShouldBe(true);
            result.Unsubscribe.ShouldBe(true);
            result.Processed.ShouldBe(true);
            result.Open.ShouldBe(true);
            result.Click.ShouldBe(true);
            result.Dropped.ShouldBe(true);
        }
Beispiel #17
0
        public bool Webhook([FromBody] WebhookSettings settings)
        {
            try
            {
                settings.Enabled = true;
                WebhookNotification.NotifyAsync(
                    new NotificationOptions {
                    NotificationType = NotificationType.Test, RequestId = -1
                }, settings);

                return(true);
            }
            catch (Exception e)
            {
                Log.LogError(LoggingEvents.Api, e, "Could not test your webhook");
                return(false);
            }
        }
        public async Task SendEventTestAsync()
        {
            // Arrange
            var url = "url";

            var mockHttp = new MockHttpMessageHandler();

            mockHttp.Expect(new HttpMethod("POST"), Utils.GetSendGridApiUri(EVENT_ENDPOINT, "test")).Respond(HttpStatusCode.NoContent);

            var client   = Utils.GetFluentClient(mockHttp);
            var webhooks = new WebhookSettings(client);

            // Act
            await webhooks.SendEventTestAsync(url, null, CancellationToken.None).ConfigureAwait(false);

            // Assert
            mockHttp.VerifyNoOutstandingExpectation();
            mockHttp.VerifyNoOutstandingRequest();
        }
Beispiel #19
0
        public void SendTest()
        {
            // Arrange
            var url = "url";

            var mockHttp = new MockHttpMessageHandler();

            mockHttp.Expect(new HttpMethod("POST"), Utils.GetSendGridApiUri("user/webhooks/event/test")).Respond(HttpStatusCode.NoContent);

            var client   = Utils.GetFluentClient(mockHttp);
            var webhooks = new WebhookSettings(client);

            // Act
            webhooks.SendTestAsync(url, CancellationToken.None).Wait();

            // Assert
            mockHttp.VerifyNoOutstandingExpectation();
            mockHttp.VerifyNoOutstandingRequest();
        }
        public async Task GetInboundParseWebhookSettings()
        {
            // Arrange
            var hostname = "myhostname.com";

            var mockHttp = new MockHttpMessageHandler();

            mockHttp.Expect(HttpMethod.Get, Utils.GetSendGridApiUri(INBOUNDPARSE_ENDPOINT, "settings", hostname)).Respond("application/json", SINGLE_INBOUNDPARSE_WEBHOOK_SETTING_JSON);

            var client   = Utils.GetFluentClient(mockHttp);
            var webhooks = new WebhookSettings(client);

            // Act
            var result = await webhooks.GetInboundParseWebhookSettingsAsync(hostname, null, CancellationToken.None).ConfigureAwait(false);

            // Assert
            mockHttp.VerifyNoOutstandingExpectation();
            mockHttp.VerifyNoOutstandingRequest();
            result.ShouldNotBeNull();
        }
        public static PayloadSignatureTuple CreateSamplePayload(int numberOfEvents, bool useValidSigningKey, int firstSequenceNumber)
        {
            var sampleEvents = CreateThisManyEvents(numberOfEvents);

            var payload = new Payload
            {
                Events             = sampleEvents,
                FirstEventSequence = firstSequenceNumber,
                LastEventSequence  = firstSequenceNumber + numberOfEvents - 1
            };

            var payloadString = JsonConvert.SerializeObject(payload);

            string signature;

            if (useValidSigningKey)
            {
                var configuration = new ConfigurationBuilder()
                                    .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
                                    .Build();

                var webhookSettings = configuration.GetSection("WebhookSettings").Get <WebhookSettings>();

                signature = new SignatureVerifier(webhookSettings).GenerateSignature(payloadString);
            }
            else
            {
                var webhookSettings = new WebhookSettings
                {
                    SigningKey = "InvalidKey"
                };

                signature = new SignatureVerifier(webhookSettings).GenerateSignature(payloadString);
            }

            return(new PayloadSignatureTuple(payload, signature));
        }
Beispiel #22
0
        public async Task GetAllInboundParseWebhookSettings()
        {
            // Arrange
            var apiResponse = "{'result':[" +
                              SINGLE_INBOUNDPARSE_WEBHOOK_SETTING_JSON + "," +
                              SINGLE_INBOUNDPARSE_WEBHOOK_SETTING_JSON +
                              "]}";

            var mockHttp = new MockHttpMessageHandler();

            mockHttp.Expect(HttpMethod.Get, Utils.GetSendGridApiUri(INBOUNDPARSE_ENDPOINT, "settings")).Respond("application/json", apiResponse);

            var client   = Utils.GetFluentClient(mockHttp);
            var webhooks = new WebhookSettings(client);

            // Act
            var result = await webhooks.GetAllInboundParseWebhookSettings(CancellationToken.None).ConfigureAwait(false);

            // Assert
            mockHttp.VerifyNoOutstandingExpectation();
            mockHttp.VerifyNoOutstandingRequest();
            result.ShouldNotBeNull();
            result.Length.ShouldBe(2);
        }
Beispiel #23
0
 public SignatureVerifier(WebhookSettings settings)
 {
     _settings = settings;
 }
Beispiel #24
0
        private void ConfigureServices()
        {
            _eventServices = new List <IEventService>();

            foreach (var es in _hiarcSettings.EventServices)
            {
                if (!es.Enabled)
                {
                    continue;
                }

                if (es.Provider == AWS_KINESIS)
                {
                    var settings = new KinesisSettings
                    {
                        AccessKeyId      = ((dynamic)es.Config).AccessKeyId,
                        SecretAccessKey  = ((dynamic)es.Config).SecretAccessKey,
                        RegionSystemName = ((dynamic)es.Config).RegionSystemName,
                        Stream           = ((dynamic)es.Config).Stream
                    };
                    IOptions <KinesisSettings> kinesisSettings = Options.Create(settings);

                    IEventService kinesisService = new KinesisEventService(es.Name, kinesisSettings, _logger);
                    _eventServices.Add(kinesisService);
                }
                else if (es.Provider == AZURE_SERVICE_BUS)
                {
                    var settings = new ServiceBusSettings
                    {
                        ConnectionString = ((dynamic)es.Config).ConnectionString,
                        Topic            = ((dynamic)es.Config).Topic
                    };
                    IOptions <ServiceBusSettings> serviceBusSettings = Options.Create(settings);

                    IEventService serviceBusService = new ServiceBusEventService(es.Name, serviceBusSettings, _logger);
                    _eventServices.Add(serviceBusService);
                }
                else if (es.Provider == GOOGLE_PUBSUB)
                {
                    var settings = new PubSubSettings
                    {
                        ServiceAccountCredential = ((dynamic)es.Config).ServiceAccountCredential,
                        ProjectId = ((dynamic)es.Config).ProjectId,
                        Topic     = ((dynamic)es.Config).Topic
                    };
                    IOptions <PubSubSettings> pubSubSettings = Options.Create(settings);

                    IEventService pubSubService = new PubSubEventService(es.Name, pubSubSettings, _logger);
                    _eventServices.Add(pubSubService);
                }
                else if (es.Provider == WEBHOOK)
                {
                    var settings = new WebhookSettings
                    {
                        URL    = ((dynamic)es.Config).URL,
                        Secret = ((dynamic)es.Config).Secret
                    };
                    IOptions <WebhookSettings> webhookSettings = Options.Create(settings);

                    IEventService webhookService = new WebhookEventService(es.Name, webhookSettings, _logger);
                    _eventServices.Add(webhookService);
                }
                else
                {
                    throw new Exception($"Unsupported event service provider: {es.Provider}");
                }
            }
        }
Beispiel #25
0
        /// <summary>
        /// Initializes a new instance of the <see cref="BaseClient" /> class.
        /// </summary>
        /// <param name="apiKey">Your api key.</param>
        /// <param name="username">Your username. Ignored if the api key is specified.</param>
        /// <param name="password">Your password. Ignored if the api key is specified.</param>
        /// <param name="httpClient">Allows you to inject your own HttpClient. This is useful, for example, to setup the HtppClient with a proxy.</param>
        /// <param name="disposeClient">Indicates if the http client should be dispose when this instance of BaseClient is disposed.</param>
        /// <param name="options">Options for the SendGrid client.</param>
        /// <param name="logger">Logger.</param>
        public BaseClient(Parameter <string> apiKey, Parameter <string> username, Parameter <string> password, HttpClient httpClient, bool disposeClient, StrongGridClientOptions options, ILogger logger = null)
        {
            _mustDisposeHttpClient = disposeClient;
            _httpClient            = httpClient;
            _options = options ?? GetDefaultOptions();
            _logger  = logger ?? NullLogger.Instance;

            _fluentClient = new FluentClient(new Uri(SENDGRID_V3_BASE_URI), httpClient)
                            .SetUserAgent($"StrongGrid/{Version} (+https://github.com/Jericho/StrongGrid)")
                            .SetRequestCoordinator(new SendGridRetryStrategy());

            _fluentClient.Filters.Remove <DefaultErrorFilter>();

            // Order is important: DiagnosticHandler must be first.
            // Also, the list of filters must be kept in sync with the filters in Utils.GetFluentClient in the unit testing project.
            _fluentClient.Filters.Add(new DiagnosticHandler(_options.LogLevelSuccessfulCalls, _options.LogLevelFailedCalls, _logger));
            _fluentClient.Filters.Add(new SendGridErrorHandler());

            if (apiKey.HasValue)
            {
                if (string.IsNullOrEmpty(apiKey))
                {
                    throw new ArgumentNullException(apiKey);
                }
                else
                {
                    _fluentClient.SetBearerAuthentication(apiKey);
                }
            }
            else if (username.HasValue)
            {
                if (string.IsNullOrEmpty(username))
                {
                    throw new ArgumentNullException(username);
                }
                else
                {
                    _fluentClient.SetBasicAuthentication(username, password);
                }
            }
            else
            {
                throw new ArgumentException("You must provide either an API key or a username and a password.");
            }

            AccessManagement   = new AccessManagement(FluentClient);
            Alerts             = new Alerts(FluentClient);
            ApiKeys            = new ApiKeys(FluentClient);
            Batches            = new Batches(FluentClient);
            Blocks             = new Blocks(FluentClient);
            Bounces            = new Bounces(FluentClient);
            Designs            = new Designs(FluentClient);
            EmailActivities    = new EmailActivities(FluentClient);
            EmailValidation    = new EmailValidation(FluentClient);
            GlobalSuppressions = new GlobalSuppressions(FluentClient);
            InvalidEmails      = new InvalidEmails(FluentClient);
            IpAddresses        = new IpAddresses(FluentClient);
            IpPools            = new IpPools(FluentClient);
            Mail                 = new Mail(FluentClient);
            Settings             = new Settings(FluentClient);
            SpamReports          = new SpamReports(FluentClient);
            Statistics           = new Statistics(FluentClient);
            Subusers             = new Subusers(FluentClient);
            Suppressions         = new Suppressions(FluentClient);
            Teammates            = new Teammates(FluentClient);
            Templates            = new Templates(FluentClient);
            UnsubscribeGroups    = new UnsubscribeGroups(FluentClient);
            User                 = new User(FluentClient);
            WebhookSettings      = new WebhookSettings(FluentClient);
            WebhookStats         = new WebhookStats(FluentClient);
            SenderAuthentication = new SenderAuthentication(FluentClient);
        }