// GET: api/Titles public IList <TitlesDTO> GetTitles(string searchString) { IQueryable <TitlesDTO> titles; if (String.IsNullOrEmpty(searchString)) { return(null); } else { titles = from t in _context.Titles where t.TitleName.Contains(searchString ?? "") orderby t.TitleNameSortable select new TitlesDTO() { TitleId = t.TitleId, TitleName = t.TitleName }; } var result = titles.ToList(); foreach (var title in result) { title.Url = UrlCleaner.CleanUrl(Url.Link("", new { controller = "Details", titleId = title.TitleId })); } return(result); }
public void UrlCleaner_CleanSecureData_ClearOneSecureKeyInUrlQuery_OneSecureKeyInUrlQueryCleared() { // Arrange var url = "http://test.com?user=max&pass=123456"; var secureKey = "pass"; var urlCleaner = new UrlCleaner(); var expectedResult = "http://test.com?user=max&pass=XXXXXX"; // Act var cleanedUrl = urlCleaner.CleanSecureData(url, secureKey, SecureDataLocation.UrlQuery); // Assert Assert.Equal(expectedResult, cleanedUrl); }
public void UrlCleaner_CleanSecureData_ClearOneSecureKeyInUrlRest_OneSecureKeyInUrlRestCleared() { // Arrange var url = "http://test.com/users/max/info"; var secureKey = "users"; var urlCleaner = new UrlCleaner(); var expectedResult = "http://test.com/users/XXX/info"; // Act var resultUrl = urlCleaner.CleanSecureData(url, secureKey, SecureDataLocation.UrlRest); // Assert Assert.Equal(expectedResult, resultUrl); }
public void UrlCleaner_CleanSecureData_DoNotCleanSecureKeyIfWrongSecureDataLocationIsSpecified_SecureKeyNotCleared() { // Arrange var url = "http://test.com/users/max/info?pass=1234"; var secureKeyInRest = "users"; var urlCleaner = new UrlCleaner(); var expectedResult = "http://test.com/users/max/info?pass=1234"; // Act var resultUrl = urlCleaner.CleanSecureData(url, secureKeyInRest, SecureDataLocation.JsonAttribute); // Assert Assert.Equal(expectedResult, resultUrl); }
public void ClearSecure_ClearSameInRestParameterWithTheSameNameInQuery_SecureInRestClearedNotInQuery() { // arrange var url = "http://test.com/pass/123/info?pass=123456"; var secureKey = "pass"; var urlCleaner = new UrlCleaner(); var expectedResult = "http://test.com/pass/XXX/info?pass=123456"; // act var cleanedUrl = urlCleaner.ClearSecure(url, secureKey, SecureLocationType.Rest); // assert Assert.Equal(expectedResult, cleanedUrl); }
public void ClearSecure_ClearOneSecureInRestParameter_OneSecureInRestParameterCleared() { // arrange var url = "http://test.com/users/max/info?pass=123456"; var secureKey = "users"; var urlCleaner = new UrlCleaner(); var expectedResult = "http://test.com/users/XXX/info?pass=123456"; // act var cleanedUrl = urlCleaner.ClearSecure(url, secureKey, SecureLocationType.Rest); // assert Assert.Equal(expectedResult, cleanedUrl); }
public void ClearSecure_ClearSameSecuresInRestAndQueryParameter_SameSecureInQueryAndRestParameterCleared() { // arrange var url = "http://test.com/pass/123/info?pass=123456"; var secureKey = "pass"; var urlCleaner = new UrlCleaner(); var expectedResult = "http://test.com/pass/XXX/info?pass=XXXXXX"; // act var cleanedUrl = urlCleaner.ClearSecure(url, secureKey, SecureLocationType.Query); cleanedUrl = urlCleaner.ClearSecure(cleanedUrl, secureKey, SecureLocationType.Rest); // assert Assert.Equal(expectedResult, cleanedUrl); }
public void UrlCleaner_CleanSecureData_ClearOneSecureKeyInUrlRestAndOneSecureKeyInUrlQuery_OneSecureKeyInUrlRestAndOneSecureKeyInUrlQueryCleared() { // Arrange var url = "http://test.com/users/max?pass=1234"; var secureKeyInRest = "users"; var secureKeyInQuery = "pass"; var urlCleaner = new UrlCleaner(); var expectedResult = "http://test.com/users/XXX?pass=XXXX"; // Act var resultUrl = urlCleaner.CleanSecureData(url, secureKeyInRest, SecureDataLocation.UrlRest); resultUrl = urlCleaner.CleanSecureData(resultUrl, secureKeyInQuery, SecureDataLocation.UrlQuery); // Assert Assert.Equal(expectedResult, resultUrl); }
public void UrlCleaner_CleanSecureData_ClearTwoSecureKeysInUrlRest_TwoSecureKeysInUrlRestCleared() { // Arrange var url = "http://test.com/users/max/info/pass/1234"; var secureKey1 = "pass"; var secureKey2 = "users"; var urlCleaner = new UrlCleaner(); var expectedResult = "http://test.com/users/XXX/info/pass/XXXX"; // Act var resultUrl = urlCleaner.CleanSecureData(url, secureKey1, SecureDataLocation.UrlRest); resultUrl = urlCleaner.CleanSecureData(resultUrl, secureKey2, SecureDataLocation.UrlRest); // Assert Assert.Equal(expectedResult, resultUrl); }
public void UrlCleaner_CleanSecureData_ClearTwoSecureKeysInUrlQuery_TwoSecureKeysInUrlQueryCleared() { // Arrange var url = "http://test.com?user=max&pass=123456"; var secureKey1 = "pass"; var secureKey2 = "user"; var urlCleaner = new UrlCleaner(); var expectedResult = "http://test.com?user=XXX&pass=XXXXXX"; // Act var resultUrl = urlCleaner.CleanSecureData(url, secureKey1, SecureDataLocation.UrlQuery); resultUrl = urlCleaner.CleanSecureData(resultUrl, secureKey2, SecureDataLocation.UrlQuery); // Assert Assert.Equal(expectedResult, resultUrl); }
public void ClearSecure_ClearSecureWithWrongLocation_SecureNotCleared() { // arrange var url = "http://test.com/users/max/info?pass=123456"; var secureKey1 = "users"; var secureKey2 = "info"; var urlCleaner = new UrlCleaner(); var expectedResult = "http://test.com/users/max/info?pass=123456"; // act var clearedUrl = urlCleaner.ClearSecure(url, secureKey1, SecureLocationType.Query); clearedUrl = urlCleaner.ClearSecure(clearedUrl, secureKey2, SecureLocationType.Rest); // assert Assert.Equal(expectedResult, clearedUrl); }
private IEnumerable <ResponseMessage> RespondIfLinkFound(IncomingMessage message, IValidHandle matchedHandle) { var messages = new List <ResponseMessage>(); var urls = RegexHelper.FindURl(message.RawText); if (urls.Any()) { var firstUrl = urls.First(); SearchResponseMessages searchResults = null; try { if (Uri.IsWellFormedUriString(firstUrl.Value, UriKind.Absolute)) { var cleansedUrl = UrlCleaner.CleanForTrackingQueryParams(firstUrl.Value); searchResults = _client.SearchMessagesAsync(cleansedUrl, SearchSort.timestamp, count: 1, direction: SearchSortDirection.asc).GetAwaiter().GetResult(); } } catch (Exception e) { messages.Add(RespondToBotChannelWithJson(e)); } if (searchResults != null) { if (searchResults.messages.matches.Any()) { var r = searchResults.messages.matches.FirstOrDefault(); if (r != null) { messages.Add(message.ReplyToChannel($":older_man: postet av @{r.username} for {TimeSpanExtensions.Ago(r.ts)} siden. {r.permalink}")); messages.Add(RespondToBotsChannel(Jsonify(r))); } } } else { messages.Add(RespondToBotsChannel("no results")); } } return(messages); }
//- @PostNewComment -// public Int32 PostNewComment(Int32 captchaValue, String blogEntryGuid, String author, String email, String website, String text) { Int32 returnStatus; //+ if (captchaValue == HttpData.GetScopedSessionItem <Int32>("Captcha", "ExpectedValue")) { CommentReportCreator creator = new CommentReportCreator(); creator.Formatter = new Themelia.Reporting.HtmlFormatter(); Themelia.Map map = new Themelia.Map(); map.Add("BlogEntryTitle", "{BlogEntryTitle}"); map.Add("Guid", blogEntryGuid); map.Add("Author", author); map.Add("Email", email); map.Add("WebSite", website); map.Add("DateTime", DateTime.Now.ToString()); map.Add("Text", text); map.Add("Link", UrlCleaner.FixWebPathTail(Minima.Configuration.BlogSection.GetConfigSection().Domain) + @"/services/comment/{CommentGuid}"); String emailBodyTemplate = creator.Create(map); Themelia.Configuration.SystemSection systemSection = Themelia.Configuration.SystemSection.GetConfigSection(); String emailSubject = String.Format("{0} ({1})", BlogSection.GetConfigSection().Comment.Subject, systemSection.AppInfo.Name); //+ String commentGuid = String.Empty; returnStatus = 0; try { commentGuid = CommentAgent.PostNewComment(blogEntryGuid, text, author, email, website, DateTime.Now, emailBodyTemplate, emailSubject); } catch (Exception ex) { if (ex.Message != "Failure sending mail.") { returnStatus = 1; } } } else { returnStatus = 2; } //+ return(returnStatus); }
public void ClearSecure_ClearMultipleSecuresInRestAndQuery_MultipleSecuresInRestAndQueryCleared() { // arrange var url = "http://test.com/pass/123/info/456?pass=123456&[email protected]"; var secureKey1 = "pass"; var secureKey2 = "info"; var secureKey3 = "pass"; var secureKey4 = "email"; var urlCleaner = new UrlCleaner(); var expectedResult = "http://test.com/pass/XXX/info/XXX?pass=XXXXXX&email=XXXXXXXXXXXXXXXXXXXXXXXXX"; // act var cleanedUrl = urlCleaner.ClearSecure(url, secureKey1, SecureLocationType.Rest); cleanedUrl = urlCleaner.ClearSecure(cleanedUrl, secureKey2, SecureLocationType.Rest); cleanedUrl = urlCleaner.ClearSecure(cleanedUrl, secureKey3, SecureLocationType.Query); cleanedUrl = urlCleaner.ClearSecure(cleanedUrl, secureKey4, SecureLocationType.Query); // assert Assert.Equal(expectedResult, cleanedUrl); }
/// <summary> /// A Lambda function to respond to HTTP Get methods from API Gateway /// </summary> /// <param name="request"></param> /// <returns>The list of blogs</returns> public async Task <APIGatewayProxyResponse> Validate(APIGatewayProxyRequest request, ILambdaContext context) { context.Logger.LogLine("Received:" + request.Body); if (request.IsSlackChallengeRequest()) { var challengeRequest = request.Body.As <ChallengeRequest>(); return(Respond(challengeRequest.Challenge, context)); } var slackEvent = request.Body.As <SlackEventAPIPayload>(); if (slackEvent == null || slackEvent.Event == null) { return(Respond("IGNORED", context)); } if (string.IsNullOrEmpty(slackEvent.Event.Text)) { return(Respond("IGNORED", context)); } if (slackEvent.Event != null && slackEvent.Event.Text != null && !string.IsNullOrEmpty(slackEvent.Event.Bot_Id)) { return(Respond("BOT", context)); } if (!string.IsNullOrEmpty(slackEvent.Event.SubType) && slackEvent.Event.SubType == "bot_message") { return(Respond("BOT", context)); } var urls = RegexHelper.FindURl(slackEvent.Event.Text); if (urls.Any()) { var firstUrl = urls.First(); var cleansedUrl = UrlCleaner.CleanForTrackingQueryParams(firstUrl.Value); cleansedUrl = cleansedUrl.TrimEnd('/'); var searchResults = await _slackClient.SearchMessagesAsync(cleansedUrl, SearchSort.timestamp, count : 1, direction : SearchSortDirection.asc); if (searchResults != null && searchResults.messages.matches.Any()) { context.Logger.LogLine(JsonConvert.SerializeObject(searchResults.messages.matches)); var r = searchResults.messages.matches.FirstOrDefault(); if (r == null) { return(Respond($"NO-URL-IN-MSG", context)); } if (r.ts == slackEvent.Event.Ts) { return(Respond("NEW", context)); } if (r.user == slackEvent.Event.User) { return(Respond("OLD-BUT-SAME-USER-SO-IGNORING", context)); } var reactionResponse = await _slackClient.AddReactions(slackEvent.GetChannel(), slackEvent.Event.Ts); var alreadyReacted = reactionResponse.Any(AlreadyReactedTo); if (!alreadyReacted) { var message = $"postet av @{r.username} for {TimeSpanExtensions.Ago(r.ts)} siden."; var response = await _slackClient.SendMessage(slackEvent.GetChannel(), message, slackEvent.Event.Ts, r.permalink); var body = await response.Content.ReadAsStringAsync(); context.Logger.LogLine("Sent message. Response:" + JsonConvert.SerializeObject(body)); var reactionResponseBody = await reactionResponse.First().Content.ReadAsStringAsync(); context.Logger.LogLine("Sent reaction. Response:" + JsonConvert.SerializeObject(reactionResponseBody)); return(Respond($"OLD", context)); } return(Respond($"ALREADY-OLDED", context)); } } return(Respond($"NO-URL-IN-MSG", context)); }