diff --git a/app/controllers/reports_controller.rb b/app/controllers/reports_controller.rb index 9187fce9c..02c35d329 100644 --- a/app/controllers/reports_controller.rb +++ b/app/controllers/reports_controller.rb @@ -10,4 +10,8 @@ class ReportsController < ApplicationController def contributors @report = Reports::Contributors.new end + + def uploads + @report = Reports::Uploads.new(params[:min_date], params[:max_date], params[:queries]) + end end diff --git a/app/logical/reports/uploads.rb b/app/logical/reports/uploads.rb new file mode 100644 index 000000000..6ee484eb8 --- /dev/null +++ b/app/logical/reports/uploads.rb @@ -0,0 +1,26 @@ +module Reports + class Uploads + attr_reader :min_date, :max_date, :queries + + def initialize(min_date, max_date, queries) + if min_date.present? + @min_date = min_date + else + @min_date = 30.days.ago.to_date + end + + if max_date.present? + @max_date = max_date + else + @max_date = Date.today + end + + @queries = queries.to_s.split(/,\s*/).join(",") + end + + def generate_sig + digest = OpenSSL::Digest.new("sha256") + OpenSSL::HMAC.hexdigest(digest, Danbooru.config.shared_remote_key, "#{min_date},#{max_date},#{queries}") + end + end +end diff --git a/app/views/reports/uploads.html.erb b/app/views/reports/uploads.html.erb new file mode 100644 index 000000000..97e49dd4a --- /dev/null +++ b/app/views/reports/uploads.html.erb @@ -0,0 +1,33 @@ +
+
+

Upload Report

+ + <%= form_tag(reports_uploads_path, :method => :get, :class => "simple_form") do %> + +
+ + <%= text_field_tag "queries", params[:queries], :placeholder => "Separate with commas" %> +
+ +
+ + <%= text_field_tag "min_date", params[:min_date], :placeholder => "YYYY-MM-DD" %> +
+ +
+ + <%= text_field_tag "max_date", params[:max_date], :placeholder => "YYYY-MM-DD" %> +
+ + <%= submit_tag "Search" %> + <% end %> + + <% if params[:queries] %> + <%= content_tag("iframe", "Loading...", :src => "#{Danbooru.config.report_server}/reports/uploads?min=#{@report.min_date}&max=#{@report.max_date}&tags=#{u(@report.queries)}&sig=#{@report.generate_sig}", :height => "700", :width => "1200", :style => "border: none;") %> + <% end %> +
+
+ +<% content_for(:page_title) do %> + Upload Report - <%= Danbooru.config.app_name %> +<% end %> diff --git a/config/routes.rb b/config/routes.rb index 2f913b017..3c9a01db6 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -222,6 +222,7 @@ Rails.application.routes.draw do get "reports/user_promotions" => "reports#user_promotions" get "reports/janitor_trials" => "reports#janitor_trials" get "reports/contributors" => "reports#contributors" + get "reports/uploads" => "reports#uploads" resources :saved_searches, :except => [:show] do collection do get :categories