From c35407d7a9766eb98ac6778f16c090e35d2b001a Mon Sep 17 00:00:00 2001 From: Pete Matsyburka Date: Sun, 25 Oct 2026 21:38:53 +0200 Subject: [PATCH] cleanup routes --- app/controllers/api/attachments_controller.rb | 74 ------------------- .../api/submitter_email_clicks_controller.rb | 15 ---- config/routes.rb | 2 - lib/api_path_consider_json_middleware.rb | 5 +- 4 files changed, 1 insertion(+), 95 deletions(-) delete mode 100644 app/controllers/api/attachments_controller.rb delete mode 100644 app/controllers/api/submitter_email_clicks_controller.rb diff --git a/app/controllers/api/attachments_controller.rb b/app/controllers/api/attachments_controller.rb deleted file mode 100644 index 95c3f6c18..000000000 --- a/app/controllers/api/attachments_controller.rb +++ /dev/null @@ -1,74 +0,0 @@ -# frozen_string_literal: true - -module Api - class AttachmentsController < ActionController::API - include ActionController::Cookies - include ActiveStorage::SetCurrent - - COOKIE_STORE_LIMIT = 10 - - def create - @submitter = Submitter.find_by!(slug: params[:submitter_slug]) - - unless can_upload?(@submitter) - return render json: { error: I18n.t('form_has_been_archived') }, status: :unprocessable_content - end - - file = params[:file] - - if params[:type].in?(%w[initials signature]) - image = ImageUtils.load_vips(file.read, content_type: file.content_type) - - if ImageUtils.blank?(image) - Rollbar.error("Empty signature: #{@submitter.id}") if defined?(Rollbar) - - return render json: { error: "#{params[:type]} is empty" }, status: :unprocessable_content - end - - if ImageUtils.error?(image) - Rollbar.error("Error signature: #{@submitter.id}") if defined?(Rollbar) - - return render json: { error: "#{params[:type]} error, try to sign on another device" }, - status: :unprocessable_content - end - - metadata = { analyzed: true, identified: true, width: image.width, height: image.height } - end - - attachment = Submitters.create_attachment!(@submitter, file, metadata:) - - if params[:remember_signature] == 'true' && @submitter.email.present? - cookies.permanent.encrypted[:signature_uuids] = build_new_cookie_signatures_json(@submitter, attachment) - end - - render json: attachment.as_json(only: %i[uuid created_at], methods: %i[url filename content_type]) - rescue Submitters::MaliciousFileExtension => e - Rollbar.error(e) if defined?(Rollbar) - - render json: { error: e.message }, status: :unprocessable_content - end - - def can_upload?(submitter) - !submitter.declined_at? && - !submitter.completed_at? && - !submitter.submission.archived_at? && - !submitter.submission.expired? && - !submitter.submission.template&.archived_at? - end - - def build_new_cookie_signatures_json(submitter, attachment) - values = - begin - JSON.parse(cookies.encrypted[:signature_uuids].presence || '{}') - rescue JSON::ParserError - {} - end - - values[submitter.email] = attachment.uuid - - values = values.to_a.last(COOKIE_STORE_LIMIT).to_h if values.size > COOKIE_STORE_LIMIT - - values.to_json - end - end -end diff --git a/app/controllers/api/submitter_email_clicks_controller.rb b/app/controllers/api/submitter_email_clicks_controller.rb deleted file mode 100644 index 9c52fc5b6..000000000 --- a/app/controllers/api/submitter_email_clicks_controller.rb +++ /dev/null @@ -1,15 +0,0 @@ -# frozen_string_literal: true - -module Api - class SubmitterEmailClicksController < ActionController::API - def create - @submitter = Submitter.find_by!(slug: params[:submitter_slug]) - - if params[:t] == SubmissionEvents.build_tracking_param(@submitter, 'click_email') - SubmissionEvents.create_with_tracking_data(@submitter, 'click_email', request) - end - - render json: {} - end - end -end diff --git a/config/routes.rb b/config/routes.rb index 67d8d7163..812581ae1 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -25,8 +25,6 @@ Rails.application.routes.draw do namespace :api, defaults: { format: :json } do resource :user, only: %i[show] - resources :attachments, only: %i[create] - resources :submitter_email_clicks, only: %i[create] resources :submitter_form_views, only: %i[create] resources :submitters, only: %i[index show update] resources :submissions, only: %i[index show create update destroy] do diff --git a/lib/api_path_consider_json_middleware.rb b/lib/api_path_consider_json_middleware.rb index 013c2ee4c..a5ac7ae05 100644 --- a/lib/api_path_consider_json_middleware.rb +++ b/lib/api_path_consider_json_middleware.rb @@ -7,10 +7,7 @@ class ApiPathConsiderJsonMiddleware def call(env) if env['PATH_INFO'].starts_with?('/api') && - (!env['PATH_INFO'].ends_with?('/documents') || env['REQUEST_METHOD'] != 'POST') && - !env['PATH_INFO'].ends_with?('/attachments') && - !env['PATH_INFO'].ends_with?('/submitter_sms_clicks') && - !env['PATH_INFO'].ends_with?('/submitter_email_clicks') + !env['PATH_INFO'].ends_with?('/submitter_sms_clicks') env['CONTENT_TYPE'] = 'application/json' end