rbvimeo 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/LICENSE +20 -0
- data/{README.txt → README.textile} +35 -11
- data/Rakefile +78 -16
- data/VERSION.yml +4 -0
- data/lib/rbvimeo/comment.rb +21 -0
- data/lib/{User.rb → rbvimeo/user.rb} +4 -0
- data/lib/rbvimeo/video.rb +138 -0
- data/lib/{rbVimeo.rb → rbvimeo/vimeo.rb} +12 -21
- data/lib/rbvimeo.rb +10 -0
- data/test/rbvimeo_test.rb +49 -0
- data/test/test_helper.rb +11 -0
- data/test/video_test.rb +100 -0
- metadata +31 -43
- data/History.txt +0 -7
- data/Manifest.txt +0 -28
- data/bin/rbVimeo +0 -5
- data/lib/Comment.rb +0 -14
- data/lib/Video.rb +0 -128
- data/spec/Video_spec.rb +0 -82
- data/spec/rbVimeo_spec.rb +0 -38
- data/spec/sample_test_settings.yml +0 -2
- data/spec/spec_helper.rb +0 -17
- data/tasks/ann.rake +0 -81
- data/tasks/annotations.rake +0 -22
- data/tasks/bones.rake +0 -21
- data/tasks/doc.rake +0 -48
- data/tasks/gem.rake +0 -126
- data/tasks/manifest.rake +0 -49
- data/tasks/post_load.rake +0 -39
- data/tasks/rubyforge.rake +0 -57
- data/tasks/setup.rb +0 -268
- data/tasks/spec.rake +0 -55
- data/tasks/svn.rake +0 -48
- /data/lib/{Thumbnail.rb → rbvimeo/thumbnail.rb} +0 -0
- /data/{spec → test}/XML/339189.comments.xml +0 -0
- /data/{spec → test}/XML/339189.xml +0 -0
- /data/{spec → test}/XML/not_found.xml +0 -0
data/LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2009 Matt Pruitt
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
@@ -1,28 +1,52 @@
|
|
1
1
|
rbVimeo
|
2
|
-
|
2
|
+
|
3
|
+
Matt Pruitt
|
4
|
+
|
3
5
|
www.guitsaru.com
|
4
6
|
|
5
|
-
|
7
|
+
h2. Description
|
6
8
|
|
7
9
|
A ruby wrapper for the Vimeo API
|
8
10
|
|
9
|
-
|
11
|
+
h2. Features/Problems
|
10
12
|
|
11
13
|
This does not handle authentication. It only gets public videos from Vimeo.
|
12
14
|
|
13
|
-
|
15
|
+
h2. Usage
|
16
|
+
|
17
|
+
@vimeo = RBVIMEO::Vimeo.new(api_key, api_signature)@
|
18
|
+
|
19
|
+
@video = vimeo.video(video_id)@
|
20
|
+
|
21
|
+
<br />
|
22
|
+
|
23
|
+
See the docs for all Video properties
|
24
|
+
|
25
|
+
@video.title@
|
26
|
+
|
27
|
+
@video.caption@
|
28
|
+
|
29
|
+
@video.comments # Returns an array of comment objects@
|
30
|
+
|
31
|
+
@video.likes@
|
32
|
+
|
33
|
+
@video.plays@
|
34
|
+
|
35
|
+
h2. Documentation
|
36
|
+
|
37
|
+
"Documentation":http://rbvimeo.rubyforge.org
|
38
|
+
|
39
|
+
h2. Installation
|
14
40
|
|
15
|
-
|
16
|
-
vid = vimeo.video(video_id)
|
41
|
+
<pre>sudo gem install guitsaru-rbvimeo -s http://gems.github.com</pre>
|
17
42
|
|
18
|
-
|
43
|
+
h2. Contributing
|
19
44
|
|
20
|
-
|
45
|
+
Fork the project on "github.":http://github.com/guitsaru/rbvimeo
|
21
46
|
|
22
|
-
In order to run the specs,
|
23
|
-
provided) using your api key and api secret.
|
47
|
+
In order to run the specs, edit the test_settings.yml file (a sample is provided) using your api key and api secret.
|
24
48
|
|
25
|
-
|
49
|
+
h2. License
|
26
50
|
|
27
51
|
(The MIT License)
|
28
52
|
|
data/Rakefile
CHANGED
@@ -1,21 +1,83 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
# are where the options are used.
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake'
|
4
3
|
|
5
|
-
|
4
|
+
begin
|
5
|
+
require 'jeweler'
|
6
|
+
Jeweler::Tasks.new do |gem|
|
7
|
+
gem.name = "rbvimeo"
|
8
|
+
gem.summary = %Q{A ruby wrapper for the vimeo api.}
|
9
|
+
gem.email = "guitsaru@gmail.com"
|
10
|
+
gem.homepage = "http://github.com/guitsaru/rbvimeo"
|
11
|
+
gem.authors = ["Matt Pruitt"]
|
12
|
+
gem.rubyforge_project = "rbvimeo"
|
13
|
+
gem.add_dependency('hpricot', '>= 0.6')
|
14
|
+
|
15
|
+
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
16
|
+
end
|
17
|
+
rescue LoadError
|
18
|
+
puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
|
19
|
+
end
|
6
20
|
|
7
|
-
|
8
|
-
|
21
|
+
require 'rake/testtask'
|
22
|
+
Rake::TestTask.new(:test) do |test|
|
23
|
+
test.libs << 'lib' << 'test'
|
24
|
+
test.pattern = 'test/**/*_test.rb'
|
25
|
+
test.verbose = true
|
26
|
+
end
|
9
27
|
|
10
|
-
|
28
|
+
begin
|
29
|
+
require 'rcov/rcovtask'
|
30
|
+
Rcov::RcovTask.new do |test|
|
31
|
+
test.libs << 'test'
|
32
|
+
test.pattern = 'test/**/*_test.rb'
|
33
|
+
test.verbose = true
|
34
|
+
end
|
35
|
+
rescue LoadError
|
36
|
+
task :rcov do
|
37
|
+
abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
|
38
|
+
end
|
39
|
+
end
|
11
40
|
|
12
|
-
PROJ.name = 'rbvimeo'
|
13
|
-
PROJ.authors = 'Matt Pruitt'
|
14
|
-
PROJ.email = 'guitsaru@gmail.com'
|
15
|
-
PROJ.url = 'www.guitsaru.com'
|
16
|
-
PROJ.rubyforge.name = 'rbvimeo'
|
17
|
-
PROJ.version = '0.2.0'
|
18
|
-
PROJ.spec.opts << '--color'
|
19
|
-
PROJ.gem.dependencies << 'hpricot'
|
20
41
|
|
21
|
-
|
42
|
+
task :default => :test
|
43
|
+
|
44
|
+
require 'rake/rdoctask'
|
45
|
+
Rake::RDocTask.new do |rdoc|
|
46
|
+
if File.exist?('VERSION.yml')
|
47
|
+
config = YAML.load(File.read('VERSION.yml'))
|
48
|
+
version = "#{config[:major]}.#{config[:minor]}.#{config[:patch]}"
|
49
|
+
else
|
50
|
+
version = ""
|
51
|
+
end
|
52
|
+
|
53
|
+
rdoc.rdoc_dir = 'rdoc'
|
54
|
+
rdoc.title = "rbvimeo #{version}"
|
55
|
+
rdoc.rdoc_files.include('README*')
|
56
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
57
|
+
end
|
58
|
+
|
59
|
+
begin
|
60
|
+
require 'rake/contrib/sshpublisher'
|
61
|
+
namespace :rubyforge do
|
62
|
+
|
63
|
+
desc "Release gem and RDoc documentation to RubyForge"
|
64
|
+
task :release => ["rubyforge:release:gem", "rubyforge:release:docs"]
|
65
|
+
|
66
|
+
namespace :release do
|
67
|
+
desc "Publish RDoc to RubyForge."
|
68
|
+
task :docs => [:rdoc] do
|
69
|
+
config = YAML.load(
|
70
|
+
File.read(File.expand_path('~/.rubyforge/user-config.yml'))
|
71
|
+
)
|
72
|
+
|
73
|
+
host = "#{config['username']}@rubyforge.org"
|
74
|
+
remote_dir = "/var/www/gforge-projects/rbvimeo/"
|
75
|
+
local_dir = 'rdoc'
|
76
|
+
|
77
|
+
Rake::SshDirPublisher.new(host, remote_dir, local_dir).upload
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
rescue LoadError
|
82
|
+
puts "Rake SshDirPublisher is unavailable or your rubyforge environment is not configured."
|
83
|
+
end
|
data/VERSION.yml
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
module RBVIMEO
|
2
|
+
class Comment
|
3
|
+
attr_accessor :id, :author, :authorname, :datecreate, :permalink, :text, :portraits
|
4
|
+
|
5
|
+
def initialize
|
6
|
+
@portraits = []
|
7
|
+
end
|
8
|
+
|
9
|
+
def date
|
10
|
+
return @datecreate
|
11
|
+
end
|
12
|
+
|
13
|
+
def url
|
14
|
+
return @permalink
|
15
|
+
end
|
16
|
+
|
17
|
+
def id
|
18
|
+
return @id.to_i
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,138 @@
|
|
1
|
+
module RBVIMEO
|
2
|
+
class Video
|
3
|
+
attr_reader :id, :title, :caption, :upload_date, :number_of_likes, :number_of_plays
|
4
|
+
attr_reader :number_of_comments, :width, :height, :owner, :tags, :url
|
5
|
+
attr_reader :thumbs
|
6
|
+
|
7
|
+
|
8
|
+
# Fetches data about a video from the Vimeo site
|
9
|
+
# id is the id of the the Vimeo video
|
10
|
+
# vimeo is an instance of RBVIMEO::Vimeo
|
11
|
+
#
|
12
|
+
# To load a movie with vimeo id 339189:
|
13
|
+
# @vimeo = RBVIMEO::Vimeo.new api_key, api_secret
|
14
|
+
# video = RBVIMEO::Video.new 339189, @vimeo
|
15
|
+
def initialize id, vimeo
|
16
|
+
@thumbs = []
|
17
|
+
@comments = []
|
18
|
+
@id = id
|
19
|
+
@vimeo = vimeo
|
20
|
+
|
21
|
+
url = vimeo.generate_url({"method" => "vimeo.videos.getInfo",
|
22
|
+
"video_id" => id, "api_key" => vimeo.api_key}, "read")
|
23
|
+
|
24
|
+
xml_doc = @vimeo.get_xml(url)
|
25
|
+
|
26
|
+
return @id = -1 if parse_xml(xml_doc).nil?
|
27
|
+
end
|
28
|
+
|
29
|
+
# Returns the code to embed the video
|
30
|
+
def embed width, height
|
31
|
+
string = <<EOF
|
32
|
+
<object type="application/x-shockwave-flash" width=#{width} height=#{height} data="http://www.vimeo.com/moogaloop.swf?clip_id=#{@id}&server=www.vimeo.com&fullscreen=0&show_title=0'&show_byline=0&showportrait=0&color=00ADEF">
|
33
|
+
<param name="quality" value="best" />
|
34
|
+
<param name="allowfullscreen" value="false" />
|
35
|
+
<param name="scale" value="showAll" />
|
36
|
+
<param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=#{@id}&server=www.vimeo.com&fullscreen=0&show_title=0&show_byline=0&showportrait=0&color=00ADEF" /></object>
|
37
|
+
EOF
|
38
|
+
string.gsub("\n", "")
|
39
|
+
end
|
40
|
+
|
41
|
+
def comments
|
42
|
+
get_comments if @comments.empty?
|
43
|
+
return @comments
|
44
|
+
end
|
45
|
+
|
46
|
+
def likes
|
47
|
+
@number_of_likes.to_i
|
48
|
+
end
|
49
|
+
|
50
|
+
def plays
|
51
|
+
@number_of_plays.to_i
|
52
|
+
end
|
53
|
+
|
54
|
+
def num_comments
|
55
|
+
@number_of_comments.to_i
|
56
|
+
end
|
57
|
+
|
58
|
+
def number_of_likes
|
59
|
+
@number_of_likes.to_i
|
60
|
+
end
|
61
|
+
|
62
|
+
def number_of_plays
|
63
|
+
@number_of_plays.to_i
|
64
|
+
end
|
65
|
+
|
66
|
+
def number_of_comments
|
67
|
+
@number_of_comments.to_i
|
68
|
+
end
|
69
|
+
|
70
|
+
def height
|
71
|
+
@height.to_i
|
72
|
+
end
|
73
|
+
|
74
|
+
def width
|
75
|
+
@width.to_i
|
76
|
+
end
|
77
|
+
|
78
|
+
private
|
79
|
+
# Parses data using the xml recieved from the Vimeo REST API
|
80
|
+
# Should not need to be called by anything other than the initialize method
|
81
|
+
def parse_xml xml_doc
|
82
|
+
return nil if xml_doc.at("title").nil?
|
83
|
+
@id = id
|
84
|
+
|
85
|
+
%w[title caption upload_date number_of_likes number_of_plays width height number_of_comments url].each do |attribute|
|
86
|
+
instance_variable_set("@#{attribute}", xml_doc.at(attribute).inner_html)
|
87
|
+
end
|
88
|
+
|
89
|
+
@owner = User.new
|
90
|
+
%w[id username fullname].each do |attribute|
|
91
|
+
@owner.instance_variable_set("@#{attribute}", xml_doc.at("owner").attributes[attribute])
|
92
|
+
end
|
93
|
+
|
94
|
+
(xml_doc/:thumbnail).each do |thumbnail|
|
95
|
+
@thumbs << build_thumbnail(thumbnail)
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
# Fetches the comments for the specified Video
|
100
|
+
# id is the id of the Vimeo video
|
101
|
+
# vimeo is an instance of RBVIMEO::Vimeo
|
102
|
+
# returns an Array of comments
|
103
|
+
#
|
104
|
+
# To load a movie with vimeo id 339189:
|
105
|
+
#
|
106
|
+
# comments = video.comments 339189, @vimeo
|
107
|
+
def get_comments
|
108
|
+
xml_doc = @vimeo.get_xml(@vimeo.generate_url({"method" => "vimeo.videos.comments.getList",
|
109
|
+
"video_id" => @id, "api_key" => @vimeo.api_key}, "read"))
|
110
|
+
|
111
|
+
(xml_doc/:comment).each do |comment|
|
112
|
+
@comments << build_comment(comment)
|
113
|
+
end
|
114
|
+
return self
|
115
|
+
end
|
116
|
+
|
117
|
+
def build_comment(c)
|
118
|
+
comment = Comment.new
|
119
|
+
|
120
|
+
comment.text = c.children.select{|e| e.text?}.join
|
121
|
+
|
122
|
+
%w[id author authorname datecreate permalink].each do |attribute|
|
123
|
+
comment.instance_variable_set("@#{attribute}", c.attributes[attribute])
|
124
|
+
end
|
125
|
+
|
126
|
+
(c/'portraits'/'portrait').each do |portrait|
|
127
|
+
comment.portraits << build_thumbnail(portrait)
|
128
|
+
end
|
129
|
+
|
130
|
+
return comment
|
131
|
+
end
|
132
|
+
|
133
|
+
def build_thumbnail(t)
|
134
|
+
thumbnail = Thumbnail.new(t.inner_html, t.attributes['width'].to_i, t.attributes['height'].to_i)
|
135
|
+
end
|
136
|
+
|
137
|
+
end
|
138
|
+
end
|
@@ -1,25 +1,11 @@
|
|
1
|
-
# Matt Pruitt
|
2
|
-
# Ruby Library for working with Vimeo
|
3
|
-
# Based on the sample PHP Vimeo API
|
4
|
-
|
5
|
-
require 'digest/md5'
|
6
|
-
require 'net/http'
|
7
|
-
require 'rexml/document'
|
8
|
-
|
9
|
-
require 'Video'
|
10
|
-
require 'Thumbnail'
|
11
|
-
require 'User'
|
12
|
-
require 'Comment'
|
13
|
-
|
14
|
-
|
15
1
|
module RBVIMEO
|
16
2
|
class Vimeo
|
17
3
|
attr_accessor :api_key, :api_secret
|
18
|
-
|
4
|
+
|
19
5
|
@@API_REST_URL = "http://www.vimeo.com/api/rest"
|
20
6
|
@@API_AUTH_URL = "http://www.vimeo.com/services/auth/"
|
21
7
|
@@API_UPLOAD_URL = "http://www.vimeo.com/services/upload/"
|
22
|
-
|
8
|
+
|
23
9
|
# api_key and api_secret should both be generated on www.vimeo.com
|
24
10
|
def initialize api_key, api_secret
|
25
11
|
@api_key = api_key
|
@@ -38,7 +24,12 @@ module RBVIMEO
|
|
38
24
|
url += "&api_sig=#{generate_signature(parameters)}"
|
39
25
|
return url
|
40
26
|
end
|
41
|
-
|
27
|
+
|
28
|
+
# Returns the xml from the given url
|
29
|
+
def get_xml url
|
30
|
+
return Hpricot(open(url))
|
31
|
+
end
|
32
|
+
|
42
33
|
# parameters is a hash
|
43
34
|
def generate_signature parameters
|
44
35
|
temp = ''
|
@@ -49,15 +40,15 @@ module RBVIMEO
|
|
49
40
|
signature = @api_secret + temp
|
50
41
|
Digest::MD5.hexdigest(signature)
|
51
42
|
end
|
52
|
-
|
43
|
+
|
53
44
|
# Provides easier access to RBVIMEO::Video
|
54
45
|
# video = @vimeo.video 339189
|
55
|
-
def video id
|
56
|
-
vid = Video.new(id, self
|
46
|
+
def video id
|
47
|
+
vid = Video.new(id, self)
|
57
48
|
return nil if vid.id == -1
|
58
49
|
return vid
|
59
50
|
end
|
60
|
-
|
51
|
+
|
61
52
|
# Provides easier access to RBVIMEO::User
|
62
53
|
# user = @vimeo.user
|
63
54
|
def user
|
data/lib/rbvimeo.rb
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class RbvimeoTest < Test::Unit::TestCase
|
4
|
+
context "Vimeo" do
|
5
|
+
setup do
|
6
|
+
@api_key = '56a9c1c65e700ca10a678a2bcd8e77af'
|
7
|
+
@api_secret = '59c629610'
|
8
|
+
@vimeo = RBVIMEO::Vimeo.new(@api_key, @api_secret)
|
9
|
+
@params = {"method" => "vimeo.videos.getInfo", "video_id" => "339189", "api_key" => @api_key}
|
10
|
+
end
|
11
|
+
|
12
|
+
should "initialize" do
|
13
|
+
assert_not_nil(@api_key)
|
14
|
+
assert_not_nil(@api_secret)
|
15
|
+
end
|
16
|
+
|
17
|
+
should "generate a signature" do
|
18
|
+
assert_equal("09cc6d8b963c73caf647e436b2147810", @vimeo.generate_signature(@params))
|
19
|
+
end
|
20
|
+
|
21
|
+
should "generate a url" do
|
22
|
+
assert_equal("http://www.vimeo.com/api/rest?api_key=#{@api_key}&method=vimeo.videos.getInfo&video_id=339189&api_sig=09cc6d8b963c73caf647e436b2147810", @vimeo.generate_url(@params, "read"))
|
23
|
+
end
|
24
|
+
|
25
|
+
should "generate a video" do
|
26
|
+
test_video_xml_file = File.join(File.dirname(__FILE__), %w[XML/339189.xml])
|
27
|
+
|
28
|
+
video_hpricot = open(test_video_xml_file) {|file| Hpricot(file)}
|
29
|
+
@vimeo.stubs(:get_xml).returns(video_hpricot)
|
30
|
+
|
31
|
+
@vid = @vimeo.video(339189)
|
32
|
+
|
33
|
+
assert_not_nil(@vid)
|
34
|
+
end
|
35
|
+
|
36
|
+
should "generate a user" do
|
37
|
+
assert_not_nil(@vimeo.user)
|
38
|
+
end
|
39
|
+
|
40
|
+
should "return an xml file" do
|
41
|
+
test_video_xml_file = File.join(File.dirname(__FILE__), %w[XML/339189.xml])
|
42
|
+
|
43
|
+
video_hpricot = open(test_video_xml_file) {|file| Hpricot(file)}
|
44
|
+
@vimeo.stubs(:get_xml).returns(video_hpricot)
|
45
|
+
|
46
|
+
assert_not_nil(@vimeo.get_xml(@vimeo.generate_url(@params, "read")).at('video'))
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
data/test/test_helper.rb
ADDED
data/test/video_test.rb
ADDED
@@ -0,0 +1,100 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class VideoTest < Test::Unit::TestCase
|
4
|
+
context "initialization" do
|
5
|
+
setup do
|
6
|
+
@api_key = '56a9c1c65e700ca10a678a2bcd8e77af'
|
7
|
+
@api_secret = '59c629610'
|
8
|
+
@vimeo = RBVIMEO::Vimeo.new(@api_key, @api_secret)
|
9
|
+
@params = {"method" => "vimeo.videos.getInfo", "video_id" => "339189", "api_key" => @api_key}
|
10
|
+
end
|
11
|
+
|
12
|
+
context "a valid video" do
|
13
|
+
setup do
|
14
|
+
test_video_xml_file = File.join(File.dirname(__FILE__), %w[XML/339189.xml])
|
15
|
+
|
16
|
+
video_hpricot = open(test_video_xml_file) {|file| Hpricot(file)}
|
17
|
+
@vimeo.stubs(:get_xml).returns(video_hpricot)
|
18
|
+
|
19
|
+
@vid = @vimeo.video(339189)
|
20
|
+
end
|
21
|
+
|
22
|
+
should "have a title" do
|
23
|
+
assert_equal("Upload Tutorial", @vid.title.chomp)
|
24
|
+
end
|
25
|
+
|
26
|
+
should "have a caption" do
|
27
|
+
assert_equal("This is a tutorial about our new Uploader. Enjoy!", @vid.caption.chomp)
|
28
|
+
end
|
29
|
+
|
30
|
+
should "have an upload date" do
|
31
|
+
assert_equal("2007-10-12 16:30:32", @vid.upload_date)
|
32
|
+
end
|
33
|
+
|
34
|
+
should "have likes" do
|
35
|
+
assert_equal(174, @vid.likes)
|
36
|
+
assert_equal(174, @vid.number_of_likes)
|
37
|
+
end
|
38
|
+
|
39
|
+
should "have plays" do
|
40
|
+
assert_equal(515407, @vid.plays)
|
41
|
+
assert_equal(515407, @vid.number_of_plays)
|
42
|
+
end
|
43
|
+
|
44
|
+
should "have comments" do
|
45
|
+
test_video_xml_file = File.join(File.dirname(__FILE__), %w[XML/339189.comments.xml])
|
46
|
+
|
47
|
+
comment_hpricot = open(test_video_xml_file) {|file| Hpricot(file)}
|
48
|
+
@vimeo.stubs(:get_xml).returns(comment_hpricot)
|
49
|
+
|
50
|
+
assert_equal(34, @vid.num_comments)
|
51
|
+
assert_equal(34, @vid.number_of_comments)
|
52
|
+
assert_equal(265313, @vid.comments[0].id)
|
53
|
+
assert_equal("ctd3", @vid.comments[0].author)
|
54
|
+
assert_equal("CTD3", @vid.comments[0].authorname)
|
55
|
+
assert_equal("2007-10-12 17:47:13", @vid.comments[0].date)
|
56
|
+
assert_equal("http://www.vimeo.com/339189#comment_265313", @vid.comments[0].url)
|
57
|
+
assert_match(/Sure is! Great changes!/, @vid.comments[0].text)
|
58
|
+
assert_equal("http://80.media.vimeo.com/d1/5/35/44/42/portrait-35444268.jpg", @vid.comments[0].portraits[0].url)
|
59
|
+
assert_equal(24, @vid.comments[0].portraits[0].width)
|
60
|
+
assert_equal(24, @vid.comments[0].portraits[0].height)
|
61
|
+
end
|
62
|
+
|
63
|
+
should "have an owner" do
|
64
|
+
assert_equal(152184, @vid.owner.id)
|
65
|
+
assert_equal("staff", @vid.owner.username)
|
66
|
+
assert_equal("Vimeo Staff", @vid.owner.fullname)
|
67
|
+
end
|
68
|
+
|
69
|
+
should "have a url" do
|
70
|
+
assert_equal("http://www.vimeo.com/339189/l:app-230", @vid.url)
|
71
|
+
end
|
72
|
+
|
73
|
+
should "have a thumbnail" do
|
74
|
+
assert_equal("http://40.media.vimeo.com/d1/5/36/63/98/thumbnail-36639824.jpg", @vid.thumbs[0].url)
|
75
|
+
assert_equal(96, @vid.thumbs[0].width)
|
76
|
+
assert_equal(72, @vid.thumbs[0].height)
|
77
|
+
end
|
78
|
+
|
79
|
+
should "have embed code" do
|
80
|
+
assert_not_nil(@vid.embed(240, 480))
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
context "an invalid video" do
|
85
|
+
setup do
|
86
|
+
not_found_xml_file = File.join(File.dirname(__FILE__), %w[XML/not_found.xml])
|
87
|
+
|
88
|
+
video_hpricot = open(not_found_xml_file) {|file| Hpricot(file)}
|
89
|
+
@vimeo.stubs(:get_xml).returns(video_hpricot)
|
90
|
+
|
91
|
+
@vid = @vimeo.video(-34)
|
92
|
+
end
|
93
|
+
|
94
|
+
should "return nil on nonexistant video" do
|
95
|
+
assert_nil(@vid)
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
end
|
100
|
+
end
|