lib/logster/middleware/viewer.rb in logster-2.2.0 vs lib/logster/middleware/viewer.rb in logster-2.3.0

- old
+ new

@@ -107,13 +107,24 @@ end elsif resource =~ /\/settings(\.json)?$/ json = $1 == ".json" if json - coded_patterns = Logster.store.ignore&.map(&:inspect) || [] - custom_patterns = Logster::SuppressionPattern.find_all(raw: true) - [200, { "Content-Type" => "application/json; charset=utf-8" }, [JSON.generate(coded_patterns: coded_patterns, custom_patterns: custom_patterns)]] + ignore_count = Logster.store.get_all_ignore_count + suppression = [] + + Logster.store.ignore&.each do |pattern| + string_pattern = Regexp === pattern ? pattern.inspect : pattern.to_s + count = ignore_count[string_pattern] || 0 + suppression << { value: string_pattern, count: count, hard: true } + end + + Logster::SuppressionPattern.find_all(raw: true).each do |pattern| + count = ignore_count[pattern] || 0 + suppression << { value: pattern, count: count } + end + [200, { "Content-Type" => "application/json; charset=utf-8" }, [JSON.generate(suppression: suppression)]] else [200, { "Content-Type" => "text/html; charset=utf-8" }, [body(preload_json)]] end elsif resource =~ /\/patterns\/([a-zA-Z0-9_]+)\.json$/ unless Logster.config.enable_custom_patterns_via_ui @@ -123,9 +134,27 @@ set_name = $1 req = Rack::Request.new(env) return method_not_allowed if req.request_method == "GET" update_patterns(set_name, req) + elsif resource == "/reset-count.json" + req = Rack::Request.new(env) + return method_not_allowed("PUT is needed for this endpoint") if req.request_method != "PUT" + pattern = nil + if [true, "true"].include?(req.params["hard"]) + pattern = Logster.store.ignore.find do |patt| + str = Regexp === patt ? patt.inspect : patt.to_s + str == req.params["pattern"] + end + else + pattern = Logster::SuppressionPattern.find_all(raw: true).find do |patt| + patt == req.params["pattern"] + end + end + return not_found("Pattern not found") unless pattern + pattern = Regexp === pattern ? pattern.inspect : pattern.to_s + Logster.store.remove_ignore_count(pattern) + [200, {}, ["OK"]] elsif resource == "/" [200, { "Content-Type" => "text/html; charset=utf-8" }, [body(preload_json)]] else not_found end