class MovieQuotes

Constants

BASE_URL

testing purposes BASE_URL = “dev.movie-quotes.com:3000/api/v1/quotes”.freeze

Attributes

configuration[RW]
filters[R]

Public Class Methods

configure() { |configuration| ... } click to toggle source
# File lib/movie_quotes.rb, line 18
def self.configure
  self.configuration ||= Configuration.new

  yield(configuration)
end
new() click to toggle source
# File lib/movie_quotes.rb, line 24
def initialize
  @filters = {}
end

Public Instance Methods

by_actor(query) click to toggle source
# File lib/movie_quotes.rb, line 28
def by_actor(query)
  apply_filter "actor", query

  self
end
by_category(query) click to toggle source

“sci-fi” | [“sci-fi”, “action”, “drama”]

# File lib/movie_quotes.rb, line 35
def by_category(query)
  # "OR" behavior by default
  apply_filter_list "categories", query

  self
end
by_character(query) click to toggle source
# File lib/movie_quotes.rb, line 42
def by_character(query)
  apply_filter "character", query

  self
end
by_content(query) click to toggle source
# File lib/movie_quotes.rb, line 48
def by_content(query)
  apply_filter "content", query

  self
end
by_movie(query) click to toggle source
# File lib/movie_quotes.rb, line 54
def by_movie(query)
  apply_filter "movie", query

  self
end
by_multiple(query) click to toggle source
# File lib/movie_quotes.rb, line 60
def by_multiple(query)
  apply_filter "multiple", query

  self
end
by_page(page) click to toggle source
# File lib/movie_quotes.rb, line 66
def by_page(page)
  apply_filter "page", page

  self
end
by_random(count=1) click to toggle source
# File lib/movie_quotes.rb, line 72
def by_random(count=1)
  apply_filter "random", count

  self
end
by_rating(rating) click to toggle source
# File lib/movie_quotes.rb, line 78
def by_rating(rating)
  apply_filter "rating", rating

  self
end
by_year(query) click to toggle source

1999 | [1999, 2005] | [“1999”, “2005”]

# File lib/movie_quotes.rb, line 85
def by_year(query)
  apply_filter_list "years", query

  self
end
results() click to toggle source
# File lib/movie_quotes.rb, line 91
def results
  @results = HTTParty.get(url, headers: headers)
end
url() click to toggle source
# File lib/movie_quotes.rb, line 95
def url
  "#{BASE_URL}?#{get_filters}"
end

Private Instance Methods

api_key() click to toggle source
# File lib/movie_quotes.rb, line 101
def api_key
  @api_key ||= MovieQuotes.configuration.api_key
end
apply_filter(filter_name, value) click to toggle source
# File lib/movie_quotes.rb, line 105
def apply_filter(filter_name, value)
  filters[filter_name] = value
end
apply_filter_list(filter_name, value) click to toggle source
# File lib/movie_quotes.rb, line 109
def apply_filter_list(filter_name, value)
  # categories[]=crime,sci-fi
  filters["#{filter_name}[]"] = [value].flatten.join(",")
end
get_filters() click to toggle source
# File lib/movie_quotes.rb, line 114
def get_filters
  filters.map { |k,v| "#{k}=#{v}" }.join("&")
end
headers() click to toggle source
# File lib/movie_quotes.rb, line 118
def headers
  { "Authorization"=>"Token token=\"#{api_key}\"" }
end