Class: ActivePublicResources::Drivers::Youtube
- Defined in:
- lib/active_public_resources/drivers/youtube.rb
Constant Summary collapse
- DRIVER_NAME =
"youtube"
- API_KEY =
ENV['YOUTUBE_API_KEY']
Instance Method Summary collapse
-
#initialize(config_options = {}) ⇒ Youtube
constructor
A new instance of Youtube.
- #perform_request(request_criteria) ⇒ Object
Constructor Details
#initialize(config_options = {}) ⇒ Youtube
Returns a new instance of Youtube.
11 12 13 14 15 16 |
# File 'lib/active_public_resources/drivers/youtube.rb', line 11 def initialize(={}) @default_request_criteria = {} if [:default_request_criteria] @default_request_criteria = [:default_request_criteria] end end |
Instance Method Details
#perform_request(request_criteria) ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/active_public_resources/drivers/youtube.rb', line 18 def perform_request(request_criteria) request_criteria.set_default_criteria!(@default_request_criteria) unless request_criteria.validate_presence(:query) || request_criteria.validate_presence(:channel) raise ArgumentError, "You must specify at least a query or channel" end uri = URI('https://www.googleapis.com/youtube/v3/search') params = { q: request_criteria.query, part: 'snippet', type: 'video', order: sort(request_criteria.sort), safeSearch: content_filter(request_criteria.content_filter), maxResults: request_criteria.per_page || 25, key: API_KEY } params['pageToken'] = request_criteria.page if request_criteria.page && request_criteria.page != 1 params['userIp'] = request_criteria.remote_ip if request_criteria.remote_ip params['channelId'] = channel_id(request_criteria.channel_name) if channel_id(request_criteria.channel_name) uri.query = URI.encode_www_form(params) res = Net::HTTP.get_response(uri) results = JSON.parse(res.body) return video_details(request_criteria, results) end |