Class: Imgproxy::UrlAdapters

Inherits:
Object
  • Object
show all
Defined in:
lib/imgproxy/url_adapters.rb,
lib/imgproxy/url_adapters/shrine.rb,
lib/imgproxy/url_adapters/active_storage.rb

Overview

URL adapters config. Allows to use this gem with ActiveStorage, Shrine, etc.

Imgproxy.configure do |config|
  config.url_adapters.add Imgproxy::UrlAdapters::ActiveStorage.new
end

Imgproxy.url_for(user.avatar)

Defined Under Namespace

Classes: ActiveStorage, NotConfigured, NotFound, Shrine

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeUrlAdapters

Returns a new instance of UrlAdapters.



22
23
24
# File 'lib/imgproxy/url_adapters.rb', line 22

def initialize
  @adapters = []
end

Instance Attribute Details

#adaptersArray (readonly)

Returns Currently added adapters.

Returns:

  • (Array)

    Currently added adapters



20
21
22
# File 'lib/imgproxy/url_adapters.rb', line 20

def adapters
  @adapters
end

Instance Method Details

#add(adapter) ⇒ Array

Add adapter to the end of the list

Returns:

  • (Array)


28
29
30
# File 'lib/imgproxy/url_adapters.rb', line 28

def add(adapter)
  adapters << adapter
end

#clear!Array

Remove all adapters from the list

Returns:

  • (Array)


40
41
42
# File 'lib/imgproxy/url_adapters.rb', line 40

def clear!
  @adapters = []
end

#prependArray

Add adapter to the beginning of the list

Returns:

  • (Array)


34
35
36
# File 'lib/imgproxy/url_adapters.rb', line 34

def prepend
  adapters.unshift(adapter)
end

#url_of(image) ⇒ String

Get URL for the provided image

Returns:

  • (String)

Raises:



46
47
48
49
50
51
52
53
54
55
# File 'lib/imgproxy/url_adapters.rb', line 46

def url_of(image)
  return image if image.is_a? String
  return image.to_s if image.is_a? URI

  adapter = adapters.find { |a| a.applicable?(image) }

  return adapter.url(image) if adapter

  raise NotFound, "Can't found URL adapter for #{image.inspect}"
end