msp-youtube-g 0.4.7 → 0.4.8.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,22 +1,22 @@
1
1
  class YouTubeG
2
2
  module Response
3
3
  class VideoSearch < YouTubeG::Record
4
- # the unique feed identifying url
5
- attr_reader :feed_id
4
+ # *String*:: Unique feed identifying url.
5
+ attr_reader :feed_id
6
6
 
7
- # the number of results per page
7
+ # *Fixnum*:: Number of results per page.
8
8
  attr_reader :max_result_count
9
9
 
10
- # the 1-based offset index into the full result set
10
+ # *Fixnum*:: 1-based offset index into the full result set.
11
11
  attr_reader :offset
12
12
 
13
- # the total number of results available for the original request
13
+ # *Fixnum*:: Total number of results available for the original request.
14
14
  attr_reader :total_result_count
15
15
 
16
- # the date and time at which the feed was last updated
16
+ # *Time*:: Date and time at which the feed was last updated
17
17
  attr_reader :updated_at
18
18
 
19
- # the list of Video records
19
+ # *Array*:: Array of YouTubeG::Model::Video records
20
20
  attr_reader :videos
21
21
  end
22
22
  end
@@ -0,0 +1,66 @@
1
+ <?xml version='1.0' encoding='UTF-8'?>
2
+ <feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/'
3
+ xmlns:gml='http://www.opengis.net/gml' xmlns:georss='http://www.georss.org/georss'
4
+ xmlns:media='http://search.yahoo.com/mrss/' xmlns:yt='http://gdata.youtube.com/schemas/2007'
5
+ xmlns:gd='http://schemas.google.com/g/2005'>
6
+ <id>http://gdata.youtube.com/feeds/api/users/speechboxmatt/uploads</id>
7
+ <updated>2008-06-28T16:34:33.062Z</updated>
8
+ <category scheme='http://schemas.google.com/g/2005#kind' term='http://gdata.youtube.com/schemas/2007#video'/>
9
+ <title type='text'>Videos of speechboxmatt</title>
10
+ <logo>http://www.youtube.com/img/pic_youtubelogo_123x63.gif</logo>
11
+ <link rel='related' type='application/atom+xml' href='http://gdata.youtube.com/feeds/api/users/speechboxmatt'/>
12
+ <link rel='alternate' type='text/html' href='http://www.youtube.com/profile_videos?user=speechboxmatt'/>
13
+ <link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml'
14
+ href='http://gdata.youtube.com/feeds/api/users/speechboxmatt/uploads'/>
15
+ <link rel='self' type='application/atom+xml'
16
+ href='http://gdata.youtube.com/feeds/api/users/speechboxmatt/uploads?start-index=1&amp;max-results=25'/>
17
+ <author>
18
+ <name>speechboxmatt</name>
19
+ <uri>http://gdata.youtube.com/feeds/api/users/speechboxmatt</uri>
20
+ </author>
21
+ <generator version='beta' uri='http://gdata.youtube.com/'>YouTube data API</generator>
22
+ <openSearch:totalResults>1</openSearch:totalResults>
23
+ <openSearch:startIndex>1</openSearch:startIndex>
24
+ <openSearch:itemsPerPage>25</openSearch:itemsPerPage>
25
+ <entry>
26
+ <id>http://gdata.youtube.com/feeds/api/videos/32_mQ0PRT9I</id>
27
+ <published>2008-06-28T09:01:58.000-07:00</published>
28
+ <updated>2008-06-28T09:03:18.000-07:00</updated>
29
+ <category scheme='http://gdata.youtube.com/schemas/2007/categories.cat' term='People' label='People &amp; Blogs'/>
30
+ <category scheme='http://schemas.google.com/g/2005#kind' term='http://gdata.youtube.com/schemas/2007#video'/>
31
+ <category scheme='http://gdata.youtube.com/schemas/2007/keywords.cat' term='test'/>
32
+ <category scheme='http://gdata.youtube.com/schemas/2007/keywords.cat' term='blah'/>
33
+ <category scheme='http://gdata.youtube.com/schemas/2007/keywords.cat' term='cool'/>
34
+ <title type='text'>Speechbox Test</title>
35
+ <content type='text'>Speechbox test Uploaded on 06/28/2008 at 05:01PM</content>
36
+ <link rel='alternate' type='text/html' href='http://www.youtube.com/watch?v=32_mQ0PRT9I'/>
37
+ <link rel='http://gdata.youtube.com/schemas/2007#video.responses' type='application/atom+xml'
38
+ href='http://gdata.youtube.com/feeds/api/videos/32_mQ0PRT9I/responses'/>
39
+ <link rel='http://gdata.youtube.com/schemas/2007#video.related' type='application/atom+xml'
40
+ href='http://gdata.youtube.com/feeds/api/videos/32_mQ0PRT9I/related'/>
41
+ <link rel='self' type='application/atom+xml'
42
+ href='http://gdata.youtube.com/feeds/api/users/speechboxmatt/uploads/32_mQ0PRT9I'/>
43
+ <author>
44
+ <name>speechboxmatt</name>
45
+ <uri>http://gdata.youtube.com/feeds/api/users/speechboxmatt</uri>
46
+ </author>
47
+ <media:group>
48
+ <media:title type='plain'>Speechbox Test</media:title>
49
+ <media:description type='plain'>Speechbox test Uploaded on 06/28/2008 at 05:01PM</media:description>
50
+ <media:keywords>blah, cool, test</media:keywords>
51
+ <yt:duration seconds='15'/>
52
+ <media:category label='People &amp; Blogs' scheme='http://gdata.youtube.com/schemas/2007/categories.cat'>People
53
+ </media:category>
54
+ <media:content url='http://www.youtube.com/v/32_mQ0PRT9I' type='application/x-shockwave-flash' medium='video'
55
+ isDefault='true' expression='full' duration='15' yt:format='5'/>
56
+ <media:player url='http://www.youtube.com/watch?v=32_mQ0PRT9I'/>
57
+ <media:thumbnail url='http://img.youtube.com/vi/32_mQ0PRT9I/2.jpg' height='97' width='130' time='00:00:07.500'/>
58
+ <media:thumbnail url='http://img.youtube.com/vi/32_mQ0PRT9I/1.jpg' height='97' width='130' time='00:00:03.750'/>
59
+ <media:thumbnail url='http://img.youtube.com/vi/32_mQ0PRT9I/3.jpg' height='97' width='130' time='00:00:11.250'/>
60
+ <media:thumbnail url='http://img.youtube.com/vi/32_mQ0PRT9I/0.jpg' height='240' width='320' time='00:00:07.500'/>
61
+ </media:group>
62
+ <gd:comments>
63
+ <gd:feedLink href='http://gdata.youtube.com/feeds/api/videos/32_mQ0PRT9I/comments' countHint='0'/>
64
+ </gd:comments>
65
+ </entry>
66
+ </feed>
@@ -0,0 +1,172 @@
1
+ require 'test/unit'
2
+ require File.dirname(__FILE__) + '/../lib/youtube_g'
3
+
4
+ class TestParser < Test::Unit::TestCase
5
+
6
+ UPLOAD_XML = File.new(File.dirname(__FILE__) +"/upload.xml")
7
+ SEARCH_XML = File.new(File.dirname(__FILE__) +"/search.xml")
8
+
9
+ YT_VALIDATION = "yt:validation"
10
+ REQUIRED = "required"
11
+ TEXT_XPATH = "media:group/media:title/text()"
12
+ DESC_XPATH = "media:group/media:description/text()"
13
+
14
+ def setup
15
+ @ue_parser = YouTubeG::Parser::UploadErrorParser.new(well_formed_errors_xml)
16
+ @ue_parser_result = @ue_parser.parse
17
+
18
+ @vf_parser = YouTubeG::Parser::VideoFeedParser.new(UPLOAD_XML.path)
19
+ @vf_parser_result = @vf_parser.parse
20
+
21
+ @vfs_parser = YouTubeG::Parser::VideosFeedParser.new(SEARCH_XML.path)
22
+ @vfs_parser_result = @vfs_parser.parse
23
+ end
24
+
25
+ def test_feed_parser_error_for_empty_xml
26
+ assert_raise YouTubeG::Parser::FeedParserError do
27
+ parser = YouTubeG::Parser::UploadErrorParser.new("")
28
+ end
29
+ end
30
+
31
+ def test_upload_error_parser
32
+ assert_instance_of(Array, @ue_parser_result)
33
+ assert_equal(2,@ue_parser_result.length)
34
+
35
+ @ue_parser_result.each_with_index do |error, i|
36
+ assert_instance_of(YouTubeG::Model::UploadError, error)
37
+ assert_equal(YT_VALIDATION,error.domain)
38
+ assert_equal(REQUIRED,error.code)
39
+ assert_equal(i == 0 ? TEXT_XPATH : DESC_XPATH,error.location)
40
+ end
41
+ end
42
+
43
+ def test_videos_feed_parser
44
+ assert_instance_of(YouTubeG::Response::VideoSearch, @vfs_parser_result)
45
+ assert_equal("http://gdata.youtube.com/feeds/api/users/speechboxmatt/uploads",@vfs_parser_result.feed_id)
46
+ assert_equal(25,@vfs_parser_result.max_result_count)
47
+ assert_equal(1,@vfs_parser_result.offset)
48
+ assert_equal(1,@vfs_parser_result.total_result_count)
49
+ assert_equal(Time.parse("2008-06-28T16:34:33.062Z"),@vfs_parser_result.updated_at)
50
+ assert_equal(1,@vfs_parser_result.videos.length)
51
+
52
+ @vfs_parser_result.videos.each_with_index do |video, i|
53
+ assert_instance_of(YouTubeG::Model::Video, video)
54
+ # assert_equal(15,video.duration)
55
+ assert_equal(false,video.noembed)
56
+ assert_equal(false,video.racy)
57
+ assert_equal("http://gdata.youtube.com/feeds/api/videos/32_mQ0PRT9I",video.video_id)
58
+ assert_equal(Time.parse("2008-06-28T09:01:58.000-07:00"),video.published_at)
59
+ assert_equal(Time.parse("2008-06-28T09:03:18.000-07:00"),video.updated_at)
60
+
61
+ # Categories
62
+ assert_equal(1,video.categories.length)
63
+ assert_equal("People & Blogs",video.categories[0].label)
64
+ assert_equal("People",video.categories[0].term)
65
+ # Keywords
66
+ assert_equal(3,video.keywords.length)
67
+ assert_equal("test",video.keywords[0])
68
+ assert_equal("blah",video.keywords[1])
69
+ assert_equal("cool",video.keywords[2])
70
+
71
+ assert_equal("Speechbox test Uploaded on 06/28/2008 at 05:01PM",video.description)
72
+ assert_equal("Speechbox Test",video.title)
73
+ assert_equal("Speechbox test Uploaded on 06/28/2008 at 05:01PM",video.html_content)
74
+ assert_equal("speechboxmatt",video.author.name)
75
+ assert_equal("http://gdata.youtube.com/feeds/api/users/speechboxmatt",video.author.uri)
76
+
77
+ # Media Content
78
+ assert_equal(1,video.media_content.length)
79
+ assert_equal(true,video.media_content[0].default)
80
+ assert_equal(15,video.media_content[0].duration)
81
+ assert_equal("application/x-shockwave-flash",video.media_content[0].mime_type)
82
+
83
+ # Thumbs
84
+ assert_equal(4,video.thumbnails.length)
85
+ # first thumb
86
+ assert_equal("http://img.youtube.com/vi/32_mQ0PRT9I/2.jpg",video.thumbnails[0].url)
87
+ assert_equal(97,video.thumbnails[0].height)
88
+ assert_equal(130,video.thumbnails[0].width)
89
+ assert_equal("00:00:07.500",video.thumbnails[0].time)
90
+ # forth thumb
91
+ assert_equal("http://img.youtube.com/vi/32_mQ0PRT9I/0.jpg",video.thumbnails[3].url)
92
+ assert_equal(240,video.thumbnails[3].height)
93
+ assert_equal(320,video.thumbnails[3].width)
94
+ assert_equal("00:00:07.500",video.thumbnails[3].time)
95
+
96
+ assert_equal("http://www.youtube.com/watch?v=32_mQ0PRT9I",video.player_url)
97
+ end
98
+ end
99
+
100
+ def test_video_feed_parser_derives_content_source_as_url
101
+ vf_parser = YouTubeG::Parser::VideoFeedParser.new(UPLOAD_XML.path)
102
+ assert_equal(true,vf_parser.url_based?)
103
+ end
104
+
105
+ def test_video_feed_parser_derives_content_source_as_string
106
+ vf_parser = YouTubeG::Parser::VideoFeedParser.new(UPLOAD_XML.read)
107
+ assert_equal(false,vf_parser.url_based?)
108
+ end
109
+
110
+ def test_video_feed_parser
111
+ video = @vf_parser_result
112
+ assert_instance_of(YouTubeG::Model::Video, video)
113
+
114
+ assert_equal(false,video.noembed)
115
+ assert_equal(false,video.racy)
116
+ assert_equal("http://gdata.youtube.com/feeds/api/videos/7ARaD731I24",video.video_id)
117
+ assert_equal(Time.parse("2008-07-11T05:02:24.501-07:00"),video.published_at)
118
+ assert_equal(Time.parse("2008-07-11T05:02:24.501-07:00"),video.updated_at)
119
+
120
+ # App control - state of the upload
121
+ assert_equal("yes", video.app_control.draft)
122
+ assert_equal("processing", video.app_control.state)
123
+
124
+ # Categories
125
+ assert_equal(1,video.categories.length)
126
+ assert_equal("People & Blogs",video.categories[0].label)
127
+ assert_equal("People",video.categories[0].term)
128
+ # Keywords
129
+ assert_equal(3,video.keywords.length)
130
+ assert_equal("test",video.keywords[0])
131
+ assert_equal("blah",video.keywords[1])
132
+ assert_equal("cool",video.keywords[2])
133
+
134
+ assert_equal("Speechbox test Uploaded on 07/11/2008 at 01:02PM",video.description)
135
+ assert_equal("Speechbox Test 07/11/2008 at 01:02PM",video.title)
136
+ assert_equal("Speechbox test Uploaded on 07/11/2008 at 01:02PM",video.html_content)
137
+ assert_equal("speechboxmatt",video.author.name)
138
+ assert_equal("http://gdata.youtube.com/feeds/api/users/speechboxmatt",video.author.uri)
139
+
140
+ # Media Content
141
+ assert_equal(1,video.media_content.length)
142
+ assert_equal(true,video.media_content[0].default)
143
+ assert_equal("application/x-shockwave-flash",video.media_content[0].mime_type)
144
+ end
145
+
146
+ def well_formed_errors_xml
147
+ errors_xml = ''
148
+ errors_xml << "<?xml version='1.0' encoding='UTF-8'?>"
149
+ errors_xml << "<errors>"
150
+ errors_xml << " <error>"
151
+ errors_xml << " <domain>#{YT_VALIDATION}</domain>"
152
+ errors_xml << " <code>#{REQUIRED}</code>"
153
+ errors_xml << " <location type='xpath'>#{TEXT_XPATH}</location>"
154
+ errors_xml << " </error>"
155
+ errors_xml << " <error>"
156
+ errors_xml << " <domain>#{YT_VALIDATION}</domain>"
157
+ errors_xml << " <code>#{REQUIRED}</code>"
158
+ errors_xml << " <location type='xpath'>#{DESC_XPATH}</location>"
159
+ errors_xml << " </error>"
160
+ errors_xml << "</errors>"
161
+ end
162
+
163
+ def malformed_errors_xml
164
+ errors_xml = ''
165
+ errors_xml << "<errors>"
166
+ errors_xml << " <error>"
167
+ errors_xml << " <domain>yt:validation</domain>"
168
+ errors_xml << " <code>required</code>"
169
+ errors_xml << " <location type='xpath'>media:group/media:title/text()</location>"
170
+ errors_xml << "</errors>"
171
+ end
172
+ end
@@ -0,0 +1,79 @@
1
+ require 'test/unit'
2
+ require File.dirname(__FILE__) + '/../lib/youtube_g'
3
+
4
+ class TestClient < Test::Unit::TestCase
5
+
6
+ def setup
7
+ @uploader = YouTubeG::Upload::VideoUpload.new("user","pswd","dev_key")
8
+ @uploader.auth_token = "auth_token_for_testing"
9
+ @response = nil
10
+ end
11
+
12
+ def test_logger_still_active_without_rails_default
13
+ if Object.const_defined?(@uploader.get_rails_default_logger_name)
14
+ assert_not_nil "Expected a #{@uploader.get_rails_default_logger_name}", @uploader.logger
15
+ else
16
+ assert_not_nil "Expected a Logger.new", @uploader.logger
17
+ end
18
+ end
19
+
20
+ def test_passing_auth_token_in_constructor
21
+ upload = YouTubeG::Upload::VideoUpload.new("user","pswd","dev_key")
22
+ assert_nil upload.auth_token
23
+
24
+ upload = YouTubeG::Upload::VideoUpload.new("user","pswd","dev_key","client_id", :test_token)
25
+ assert_equal :test_token, upload.auth_token
26
+ end
27
+
28
+ def test_authentication_error_raised_for_403
29
+ Net::HTTP.module_eval do
30
+ def post(post,data,header)
31
+ response = Net::HTTPForbidden.new("403","403","403")
32
+ end
33
+ end
34
+
35
+ assert_raise YouTubeG::Upload::AuthenticationError do
36
+ @response = @uploader.upload("a_file")
37
+ end
38
+ end
39
+
40
+ def test_upload_error_raised_for_400
41
+ Net::HTTP.module_eval do
42
+ def post(post,data,header)
43
+ response = YTErrors.new("400","400","400")
44
+ end
45
+ end
46
+
47
+ assert_raise YouTubeG::Upload::UploadError do
48
+ response = @uploader.upload("a_file")
49
+ end
50
+ end
51
+
52
+ # stubs
53
+ class Net::HTTPForbidden < Net::HTTPClientError # 403
54
+ def body
55
+ return "ERROR=redefined_body_for_testing_only"
56
+ end
57
+ end
58
+
59
+ class YTErrors < Net::HTTPClientError
60
+ def body
61
+ errors_xml = ''
62
+ errors_xml << "<?xml version='1.0' encoding='UTF-8'?>"
63
+ errors_xml << "<errors>"
64
+ errors_xml << " <error>"
65
+ errors_xml << " <domain>yt:validation</domain>"
66
+ errors_xml << " <code>required</code>"
67
+ errors_xml << " <location type='xpath'>media:group/media:title/text()</location>"
68
+ errors_xml << " </error>"
69
+ errors_xml << " <error>"
70
+ errors_xml << " <domain>yt:validation</domain>"
71
+ errors_xml << " <code>required</code>"
72
+ errors_xml << " <location type='xpath'>media:group/media:description/text()</location>"
73
+ errors_xml << " </error>"
74
+ errors_xml << "</errors>"
75
+ end
76
+ end
77
+
78
+
79
+ end
@@ -0,0 +1,51 @@
1
+ <?xml version='1.0' encoding='UTF-8'?>
2
+ <entry xmlns='http://www.w3.org/2005/Atom' xmlns:gml='http://www.opengis.net/gml'
3
+ xmlns:georss='http://www.georss.org/georss' xmlns:media='http://search.yahoo.com/mrss/'
4
+ xmlns:batch='http://schemas.google.com/gdata/batch' xmlns:yt='http://gdata.youtube.com/schemas/2007'
5
+ xmlns:gd='http://schemas.google.com/g/2005'>
6
+ <id>http://gdata.youtube.com/feeds/api/videos/7ARaD731I24</id>
7
+ <published>2008-07-11T05:02:24.501-07:00</published>
8
+ <updated>2008-07-11T05:02:24.501-07:00</updated>
9
+ <app:control xmlns:app='http://purl.org/atom/app#'>
10
+ <app:draft>yes</app:draft>
11
+ <yt:state name='processing'/>
12
+ </app:control>
13
+ <category scheme='http://gdata.youtube.com/schemas/2007/categories.cat' term='People' label='People &amp; Blogs'/>
14
+ <category scheme='http://schemas.google.com/g/2005#kind' term='http://gdata.youtube.com/schemas/2007#video'/>
15
+ <category scheme='http://gdata.youtube.com/schemas/2007/keywords.cat' term='test'/>
16
+ <category scheme='http://gdata.youtube.com/schemas/2007/keywords.cat' term='blah'/>
17
+ <category scheme='http://gdata.youtube.com/schemas/2007/keywords.cat' term='cool'/>
18
+ <title type='text'>Speechbox Test 07/11/2008 at 01:02PM</title>
19
+ <content type='text'>Speechbox test Uploaded on 07/11/2008 at 01:02PM</content>
20
+ <link rel='alternate' type='text/html' href='http://www.youtube.com/my_videos_edit?ns=1&amp;video_id=7ARaD731I24'/>
21
+ <link rel='http://gdata.youtube.com/schemas/2007#video.responses' type='application/atom+xml'
22
+ href='http://gdata.youtube.com/feeds/api/videos/7ARaD731I24/responses?client=ytapi-Speechbox-SpeechboxBackend-tvjvg8lf-0'/>
23
+ <link rel='http://gdata.youtube.com/schemas/2007#video.ratings' type='application/atom+xml'
24
+ href='http://gdata.youtube.com/feeds/api/videos/7ARaD731I24/ratings?client=ytapi-Speechbox-SpeechboxBackend-tvjvg8lf-0'/>
25
+ <link rel='http://gdata.youtube.com/schemas/2007#video.complaints' type='application/atom+xml'
26
+ href='http://gdata.youtube.com/feeds/api/videos/7ARaD731I24/complaints?client=ytapi-Speechbox-SpeechboxBackend-tvjvg8lf-0'/>
27
+ <link rel='http://gdata.youtube.com/schemas/2007#video.related' type='application/atom+xml'
28
+ href='http://gdata.youtube.com/feeds/api/videos/7ARaD731I24/related?client=ytapi-Speechbox-SpeechboxBackend-tvjvg8lf-0'/>
29
+ <link rel='self' type='application/atom+xml'
30
+ href='http://gdata.youtube.com/feeds/api/users/speechboxmatt/uploads/7ARaD731I24?client=ytapi-Speechbox-SpeechboxBackend-tvjvg8lf-0'/>
31
+ <link rel='edit' type='application/atom+xml'
32
+ href='http://gdata.youtube.com/feeds/api/users/speechboxmatt/uploads/7ARaD731I24?client=ytapi-Speechbox-SpeechboxBackend-tvjvg8lf-0'/>
33
+ <author>
34
+ <name>speechboxmatt</name>
35
+ <uri>http://gdata.youtube.com/feeds/api/users/speechboxmatt</uri>
36
+ </author>
37
+ <media:group>
38
+ <media:title type='plain'>Speechbox Test 07/11/2008 at 01:02PM</media:title>
39
+ <media:description type='plain'>Speechbox test Uploaded on 07/11/2008 at 01:02PM</media:description>
40
+ <media:keywords>blah, cool, test</media:keywords>
41
+ <media:category label='People &amp; Blogs' scheme='http://gdata.youtube.com/schemas/2007/categories.cat'>People
42
+ </media:category>
43
+ <media:content url='http://www.youtube.com/v/7ARaD731I24' type='application/x-shockwave-flash' medium='video'
44
+ isDefault='true' expression='full' yt:format='5'/>
45
+ </media:group>
46
+ <gd:comments>
47
+ <gd:feedLink
48
+ href='http://gdata.youtube.com/feeds/api/videos/7ARaD731I24/comments?client=ytapi-Speechbox-SpeechboxBackend-tvjvg8lf-0'
49
+ countHint='0'/>
50
+ </gd:comments>
51
+ </entry>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: msp-youtube-g
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.7
4
+ version: 0.4.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shane Vitarana
@@ -13,7 +13,7 @@ autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
15
 
16
- date: 2008-06-08 00:00:00 -07:00
16
+ date: 2008-07-25 00:00:00 -07:00
17
17
  default_executable:
18
18
  dependencies: []
19
19
 
@@ -45,14 +45,22 @@ files:
45
45
  - lib/youtube_g/model/thumbnail.rb
46
46
  - lib/youtube_g/model/user.rb
47
47
  - lib/youtube_g/model/video.rb
48
+ - lib/youtube_g/model/upload_error.rb
48
49
  - lib/youtube_g/parser.rb
49
50
  - lib/youtube_g/record.rb
51
+ - lib/youtube_g/request/base_search.rb
52
+ - lib/youtube_g/request/standard_search.rb
53
+ - lib/youtube_g/request/user_search.rb
50
54
  - lib/youtube_g/request/video_search.rb
51
55
  - lib/youtube_g/request/video_upload.rb
52
56
  - lib/youtube_g/response/video_search.rb
53
- - test/test_client.rb
54
- - test/test_video.rb
55
- - test/test_video_search.rb
57
+ - integration-test/test_client.rb
58
+ - integration-test/test_video.rb
59
+ - integration-test/test_video_search.rb
60
+ - test/test_parser.rb
61
+ - test/test_upload.rb
62
+ - test/search.xml
63
+ - test/upload.xml
56
64
  has_rdoc: true
57
65
  homepage: http://youtube-g.rubyforge.org/
58
66
  post_install_message:
@@ -81,6 +89,5 @@ signing_key:
81
89
  specification_version: 2
82
90
  summary: An object-oriented Ruby wrapper for the YouTube GData API
83
91
  test_files:
84
- - test/test_client.rb
85
- - test/test_video.rb
86
- - test/test_video_search.rb
92
+ - test/test_parser.rb
93
+ - test/test_upload.rb