Sha256: cda300d51e58e39c0bd69267d952759c6c5a03efdfe053c8cb6e9a96cf672447

Contents?: true

Size: 745 Bytes

Versions: 5

Compression:

Stored size: 745 Bytes

Contents

require "film_snob/version"
require "film_snob/url_to_video"
require "film_snob/exceptions"

class FilmSnob
  attr_reader :url, :video

  def initialize(url, options={})
    @url = url
    @video = UrlToVideo.new(url, options).video
  end

  def watchable?
    !video.nil?
  end

  def method_missing(message)
    if delegated_video_methods.include?(message)
      complain_about_bad_urls!(message)
      video.send(message)
    else
      super
    end
  end

  private
  
    def delegated_video_methods
      [:site, :id, :clean_url, :title, :html]
    end

    def complain_about_bad_urls!(method)
      raise NotSupportedURLError.new("Can not call FilmSnob##{method} because #{url} is not a supported URL.") unless watchable?
    end

end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
film_snob-0.3.4 lib/film_snob.rb
film_snob-0.3.3 lib/film_snob.rb
film_snob-0.3.2 lib/film_snob.rb
film_snob-0.3.1 lib/film_snob.rb
film_snob-0.3.0 lib/film_snob.rb