Class: ActivePublicResources::Drivers::Vimeo

Inherits:
Driver
  • Object
show all
Defined in:
lib/active_public_resources/drivers/vimeo.rb

Constant Summary collapse

DRIVER_NAME =
"vimeo"
DEFAULT_CRITERIA =
{
  :page           => 1,
  :per_page       => 25,
  :sort           => 'relevant',
  :content_filter => 'safe'
}

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config_options = {}) ⇒ Vimeo

Constructor

Parameters:

  • config_options (Hash) (defaults to: {})

    the options which the vimeo gem requires

Options Hash (config_options):

  • :consumer_key (String)

    Vimeo consumer key (required)

  • :consumer_secret (String)

    Vimeo consumer secret (required)



22
23
24
25
26
27
28
29
# File 'lib/active_public_resources/drivers/vimeo.rb', line 22

def initialize(config_options={})
  validate_options(config_options, [:consumer_key, :consumer_secret])
  @client = ActivePublicResources::OAuth::Vimeo.new(
    config_options[:consumer_key],
    config_options[:consumer_secret]
  )
  @access_token = @client.get_access_token
end

Instance Attribute Details

#clientObject (readonly)

Returns the value of attribute client.



7
8
9
# File 'lib/active_public_resources/drivers/vimeo.rb', line 7

def client
  @client
end

Instance Method Details

#perform_request(request_criteria) ⇒ JSON

Perform search request to Vimeo with search criteria

Examples:

Request

driver = ActivePublicResources::Drivers::Vimeo.new({ .. config options .. })
results = driver.perform_request({ query: 'education' })

Returns

{
  'items': [
    {
      'kind'          : 'video',
      'id'            : '1',
      'title'         : '',
      'description'   : '',
      'thumbnail_url' : '',
      'url'           : '',
      'duration'      : 150,
      'num_views'     : 13,
      'num_likes'     : 1,
      'num_comments'  : 2,
      'created_date'  : '',
      'username'      : '',
      'embed_html'    : '',
      'width'         : 640,
      'height'        : 360
    },
    ...
  ],
  'meta': {
    'nextCriteria': {
      'query'          : 'education',
      'page'           : 2
      'per_page'       : 25
      'sort'           : 'relevant'
      'content_filter' : 'safe'
    }
  }
}

Parameters:

  • criteria (Hash)

    the criteria used to perform the search

Returns:

  • (JSON)

    the normalized response object

Raises:

  • (StandardError)


79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# File 'lib/active_public_resources/drivers/vimeo.rb', line 79

def perform_request(request_criteria)
  request_criteria.validate_presence!([:query])
  raise StandardError.new("driver has not been initialized properly") unless @client

  results = HTTParty.get('https://api.vimeo.com/videos',
    query: {
      query: request_criteria.query,
      page: request_criteria.page || 1,
      per_page: request_criteria.per_page || 25,
      sort: 'relevant',
      filter: 'content_rating',
      filter_content_rating: 'safe'
    },
    headers: { "Authorization" => "Bearer #{@access_token}" }
  )

  return parse_results(request_criteria, JSON.parse(results)) unless results.code == 401
  if !@client.verify_token?(@access_token)
    @access_token = @client.get_access_token
    perform_request(request_criteria) if !@access_token.blank?
  end
end