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)

  • :access_token (String)

    Vimeo access token (required)

  • :access_token_secret (String)

    Vimeo access token secret (required)



23
24
25
26
27
28
29
30
31
32
33
# File 'lib/active_public_resources/drivers/vimeo.rb', line 23

def initialize(config_options={})
  validate_options(config_options,
    [:consumer_key, :consumer_secret, :access_token, :access_token_secret])

  @client = ::Vimeo::Advanced::Video.new(
    config_options[:consumer_key],
    config_options[:consumer_secret],
    token: config_options[:access_token],
    secret: config_options[:access_token_secret]
  )
end

Instance Attribute Details

#clientObject (readonly)

Returns the value of attribute client.



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

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)


83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# File 'lib/active_public_resources/drivers/vimeo.rb', line 83

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

  results = @client.search(request_criteria.query, {
    :page           => request_criteria.page || 1,
    :per_page       => request_criteria.per_page || 25,
    :full_response  => 1,
    :sort           => request_criteria.sort || "relevant",
    :user_id        => nil,
    :content_filter => request_criteria.content_filter || 'safe'
  })

  return parse_results(request_criteria, results)
end