From 45afb28f69fb4a263f3a7d938789a2b1ad9e3650 Mon Sep 17 00:00:00 2001 From: "Collin M. Barrett" Date: Tue, 30 Jan 2018 18:17:50 -0600 Subject: [PATCH 1/2] strip single backslash from end of rule throws MySQL exception since it thinks it is escaping closing single quote. may be temporary, should re-evaluate. --- .../Services/ScrapeService.cs | 22 ++++++++++++++----- 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/src/FilterLists.Services/Services/ScrapeService.cs b/src/FilterLists.Services/Services/ScrapeService.cs index ef2073058..33e155a57 100644 --- a/src/FilterLists.Services/Services/ScrapeService.cs +++ b/src/FilterLists.Services/Services/ScrapeService.cs @@ -70,10 +70,7 @@ private static async Task GetHttpResponseMessageContent(string url) private async Task SaveSnapshots(IEnumerable snapshots) { - foreach (var snapshot in snapshots) - { - await AddOrUpdateRules(snapshot); - } + foreach (var snapshot in snapshots) await AddOrUpdateRules(snapshot); } private async Task AddOrUpdateRules(Snapshot snapshot) @@ -126,13 +123,26 @@ private class FilterListViewUrlDto private class Snapshot { - public string Content { - set => RawRules = value?.Split(new[] { "\r\n", "\r", "\n" }, StringSplitOptions.RemoveEmptyEntries); + public string Content + { + set + { + if (value == null) return; + var rawRules = value.Split(new[] {"\r\n", "\r", "\n"}, StringSplitOptions.RemoveEmptyEntries); + for (var i = 0; i < rawRules.Length; i++) + rawRules[i] = TrimSingleBackslashFromEnd(rawRules[i]); + RawRules = rawRules; + } } public int FilterListId { get; set; } public string[] RawRules { get; private set; } + + private static string TrimSingleBackslashFromEnd(string rule) + { + return rule.EndsWith(@"\") && !rule.EndsWith(@"\\") ? rule.Remove(rule.Length - 1) : rule; + } } } } \ No newline at end of file From da478e6204da90bcc354999e0d9d11224ecf142f Mon Sep 17 00:00:00 2001 From: "Collin M. Barrett" Date: Wed, 31 Jan 2018 06:35:14 -0600 Subject: [PATCH 2/2] extract lint rules to its own method probly violating YAGNI atm, but, yeah... --- src/FilterLists.Services/Services/ScrapeService.cs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/FilterLists.Services/Services/ScrapeService.cs b/src/FilterLists.Services/Services/ScrapeService.cs index 33e155a57..d8a920341 100644 --- a/src/FilterLists.Services/Services/ScrapeService.cs +++ b/src/FilterLists.Services/Services/ScrapeService.cs @@ -130,7 +130,7 @@ public string Content if (value == null) return; var rawRules = value.Split(new[] {"\r\n", "\r", "\n"}, StringSplitOptions.RemoveEmptyEntries); for (var i = 0; i < rawRules.Length; i++) - rawRules[i] = TrimSingleBackslashFromEnd(rawRules[i]); + rawRules[i] = LintStringForMySql(rawRules[i]); RawRules = rawRules; } } @@ -139,6 +139,12 @@ public string Content public string[] RawRules { get; private set; } + private static string LintStringForMySql(string rule) + { + rule = TrimSingleBackslashFromEnd(rule); + return rule; + } + private static string TrimSingleBackslashFromEnd(string rule) { return rule.EndsWith(@"\") && !rule.EndsWith(@"\\") ? rule.Remove(rule.Length - 1) : rule;