Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Hi! I cleaned up your code for you! #1

Merged
merged 1 commit into from
Mar 8, 2012
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions lib/mwhich/amazon.rb
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -6,20 +6,20 @@ def initialize(options={})
@aws_access_key_id = ENV['AWS_ACCESS_KEY_ID'] @aws_access_key_id = ENV['AWS_ACCESS_KEY_ID']
@aws_secret_access_key = ENV['AWS_SECRET_ACCESS_KEY'] @aws_secret_access_key = ENV['AWS_SECRET_ACCESS_KEY']
end end

def search(title) def search(title)
results = request(title) results = request(title)

titles = [] titles = []
results.css("Item").each do |result| results.css("Item").each do |result|
titles << "#{result.css('ProductGroup').inner_html}: #{result.css('Title').inner_html}" titles << "#{result.css('ProductGroup').inner_html}: #{result.css('Title').inner_html}"
end end

titles titles
end end

protected protected

def request(title) def request(title)
params = { params = {
"Operation" => "ItemSearch", "Operation" => "ItemSearch",
Expand All @@ -32,11 +32,11 @@ def request(title)
sorted_params = params.sort_by{|x,y| x}.map{|x,y| "#{x}=#{CGI::escape(y)}"}.join('&') sorted_params = params.sort_by{|x,y| x}.map{|x,y| "#{x}=#{CGI::escape(y)}"}.join('&')
signature = sign("GET\nwebservices.amazon.com\n/onca/xml\n#{sorted_params}").strip signature = sign("GET\nwebservices.amazon.com\n/onca/xml\n#{sorted_params}").strip
url = "#{@endpoint_url}?#{sorted_params}&Signature=#{CGI::escape(signature)}" url = "#{@endpoint_url}?#{sorted_params}&Signature=#{CGI::escape(signature)}"

response = Net::HTTP.get_response(URI.parse(url)) response = Net::HTTP.get_response(URI.parse(url))
Nokogiri::XML(response.body) Nokogiri::XML(response.body)
end end

def sign(string) def sign(string)
hmac = HMAC::SHA256.new(@aws_secret_access_key) hmac = HMAC::SHA256.new(@aws_secret_access_key)
hmac.update(string) hmac.update(string)
Expand Down
10 changes: 5 additions & 5 deletions lib/mwhich/client.rb
Original file line number Original file line Diff line number Diff line change
@@ -1,6 +1,6 @@
module MWhich module MWhich
class Client class Client

VALID_SERVICES = [:amazon,:hulu,:itunes,:netflix] VALID_SERVICES = [:amazon,:hulu,:itunes,:netflix]
SERVICE_MAP = { SERVICE_MAP = {
:amazon => MWhich::Services::Amazon, :amazon => MWhich::Services::Amazon,
Expand All @@ -9,24 +9,24 @@ class Client
:netflix => MWhich::Services::Netflix :netflix => MWhich::Services::Netflix
} }
IGNORE_MEDIA = [:clips, :trailers] IGNORE_MEDIA = [:clips, :trailers]

attr_accessor :services, :ignore attr_accessor :services, :ignore

# Arguments (all are optional): # Arguments (all are optional):
# - :services - One or more of :amazon, :netflix, :hulu, or :itunes. Default is :all # - :services - One or more of :amazon, :netflix, :hulu, or :itunes. Default is :all
def initialize(options={}) def initialize(options={})
self.services = options[:services] || VALID_SERVICES self.services = options[:services] || VALID_SERVICES
self.ignore = options[:ignore] ? IGNORE_MEDIA & options[:ignore] : IGNORE_MEDIA self.ignore = options[:ignore] ? IGNORE_MEDIA & options[:ignore] : IGNORE_MEDIA
end end

# Search for a movie/tv show by title # Search for a movie/tv show by title
def search(title) def search(title)
results = {} results = {}
self.services.each do |service| self.services.each do |service|
s = SERVICE_MAP[service].new(:ignore => ignore) s = SERVICE_MAP[service].new(:ignore => ignore)
results[service] = s.search(title) results[service] = s.search(title)
end end

results results
end end
end end
Expand Down
12 changes: 6 additions & 6 deletions lib/mwhich/hulu.rb
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@ def initialize(options={})
@ignore_media << 'clip' if options[:ignore].include?:clips @ignore_media << 'clip' if options[:ignore].include?:clips
end end
end end

def search(title) def search(title)
results = request(title) results = request(title)

titles = [] titles = []
results.xpath("//video").each do |result| results.xpath("//video").each do |result|
next if @ignore_media.include?result.css('video-type').inner_html next if @ignore_media.include?result.css('video-type').inner_html
Expand All @@ -22,15 +22,15 @@ def search(title)
end end
titles << "#{result.css('video-type').inner_html}: #{result.css('title').inner_html}#{append}" titles << "#{result.css('video-type').inner_html}: #{result.css('title').inner_html}#{append}"
end end

titles titles
end end

protected protected

def request(title) def request(title)
url = "#{@endpoint_url}/search?dp_identifier=hulu&query=#{URI::escape(title)}&items_per_page=10&page=1" url = "#{@endpoint_url}/search?dp_identifier=hulu&query=#{URI::escape(title)}&items_per_page=10&page=1"

response = Net::HTTP.get_response(URI.parse(url)) response = Net::HTTP.get_response(URI.parse(url))
Nokogiri::XML(response.body) Nokogiri::XML(response.body)
end end
Expand Down
14 changes: 7 additions & 7 deletions lib/mwhich/itunes.rb
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -4,20 +4,20 @@ class ITunes
def initialize(options={}) def initialize(options={})
@endpoint = "http://ax.phobos.apple.com.edgesuite.net/WebObjects/MZStoreServices.woa/wa/wsSearch" @endpoint = "http://ax.phobos.apple.com.edgesuite.net/WebObjects/MZStoreServices.woa/wa/wsSearch"
end end

def search(title) def search(title)
results = request(title) results = request(title)

titles = [] titles = []
results.each do |result| results.each do |result|
titles << "#{result['kind']}: #{result['trackName']} ($#{result['trackPrice']})" titles << "#{result['kind']}: #{result['trackName']} ($#{result['trackPrice']})"
end end

titles titles
end end

protected protected

def request(title) def request(title)
# We'll do searches across both TV and movies and merge the results # We'll do searches across both TV and movies and merge the results
results = [] results = []
Expand All @@ -27,10 +27,10 @@ def request(title)
data = Yajl::Parser.parse(response.body) data = Yajl::Parser.parse(response.body)
results |= data['results'] results |= data['results']
end end

results results
end end

end end
end end
end end
16 changes: 8 additions & 8 deletions lib/mwhich/netflix.rb
Original file line number Original file line Diff line number Diff line change
@@ -1,33 +1,33 @@
module MWhich module MWhich
module Services module Services
class Netflix class Netflix

def initialize(options={}) def initialize(options={})
@endpoint = "http://odata.netflix.com/v1/Catalog/" @endpoint = "http://odata.netflix.com/v1/Catalog/"
@format = "json" @format = "json"
end end

def search(title) def search(title)
results = request(title) results = request(title)

titles = [] titles = []
results['d']['results'].each do |result| results['d']['results'].each do |result|
titles << "#{result['Type']}: #{result['Name']}#{result['Instant']['Available'] ? ' - Watch now!' : ''}" titles << "#{result['Type']}: #{result['Name']}#{result['Instant']['Available'] ? ' - Watch now!' : ''}"
end end

titles titles
end end

protected protected

def request(title) def request(title)
filter = "Name eq '#{title}'" filter = "Name eq '#{title}'"
url = "#{@endpoint}Titles?$filter=#{URI::escape(filter)}&$format=#{@format}" url = "#{@endpoint}Titles?$filter=#{URI::escape(filter)}&$format=#{@format}"

response = Net::HTTP.get_response(URI.parse(url)) response = Net::HTTP.get_response(URI.parse(url))
Yajl::Parser.parse(response.body) Yajl::Parser.parse(response.body)
end end

end end
end end
end end