Module: Uploadcare::Rails::Internal::ModelMacros

Extended by:
ActiveSupport::Concern
Includes:
FileUuidExtraction
Included in:
ActiveRecordHooks, MongoidHooks
Defined in:
lib/uploadcare/rails/internal/model_macros.rb

Constant Summary collapse

GROUP_ID_REGEX =
/\b[0-9a-f]{8}\b-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-\b[0-9a-f]{12}\b~\d+/.freeze

Instance Method Summary collapse

Instance Method Details

#build_uploadcare_file(attribute, client: nil) ⇒ Object



15
16
17
18
19
20
21
22
23
24
# File 'lib/uploadcare/rails/internal/model_macros.rb', line 15

def build_uploadcare_file(attribute, client: nil)
  cdn_url = read_uploadcare_attribute(attribute).to_s
  return if cdn_url.empty?

  uuid = IdExtractor.call(cdn_url)
  cache_key = AttachedFile.build_cache_key(cdn_url)
  default_attributes = { cdn_url: cdn_url, uuid: uuid.presence }
  file_attributes = ::Rails.cache.read(cache_key).presence || default_attributes
  AttachedFile.new(file_attributes, client: client)
end

#build_uploadcare_file_group(attribute, client: nil) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
# File 'lib/uploadcare/rails/internal/model_macros.rb', line 26

def build_uploadcare_file_group(attribute, client: nil)
  cdn_url = read_uploadcare_attribute(attribute).to_s
  return if cdn_url.empty?

  group_id = IdExtractor.call(cdn_url, GROUP_ID_REGEX).presence
  cache_key = AttachedFiles.build_cache_key(cdn_url)
  files_count = FilesCountExtractor.call(group_id)
  default_attributes = { cdn_url: cdn_url, id: group_id, files_count: files_count }
  file_attributes = ::Rails.cache.read(cache_key).presence || default_attributes
  AttachedFiles.new(file_attributes, client: client)
end