Has Vimeo Video
Validate a Vimeo URL attribute in Active Record, and retrieve access to the video's data through Vimeo API.
Installation
Add to your Gemfile and run the bundle
command to install it.
gem "has_vimeo_video"
Requires Ruby 1.9.2 or later, and Rails 3.0.0 or later.
Usage
Call has_vimeo_video
in an ActiveRecord class and pass the name of the attribute that will contain the URL for the video on Vimeo, e.g. http://vimeo.com/1234567890.
class Post < ActiveRecord::Base
has_vimeo_video :video_url
end
This will automatically validate the format of the URL to match Vimeo's, and will add a vimeo
object to your model, which will contain the following methods:
info
will give you access to a hash with the parsed response from Vimeo APIid
will parse the id of the video from the URL (no API requests here)embed_url
will return a URL ready for embedding your video (no API requests as well)thumbnail
will return the URL for the large thumbnail from Vimeo API (the same asinfo['thumbnail_large']
)
post = Post.create video_url: 'http://www.vimeo.com/32733074'
post.vimeo.info # {"id"=>32733074, "title"=>"Belo Monte, Anúncio de uma Guerra (CATARSE)", "description"=>"Mais do que um filme, queremos que esse documentário seja um ato político da sociedade, uma luta pelo acesso à informação e pelo direito de participar das decisões do país.<br />\n<br />\nEntre em http://catarse.me/pt/projects/459-belo-monte-anuncio-de-uma-guerra, assista o vídeo e apoie essa causa.", "url"=>"http://vimeo.com/32733074", "upload_date"=>"2011-11-27 06:49:45", "mobile_url"=>"http://vimeo.com/m/32733074", "thumbnail_small"=>"http://b.vimeocdn.com/ts/221/819/221819626_100.jpg", "thumbnail_medium"=>"http://b.vimeocdn.com/ts/221/819/221819626_200.jpg", "thumbnail_large"=>"http://b.vimeocdn.com/ts/221/819/221819626_640.jpg", "user_name"=>"André Vilela D'Elia", "user_url"=>"http://vimeo.com/cinedelia", "user_portrait_small"=>"http://b.vimeocdn.com/ps/283/288/2832886_30.jpg", "user_portrait_medium"=>"http://b.vimeocdn.com/ps/283/288/2832886_75.jpg", "user_portrait_large"=>"http://b.vimeocdn.com/ps/283/288/2832886_100.jpg", "user_portrait_huge"=>"http://b.vimeocdn.com/ps/283/288/2832886_300.jpg", "stats_number_of_likes"=>221, "stats_number_of_plays"=>107330, "stats_number_of_comments"=>49, "duration"=>661, "width"=>640, "height"=>360, "tags"=>"belo, monte, anúncio, cinedelia, gota, guerra, catarse, indigenas, xingu, rio, river, raoni, kayapo, vivo, eletro, norte, felicio, pontes, pare, amazonia", "embed_privacy"=>"anywhere"}
post.vimeo.id # 32733074
post.vimeo. # http://player.vimeo.com/video/32733074
post.vimeo.thumbnail # http://b.vimeocdn.com/ts/221/819/221819626_640.jpg
Customizing validation message
You can customize the ActiveRecord validation message by passing the message
option to has_vimeo_video
.
class Post < ActiveRecord::Base
has_vimeo_video :video_url, message: "only Vimeo URLs are allowed"
end
Development
Questions or problems? Please post them on the issue tracker. You can contribute changes by forking the project and submitting a pull request. You can ensure the tests passing by running bundle
and rake
.
This gem is created by Engage and is under the MIT License.