Class: GeoblacklightSidecarImages::ImageService

Inherits:
Object
  • Object
show all
Defined in:
app/services/geoblacklight_sidecar_images/image_service.rb,
app/services/geoblacklight_sidecar_images/image_service/wms.rb,
app/services/geoblacklight_sidecar_images/image_service/iiif.rb,
app/services/geoblacklight_sidecar_images/image_service/image_map_layer.rb,
app/services/geoblacklight_sidecar_images/image_service/tiled_map_layer.rb,
app/services/geoblacklight_sidecar_images/image_service/dynamic_map_layer.rb

Defined Under Namespace

Modules: DynamicMapLayer, Iiif, ImageMapLayer, TiledMapLayer, Wms

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(document) ⇒ ImageService

Returns a new instance of ImageService.



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'app/services/geoblacklight_sidecar_images/image_service.rb', line 11

def initialize(document)
  @document = document

  @metadata = {}
  @metadata["solr_doc_id"] = document.id
  @metadata["solr_version"] = @document.sidecar.version
  @metadata["placeheld"] = false

  @document.sidecar.image_state.transition_to!(:processing, @metadata)

  @logger ||= ActiveSupport::TaggedLogging.new(
    Logger.new(
      Rails.root.join("log", "image_service_#{Rails.env}.log")
    )
  )
end

Instance Attribute Details

#documentObject (readonly)

Returns the value of attribute document.



8
9
10
# File 'app/services/geoblacklight_sidecar_images/image_service.rb', line 8

def document
  @document
end

#logger=(value) ⇒ Object (writeonly)

Sets the attribute logger

Parameters:

  • value

    the value to set the attribute logger to.



9
10
11
# File 'app/services/geoblacklight_sidecar_images/image_service.rb', line 9

def logger=(value)
  @logger = value
end

#metadata=(value) ⇒ Object (writeonly)

Sets the attribute metadata

Parameters:

  • value

    the value to set the attribute metadata to.



9
10
11
# File 'app/services/geoblacklight_sidecar_images/image_service.rb', line 9

def metadata=(value)
  @metadata = value
end

Instance Method Details

#storeBoolean

Stores the document’s image in ActiveStorage

Returns:

  • (Boolean)


31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'app/services/geoblacklight_sidecar_images/image_service.rb', line 31

def store
  # Gentle hands
  sleep(1)

  io_file = image_tempfile(@document.id)

  if io_file.nil? || @metadata["placeheld"] == true
    @document.sidecar.image_state.transition_to!(:placeheld, @metadata)
  else
    attach_io(io_file)
  end

  log_output
rescue => e
  @metadata["exception"] = e.inspect
  @document.sidecar.image_state.transition_to!(:failed, @metadata)

  log_output
end