class ImgurDirect

Constants

ALBUM_URL_PATTERN
DIRECT_PATTERN
HASHES_PATTERN
IMAGE_PATTERN
VERSION

Attributes

url[R]

Public Class Methods

new(url) click to toggle source
# File lib/imgur_direct.rb, line 7
def initialize(url)
  @url = url.to_s.strip
end

Public Instance Methods

resolvable?() click to toggle source
# File lib/imgur_direct.rb, line 24
def resolvable?
  pattern = /http(s)?:\/\/((m\.)|((www)\.)|((i)\.))?imgur.com\/(a\/)?[a-zA-Z0-9&]+((\.jpg)|(\.gif)|(\.png))?/i
  pattern =~ url
end
urls(fall_back_to_original = true) click to toggle source
# File lib/imgur_direct.rb, line 11
def urls(fall_back_to_original = true)
  if !resolvable?
    return fall_back_to_original ? [url] : []
  end

  strategy, image_id = strategy_and_id
  if strategy == 'direct_link'
    [url]
  else
    Api.new(strategy).urls(image_id)
  end
end

Private Instance Methods

strategy() click to toggle source
# File lib/imgur_direct.rb, line 58
def strategy
  strategy, _ = strategy_and_id
  strategy
end
strategy_and_id() click to toggle source
# File lib/imgur_direct.rb, line 37
def strategy_and_id
  @_strategy_and_id ||= begin

    case url
    when DIRECT_PATTERN
      return 'direct_link', $3
    when ALBUM_URL_PATTERN
      return 'album', $1
    when GALLERY_URL_PATTERN
      return 'gallery', $1
    when IMAGE_PATTERN
      return 'image', $3
    when HASHES_PATTERN
      return 'image', $1
    else
      raise "Unknown imgur url pattern"
    end

  end
end