Class: Googol::YoutubeAccount
- Inherits:
-
Object
- Object
- Googol::YoutubeAccount
- Includes:
- Authenticable, Readable
- Defined in:
- lib/googol/youtube_account.rb
Overview
Provides read & write access to a Youtube account (also known as Channel).
Class Method Summary collapse
-
.oauth_scopes ⇒ Object
Set the scopes to grant access to Youtube account.
Instance Method Summary collapse
-
#info ⇒ Hash
Return the profile info of a Youtube account/channel.
-
#perform!(activity, target_kind, target_id) ⇒ Object
Promote a Youtube target resource on this Youtube Channel Note that liking a video does not also subscribe to a channel.
Methods included from Readable
#description, #id, #kind, #thumbnail_url, #title
Methods included from Authenticable
Methods included from Requestable
Methods included from ClientTokens
#client_id, client_id=, #client_secret, client_secret=
Class Method Details
.oauth_scopes ⇒ Object
Set the scopes to grant access to Youtube account
74 75 76 |
# File 'lib/googol/youtube_account.rb', line 74 def self.oauth_scopes %w(https://www.googleapis.com/auth/youtube) end |
Instance Method Details
#info ⇒ Hash
Return the profile info of a Youtube account/channel.
38 39 40 41 42 43 44 45 |
# File 'lib/googol/youtube_account.rb', line 38 def info @info ||= request! method: :get, auth: credentials[:access_token], host: 'https://www.googleapis.com', path: '/youtube/v3/channels?part=id,snippet&mine=true', valid_if: -> resp, body {resp.code == '200' && body['items'].any?}, extract: -> body {body['items'].first} end |
#perform!(activity, target_kind, target_id) ⇒ Object
Promote a Youtube target resource on this Youtube Channel Note that liking a video does not also subscribe to a channel
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/googol/youtube_account.rb', line 49 def perform!(activity, target_kind, target_id) params = {}.tap do |params| params[:method] = :post params[:auth] = credentials[:access_token] params[:host] = 'https://www.googleapis.com' case [activity.to_sym, target_kind.to_sym] when [:like, :video] params[:path] = "/youtube/v3/videos/rate?rating=like&id=#{target_id}" params[:valid_if] = -> response, body {response.code == '204'} when [:subscribe_to, :channel] params[:json] = true params[:path] = '/youtube/v3/subscriptions?part=snippet' params[:body] = {snippet: {resourceId: {channelId: target_id}}} params[:valid_if] = -> response, body {response.code == '200'} else raise RequestError, "#{activity} invalid for #{target_kind} #{target_id}" end end request! params end |