class ActivePublicResources::Drivers::Schooltube
Constants
- DRIVER_NAME
Public Instance Methods
perform_request(request_criteria)
click to toggle source
# File lib/active_public_resources/drivers/schooltube.rb, line 9 def perform_request(request_criteria) request_criteria.validate_presence!([:query]) uri = URI('http://www.schooltube.com/api/v1/video/search/') params = { 'term' => request_criteria.query, 'orderby' => normalize_request_criteria(request_criteria, 'sort') || '-view_count', 'offset' => offset(request_criteria.page, request_criteria.per_page), 'limit' => request_criteria.per_page || 25 } uri.query = URI.encode_www_form(params) res = Net::HTTP.get_response(uri) results = JSON.parse(res.body) return parse_results(request_criteria, results) end
Private Instance Methods
next_criteria(request_criteria, results)
click to toggle source
# File lib/active_public_resources/drivers/schooltube.rb, line 56 def next_criteria(request_criteria, results) if results['meta']['has_next'] return RequestCriteria.new({ :query => request_criteria.query, :page => (request_criteria.page || 1) + 1, :per_page => results['meta']['limit'].to_i }) end end
normalize_request_criteria(request_criteria, field_name)
click to toggle source
# File lib/active_public_resources/drivers/schooltube.rb, line 33 def normalize_request_criteria(request_criteria, field_name) case field_name when 'sort' case request_criteria.instance_variable_get("@#{field_name}") when 'views' return '-view_count' else return '-view_count' end else request_criteria.instance_variable_get("@#{field_name}") end end
offset(page, per_page)
click to toggle source
# File lib/active_public_resources/drivers/schooltube.rb, line 27 def offset(page, per_page) p = page || 1 pp = per_page || 25 p * pp - pp end
parse_results(request_criteria, results)
click to toggle source
# File lib/active_public_resources/drivers/schooltube.rb, line 47 def parse_results(request_criteria, results) @driver_response = DriverResponse.new( :criteria => request_criteria, :next_criteria => next_criteria(request_criteria, results), :total_items => nil, :items => results['objects'].map { |data| parse_video(data) } ) end
parse_video(data)
click to toggle source
# File lib/active_public_resources/drivers/schooltube.rb, line 66 def parse_video(data) video = ActivePublicResources::ResponseTypes::Video.new video.id = data['vkey'] video.title = data['title'] video.description = data['description'] video.thumbnail_url = data['thumbnail_url'] video.url = data['short_url'] video.embed_url = "https://www.schooltube.com/embed/#{data['vkey']}" video.duration = data['duration'] ? data['duration'].to_i : 0 video.num_views = data['view_count'] ? data['view_count'].to_i : 0 video.num_likes = data['thumbs_up'] ? data['thumbs_up'].to_i : 0 video.num_comments = 0 video.created_date = Date.parse(data['create_date']) video.username = data['username'] video.width = 640 video.height = 360 # Return Types video.return_types << APR::ReturnTypes::Url.new( :driver => DRIVER_NAME, :remote_id => video.id, :url => video.url, :text => video.title, :title => video.title ) video.return_types << APR::ReturnTypes::Iframe.new( :driver => DRIVER_NAME, :remote_id => video.id, :url => "https://www.schooltube.com/embed/#{video.id}", :text => video.title, :title => video.title, :width => 640, :height => 360 ) video end