Class: OpenehrRails::TemplateUploader

Inherits:
Object
  • Object
show all
Defined in:
lib/openehr_rails/template_uploader.rb

Overview

Validates an uploaded OPT file, stores it under app/templates/operational and registers it in the template registry. Used by the admin engine's drag & drop upload.

Defined Under Namespace

Classes: InvalidTemplate

Constant Summary collapse

STORAGE_DIR =
'app/templates/operational'

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(file:, root:, registry:) ⇒ TemplateUploader

Returns a new instance of TemplateUploader.



18
19
20
21
22
# File 'lib/openehr_rails/template_uploader.rb', line 18

def initialize(file:, root:, registry:)
  @file = file
  @root = Pathname.new(root)
  @registry = registry
end

Class Method Details

.call(file:, root: ::Rails.root, registry: ::OpenehrTemplate) ⇒ Object



14
15
16
# File 'lib/openehr_rails/template_uploader.rb', line 14

def self.call(file:, root: ::Rails.root, registry: ::OpenehrTemplate)
  new(file: file, root: root, registry: registry).call
end

Instance Method Details

#callObject



24
25
26
27
28
29
30
31
32
33
# File 'lib/openehr_rails/template_uploader.rb', line 24

def call
  validate_filename!
  content = read_content
  validate_template!(content)

  path = storage_path
  FileUtils.mkdir_p(path.dirname)
  File.binwrite(path, content)
  @registry.from_opt_file(path.to_s)
end