async Task <string> SendCommand(string command, ushort?overridePort, CancellationToken cancellationToken) { try { var commandString = String.Format(CultureInfo.InvariantCulture, "?{0}={1}&{2}={3}", byondTopicSender.SanitizeString(Constants.DMInteropAccessIdentifier), byondTopicSender.SanitizeString(reattachInformation.AccessIdentifier), byondTopicSender.SanitizeString(Constants.DMParameterCommand), command); // intentionally don't sanitize command, that's up to the caller var targetPort = overridePort ?? reattachInformation.Port; logger.LogTrace("Export to :{0}. Query: {1}", targetPort, commandString); return(await byondTopicSender.SendTopic( new IPEndPoint(IPAddress.Loopback, targetPort), commandString, cancellationToken).ConfigureAwait(false)); } catch (OperationCanceledException) { throw; } catch (Exception e) { logger.LogInformation("Send command exception:{0}{1}", Environment.NewLine, e.Message); return(null); } }
/// <inheritdoc /> public Task ProcessPayload(PullRequestEventPayload payload, CancellationToken cancellationToken) { if (payload == null) { throw new ArgumentNullException(nameof(payload)); } switch (payload.Action) { case "opened": case "closed": case "reopened": //reserialize it //.htmlSpecialChars($payload['sender']['login']).': <a href="'.$payload['pull_request']['html_url'].'">'.htmlSpecialChars('#'.$payload['pull_request']['number'].' '.$payload['pull_request']['user']['login'].' - '.$payload['pull_request']['title']).'</a>'; var json = new SimpleJsonSerializer().Serialize(payload); json = byondTopicSender.SanitizeString(json); const string innerAnnouncementFormatter = "#{0} {1} - {2}"; var announcement = String.Format(CultureInfo.CurrentCulture, innerAnnouncementFormatter, payload.PullRequest.Number, payload.PullRequest.User.Login, payload.PullRequest.Title); announcement = HttpUtility.HtmlEncode(announcement); var announcmentFormatter = stringLocalizer["AnnouncementFormatter"]; // "[{0}] Pull Request {1} by {2}: <a href='{3}'>{4}</a>"; announcement = String.Format(CultureInfo.CurrentCulture, announcmentFormatter, payload.Repository.FullName, payload.PullRequest.Merged ? stringLocalizer["Merged"] : payload.Action, payload.Sender.Login, payload.PullRequest.HtmlUrl, announcement); announcement = byondTopicSender.SanitizeString(announcement); var startingQuery = String.Format(CultureInfo.InvariantCulture, "?announce={0}&payload={1}&key=", json, announcement); var tasks = new List <Task>(); foreach (var I in serverConfiguration.Entries) { var final = startingQuery + byondTopicSender.SanitizeString(I.CommsKey); tasks.Add(byondTopicSender.SendTopic(I.Address, I.Port, final, cancellationToken)); } return(Task.WhenAll(tasks)); } throw new NotSupportedException(); }