Sha256: 6b90f51e396c3d5b3c5ab0665f891c0626b641194f5ec89ec32f198b4f609184

Contents?: true

Size: 1.01 KB

Versions: 43

Compression:

Stored size: 1.01 KB

Contents

require 'active_model'
module EtFakeCcd
  module Command
    class UploadDocumentCommand
      include ActiveModel::Model
      include ActiveModel::Attributes
      VALID_FILE_EXTENSIONS = ['.pdf', '.csv', '.rtf'].freeze
      VALID_FILE_CONTENT_TYPES = ['application/pdf', 'text/csv', 'application/rtf'].freeze

      attribute :data

      def self.from_json(json)
        new data: json
      end

      validate :validate_data

      private

      def validate_data
        validate_file
      end

      def validate_file
        return if validate_file_extension && validate_file_content_type

        errors.add :data, "Your upload contains a disallowed file type", field_error: { "id": "files", "message": "Your upload contains a disallowed file type" }
      end

      def validate_file_content_type
        VALID_FILE_CONTENT_TYPES.include?(data.dig('files', 'type'))
      end

      def validate_file_extension
        VALID_FILE_EXTENSIONS.include?(File.extname(data.dig('files', 'filename')))
      end
    end
  end
end

Version data entries

43 entries across 43 versions & 1 rubygems

Version Path
et_fake_ccd-2.1.0 lib/et_fake_ccd/command/upload_document_command.rb
et_fake_ccd-2.0.0 lib/et_fake_ccd/command/upload_document_command.rb
et_fake_ccd-1.1.11 lib/et_fake_ccd/command/upload_document_command.rb
et_fake_ccd-1.1.10 lib/et_fake_ccd/command/upload_document_command.rb
et_fake_ccd-1.1.9 lib/et_fake_ccd/command/upload_document_command.rb
et_fake_ccd-1.1.8 lib/et_fake_ccd/command/upload_document_command.rb
et_fake_ccd-1.1.6 lib/et_fake_ccd/command/upload_document_command.rb
et_fake_ccd-1.1.5 lib/et_fake_ccd/command/upload_document_command.rb
et_fake_ccd-1.1.4 lib/et_fake_ccd/command/upload_document_command.rb
et_fake_ccd-1.1.3 lib/et_fake_ccd/command/upload_document_command.rb
et_fake_ccd-1.1.2 lib/et_fake_ccd/command/upload_document_command.rb
et_fake_ccd-1.1.1 lib/et_fake_ccd/command/upload_document_command.rb
et_fake_ccd-1.1.0 lib/et_fake_ccd/command/upload_document_command.rb
et_fake_ccd-1.0.8 lib/et_fake_ccd/command/upload_document_command.rb
et_fake_ccd-1.0.7 lib/et_fake_ccd/command/upload_document_command.rb
et_fake_ccd-1.0.6 lib/et_fake_ccd/command/upload_document_command.rb
et_fake_ccd-1.0.5 lib/et_fake_ccd/command/upload_document_command.rb
et_fake_ccd-1.0.4 lib/et_fake_ccd/command/upload_document_command.rb
et_fake_ccd-1.0.3 lib/et_fake_ccd/command/upload_document_command.rb
et_fake_ccd-1.0.2 lib/et_fake_ccd/command/upload_document_command.rb