vast 0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,103 @@
1
+ require 'test_helper'
2
+
3
+ class AdTest < Test::Unit::TestCase
4
+
5
+ def test_should_initialize_from_document_ad_node
6
+ document_with_ad = example_file('document_with_one_inline_ad.xml')
7
+ document = VAST::Document.parse!(document_with_ad)
8
+
9
+ ad_node = document.root.xpath('.//Ad').first
10
+ ad = VAST::Ad.create(ad_node)
11
+ assert ad.kind_of?(VAST::Ad), "Ad should be kind of Ad"
12
+ end
13
+
14
+ def test_should_initialize_inline_ad
15
+ document_with_inline_ad = example_file('document_with_one_inline_ad.xml')
16
+ document = VAST::Document.parse!(document_with_inline_ad)
17
+
18
+ ad_node = document.root.xpath('.//Ad').first
19
+ ad = VAST::Ad.create(ad_node)
20
+ assert ad.kind_of?(VAST::InlineAd), "Ad should be kind of InLineAd"
21
+ end
22
+
23
+ def test_should_initialize_wrapper_ad
24
+ document_with_wrapper_ad = example_file('document_with_one_wrapper_ad.xml')
25
+ document = VAST::Document.parse!(document_with_wrapper_ad)
26
+
27
+ ad_node = document.root.xpath('.//Ad').first
28
+ ad = VAST::Ad.create(ad_node)
29
+ assert ad.kind_of?(VAST::WrapperAd), "Ad should be kind of WrapperAd"
30
+ end
31
+
32
+ def test_should_raise_error_if_no_ad_type_specified
33
+ document_with_ad_missing_type = example_file('invalid_document_with_missing_ad_type.xml')
34
+ document = VAST::Document.parse(document_with_ad_missing_type)
35
+
36
+ ad_node = document.root.xpath('.//Ad').first
37
+ assert_raise VAST::InvalidAdError, "should raise error" do
38
+ ad = VAST::Ad.create(ad_node)
39
+ end
40
+ end
41
+
42
+ def test_ad_should_know_attributes
43
+ document_file = example_file('document_with_one_inline_ad.xml')
44
+ document = VAST::Document.parse!(document_file)
45
+ ad = document.inline_ads.first
46
+
47
+ assert_equal "601364", ad.id
48
+ assert_equal "Acudeo Compatible", ad.ad_system
49
+ assert_equal URI.parse('http://myErrorURL/error'), ad.error_url
50
+ end
51
+
52
+ def test_ad_should_know_linear_creatives
53
+ document_file = example_file('document_with_one_inline_ad.xml')
54
+ document = VAST::Document.parse!(document_file)
55
+ ad = document.inline_ads.first
56
+
57
+ assert_equal 1, ad.linear_creatives.count
58
+ ad.linear_creatives.each do |creative|
59
+ assert creative.kind_of?(VAST::LinearCreative)
60
+ end
61
+ end
62
+
63
+ def test_ad_should_know_non_linear_creatives
64
+ document_file = example_file('document_with_one_inline_ad.xml')
65
+ document = VAST::Document.parse!(document_file)
66
+ ad = document.inline_ads.first
67
+
68
+ assert_equal 1, ad.non_linear_creatives.count
69
+ ad.non_linear_creatives.each do |creative|
70
+ assert creative.kind_of?(VAST::NonLinearCreative)
71
+ end
72
+ end
73
+
74
+ def test_ad_should_know_companion_creatives
75
+ document_file = example_file('document_with_one_inline_ad.xml')
76
+ document = VAST::Document.parse!(document_file)
77
+ ad = document.inline_ads.first
78
+
79
+ assert_equal 2, ad.companion_creatives.count
80
+ ad.companion_creatives.each do |creative|
81
+ assert creative.kind_of?(VAST::CompanionCreative)
82
+ end
83
+ end
84
+
85
+ def test_ad_should_know_its_main_impression
86
+ document_file = example_file('document_with_one_inline_ad.xml')
87
+ document = VAST::Document.parse!(document_file)
88
+ ad = document.inline_ads.first
89
+
90
+ assert ad.impression.kind_of?(URI)
91
+ assert_equal "http://myTrackingURL/impression", ad.impression.to_s
92
+ end
93
+
94
+ def test_ad_should_know_its_impressions
95
+ document_with_two_impressions = example_file('document_with_one_inline_ad.xml')
96
+ document = VAST::Document.parse!(document_with_two_impressions)
97
+ ad = document.inline_ads.first
98
+
99
+ assert_equal 2, ad.impressions.count
100
+ assert_equal "http://myTrackingURL/impression", ad.impressions.first.to_s
101
+ assert_equal "http://myTrackingURL/anotherImpression", ad.impressions.last.to_s
102
+ end
103
+ end
@@ -0,0 +1,35 @@
1
+ require 'test_helper'
2
+
3
+ class CreativeTest < Test::Unit::TestCase
4
+
5
+ def test_should_know_attributes
6
+ document_with_creative = example_file('document_with_one_inline_ad.xml')
7
+ document = VAST::Document.parse!(document_with_creative)
8
+ creative = VAST::Creative.new(document.root.at('Linear'))
9
+
10
+ assert_equal "6012", creative.id
11
+ assert_equal "601364", creative.ad_id
12
+ assert_equal "1", creative.sequence
13
+ assert_equal "params=for&request=gohere", creative.ad_parameters
14
+ end
15
+
16
+ def test_should_know_its_ad
17
+ document_with_creative = example_file('document_with_one_inline_ad.xml')
18
+ document = VAST::Document.parse!(document_with_creative)
19
+ creative = VAST::Creative.new(document.root.at('Linear'))
20
+
21
+ assert creative.ad.kind_of?(VAST::Ad), "Creative should know it's Ad"
22
+ assert_equal creative.source_node.ancestors('Ad').first[:id], creative.ad.id
23
+ end
24
+
25
+ def test_should_know_tracking_urls_for_all_events
26
+ document_with_creative = example_file('document_with_one_inline_ad.xml')
27
+ document = VAST::Document.parse!(document_with_creative)
28
+ creative = document.ads.first.linear_creatives.first
29
+
30
+ assert_equal "http://myTrackingURL/creativeView", creative.tracking_urls[:creative_view].to_s
31
+ assert_equal "http://myTrackingURL/start", creative.tracking_urls[:start].to_s
32
+ ## There are more tracking urls, refer to spec for complete list
33
+ end
34
+
35
+ end
@@ -0,0 +1,72 @@
1
+ require 'test_helper'
2
+
3
+ class DocumentTest < Test::Unit::TestCase
4
+
5
+ def test_should_wrap_nokogiri_xml_document
6
+ document = VAST::Document.new
7
+ assert document.kind_of?(Nokogiri::XML::Document)
8
+ end
9
+
10
+ def test_should_create_valid_document_from_valid_xml_file
11
+ valid_vast_document_file = example_file('document_with_no_ads.xml')
12
+ document = VAST::Document.parse(valid_vast_document_file)
13
+ assert document.valid?
14
+ end
15
+
16
+ def test_should_create_invalid_document_from_invalid_xml_file
17
+ invalid_vast_document_file = example_file('invalid_document.xml')
18
+ document = VAST::Document.parse(invalid_vast_document_file)
19
+ assert !document.valid?
20
+ end
21
+
22
+ def test_should_raise_error_when_bang_parsing_invalid_document
23
+ invalid_vast_document_file = example_file('invalid_document.xml')
24
+ assert_raise VAST::InvalidDocumentError do
25
+ document = VAST::Document.parse!(invalid_vast_document_file)
26
+ end
27
+ end
28
+
29
+ def test_empty_document_should_have_no_ads
30
+ document_with_no_ads = example_file('document_with_no_ads.xml')
31
+ document = VAST::Document.parse!(document_with_no_ads)
32
+ assert_equal [], document.ads
33
+ end
34
+
35
+ def test_document_with_one_ad
36
+ document_with_one_ad = example_file('document_with_one_inline_ad.xml')
37
+ document = VAST::Document.parse!(document_with_one_ad)
38
+
39
+ assert_equal 1, document.ads.count
40
+ assert document.ads.first.kind_of?(VAST::InlineAd)
41
+ end
42
+
43
+ def test_document_with_more_than_one_ads
44
+ document_with_two_ads = example_file('document_with_two_inline_ads.xml')
45
+ document = VAST::Document.parse!(document_with_two_ads)
46
+
47
+ assert_equal 2, document.ads.count
48
+ document.ads.each do |ad|
49
+ assert ad.kind_of?(VAST::Ad)
50
+ end
51
+ end
52
+
53
+ def test_document_should_know_inline_ads
54
+ document_file = example_file('document_with_one_inline_and_one_wrapper_ad.xml')
55
+ document = VAST::Document.parse!(document_file)
56
+
57
+ assert_equal 1, document.inline_ads.count
58
+ document.inline_ads.each do |ad|
59
+ assert ad.kind_of?(VAST::InlineAd)
60
+ end
61
+ end
62
+
63
+ def test_document_should_know_wrapper_ads
64
+ document_file = example_file('document_with_one_inline_and_one_wrapper_ad.xml')
65
+ document = VAST::Document.parse!(document_file)
66
+
67
+ assert_equal 1, document.wrapper_ads.count
68
+ document.wrapper_ads.each do |ad|
69
+ assert ad.kind_of?(VAST::WrapperAd)
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,3 @@
1
+ <!-- Most basic valid VAST document -->
2
+ <VAST version="2.0">
3
+ </VAST>
@@ -0,0 +1,80 @@
1
+ <!-- VAST document with one InLine ad -->
2
+ <VAST version="2.0">
3
+
4
+ <Ad id="601364">
5
+ <InLine>
6
+ <AdSystem>Acudeo Compatible</AdSystem>
7
+ <AdTitle>VAST 2.0 Instream Test 1</AdTitle>
8
+ <Description>VAST 2.0 Instream Test 1</Description>
9
+ <Survey><![CDATA[http://mySurveyURL/survey]]></Survey>
10
+ <Error><![CDATA[http://myErrorURL/error]]></Error>
11
+
12
+ <Impression id="first"><![CDATA[http://myTrackingURL/impression]]></Impression>
13
+ <Impression id="second"><![CDATA[http://myTrackingURL/anotherImpression]]></Impression>
14
+ <Creatives>
15
+ <Creative id="6012" AdID="601364" sequence="1">
16
+ <Linear>
17
+ <Duration>00:00:30</Duration>
18
+ <TrackingEvents>
19
+ <Tracking event="creativeView"><![CDATA[http://myTrackingURL/creativeView]]></Tracking>
20
+
21
+ <Tracking event="start"><![CDATA[http://myTrackingURL/start]]></Tracking>
22
+ <Tracking event="midpoint"><![CDATA[http://myTrackingURL/midpoint]]></Tracking>
23
+ <Tracking event="firstQuartile"><![CDATA[http://myTrackingURL/firstQuartile]]></Tracking>
24
+ <Tracking event="thirdQuartile"><![CDATA[http://myTrackingURL/thirdQuartile]]></Tracking>
25
+ <Tracking event="complete"><![CDATA[http://myTrackingURL/complete]]></Tracking>
26
+ <Tracking event="mute"><![CDATA[http://myTrackingURL/mute]]></Tracking>
27
+ <Tracking event="unmute"><![CDATA[http://myTrackingURL/unmute]]></Tracking>
28
+ <Tracking event="pause"><![CDATA[http://myTrackingURL/pause]]></Tracking>
29
+ <Tracking event="rewind"><![CDATA[http://myTrackingURL/rewind]]></Tracking>
30
+ <Tracking event="resume"><![CDATA[http://myTrackingURL/resume]]></Tracking>
31
+ <Tracking event="fullscreen"><![CDATA[http://myTrackingURL/fullscreen]]></Tracking>
32
+ <Tracking event="expand"><![CDATA[http://myTrackingURL/expand]]></Tracking>
33
+ <Tracking event="collapse"><![CDATA[http://myTrackingURL/collapse]]></Tracking>
34
+ <Tracking event="acceptInvitation"><![CDATA[http://myTrackingURL/acceptInvitation]]></Tracking>
35
+ <Tracking event="close"><![CDATA[http://myTrackingURL/close]]></Tracking>
36
+ </TrackingEvents>
37
+ <AdParameters><![CDATA[params=for&request=gohere]]></AdParameters>
38
+ <VideoClicks>
39
+ <ClickThrough><![CDATA[http://www.tremormedia.com]]></ClickThrough>
40
+ <ClickTracking id="first"><![CDATA[http://myTrackingURL/click1]]></ClickTracking>
41
+ <ClickTracking id="second"><![CDATA[http://myTrackingURL/click2]]></ClickTracking>
42
+ <CustomClick id="customOne"><![CDATA[http://myTrackingURL/custom1]]></CustomClick>
43
+ <CustomClick id="customTwo"><![CDATA[http://myTrackingURL/custom2]]></CustomClick>
44
+ </VideoClicks>
45
+ <MediaFiles>
46
+ <MediaFile id="firstFile" delivery="progressive" type="video/x-flv" bitrate="500" width="400" height="300" scalable="true" maintainAspectRatio="true"><![CDATA[http://cdnp.tremormedia.com/video/acudeo/Carrot_400x300_500kb.flv]]></MediaFile>
47
+ </MediaFiles>
48
+ </Linear>
49
+ </Creative>
50
+ <Creative AdID="601364-Companion">
51
+ <CompanionAds>
52
+ <Companion width="300" height="250">
53
+ <StaticResource creativeType="image/jpeg">http://demo.tremormedia.com/proddev/vast/Blistex1.jpg</StaticResource>
54
+ <TrackingEvents>
55
+ <Tracking event="creativeView">http://myTrackingURL/firstCompanionCreativeView</Tracking>
56
+
57
+ </TrackingEvents>
58
+
59
+ <CompanionClickThrough>http://www.tremormedia.com</CompanionClickThrough>
60
+ </Companion>
61
+ <Companion width="728" height="90">
62
+ <StaticResource creativeType="image/jpeg">http://demo.tremormedia.com/proddev/vast/728x90_banner1.jpg</StaticResource>
63
+ <CompanionClickThrough>http://www.tremormedia.com</CompanionClickThrough>
64
+ </Companion>
65
+
66
+ </CompanionAds>
67
+ </Creative>
68
+ <Creative AdID="601365">
69
+ <NonLinearAds>
70
+ <NonLinear width="300" height="50">
71
+ <StaticResource creativeType="image/jpeg"><![CDATA[http://cdn.liverail.com/adasset/228/330/overlay.jpg]]></StaticResource>
72
+ <NonLinearClickThrough><![CDATA[http://t3.liverail.com/?metric=clickthru&pos=1&pid=1331&coid=135&nid=0&cid=330&kid=228&vid=&amid=&cc=default&pp=&url=&cb=9185&x=&y=&xy=&redirect=http%3A%2F%2Fliverail.com%2F]]></NonLinearClickThrough>
73
+ </NonLinear>
74
+ </NonLinearAds>
75
+ </Creative>
76
+ </Creatives>
77
+ </InLine>
78
+ </Ad>
79
+
80
+ </VAST>
@@ -0,0 +1,89 @@
1
+ <!-- VAST document with one InLine ad and one Wrapper ad-->
2
+ <VAST version="2.0">
3
+ <Ad id="601364">
4
+ <InLine>
5
+ <AdSystem>Acudeo Compatible</AdSystem>
6
+ <AdTitle>VAST 2.0 Instream Test 1</AdTitle>
7
+ <Description>VAST 2.0 Instream Test 1</Description>
8
+ <Error>http://myErrorURL/error</Error>
9
+
10
+ <Impression>http://myTrackingURL/impression</Impression>
11
+ <Creatives>
12
+ <Creative AdID="601364">
13
+ <Linear>
14
+ <Duration>00:00:30</Duration>
15
+ <TrackingEvents>
16
+ <Tracking event="creativeView">http://myTrackingURL/creativeView</Tracking>
17
+
18
+ <Tracking event="start">http://myTrackingURL/start</Tracking>
19
+ <Tracking event="midpoint">http://myTrackingURL/midpoint</Tracking>
20
+ <Tracking event="firstQuartile">http://myTrackingURL/firstQuartile</Tracking>
21
+ <Tracking event="thirdQuartile">http://myTrackingURL/thirdQuartile</Tracking>
22
+ <Tracking event="complete">http://myTrackingURL/complete</Tracking>
23
+ </TrackingEvents>
24
+
25
+ <VideoClicks>
26
+ <ClickThrough>http://www.tremormedia.com</ClickThrough>
27
+ <ClickTracking>http://myTrackingURL/click</ClickTracking>
28
+ </VideoClicks>
29
+ <MediaFiles>
30
+ <MediaFile delivery="progressive" type="video/x-flv" bitrate="500" width="400" height="300" scalable="true" maintainAspectRatio="true">http://cdnp.tremormedia.com/video/acudeo/Carrot_400x300_500kb.flv</MediaFile>
31
+ </MediaFiles>
32
+
33
+ </Linear>
34
+ </Creative>
35
+ <Creative AdID="601364-Companion">
36
+ <CompanionAds>
37
+ <Companion width="300" height="250">
38
+ <StaticResource creativeType="image/jpeg">http://demo.tremormedia.com/proddev/vast/Blistex1.jpg</StaticResource>
39
+ <TrackingEvents>
40
+ <Tracking event="creativeView">http://myTrackingURL/firstCompanionCreativeView</Tracking>
41
+
42
+ </TrackingEvents>
43
+
44
+ <CompanionClickThrough>http://www.tremormedia.com</CompanionClickThrough>
45
+ </Companion>
46
+ <Companion width="728" height="90">
47
+ <StaticResource creativeType="image/jpeg">http://demo.tremormedia.com/proddev/vast/728x90_banner1.jpg</StaticResource>
48
+ <CompanionClickThrough>http://www.tremormedia.com</CompanionClickThrough>
49
+ </Companion>
50
+
51
+ </CompanionAds>
52
+ </Creative>
53
+ </Creatives>
54
+ </InLine>
55
+ </Ad>
56
+ <Ad id="602833">
57
+ <Wrapper>
58
+ <AdSystem>Acudeo Compatible</AdSystem>
59
+ <VASTAdTagURI>http://demo.tremormedia.com/proddev/vast/vast_inline_linear.xml</VASTAdTagURI>
60
+ <Impression>http://myTrackingURL/wrapper/impression</Impression>
61
+ <Creatives>
62
+
63
+ <Creative AdID="602833">
64
+ <Linear>
65
+ <TrackingEvents>
66
+ </TrackingEvents>
67
+ </Linear>
68
+ </Creative>
69
+ <Creative AdID="602833-Companion">
70
+ <CompanionAds>
71
+ <Companion width="300" height="250">
72
+
73
+ <StaticResource creativeType="image/jpeg">http://demo.tremormedia.com/proddev/vast/300x250_banner1.jpg</StaticResource>
74
+ <TrackingEvents>
75
+ <Tracking event="creativeView">http://myTrackingURL/wrapper/firstCompanionCreativeView</Tracking>
76
+ </TrackingEvents>
77
+ <CompanionClickThrough>http://www.tremormedia.com</CompanionClickThrough>
78
+ </Companion>
79
+ <Companion width="728" height="90">
80
+
81
+ <StaticResource creativeType="image/jpeg">http://demo.tremormedia.com/proddev/vast/728x90_banner1.jpg</StaticResource>
82
+ <CompanionClickThrough>http://www.tremormedia.com</CompanionClickThrough>
83
+ </Companion>
84
+ </CompanionAds>
85
+ </Creative>
86
+ </Creatives>
87
+ </Wrapper>
88
+ </Ad>
89
+ </VAST>
@@ -0,0 +1,38 @@
1
+ <!-- VAST document with one Wrapper ad -->
2
+ <?xml version="1.0" encoding="UTF-8"?>
3
+ <VAST version="2.0">
4
+ <Ad id="602833">
5
+ <Wrapper>
6
+ <AdSystem>Acudeo Compatible</AdSystem>
7
+ <VASTAdTagURI>http://demo.tremormedia.com/proddev/vast/vast_inline_linear.xml</VASTAdTagURI>
8
+ <Impression>http://myTrackingURL/wrapper/impression</Impression>
9
+ <Creatives>
10
+
11
+ <Creative AdID="602833">
12
+ <Linear>
13
+ <TrackingEvents>
14
+ </TrackingEvents>
15
+ </Linear>
16
+ </Creative>
17
+ <Creative AdID="602833-Companion">
18
+ <CompanionAds>
19
+ <Companion width="300" height="250">
20
+
21
+ <StaticResource creativeType="image/jpeg">http://demo.tremormedia.com/proddev/vast/300x250_banner1.jpg</StaticResource>
22
+ <TrackingEvents>
23
+ <Tracking event="creativeView">http://myTrackingURL/wrapper/firstCompanionCreativeView</Tracking>
24
+ </TrackingEvents>
25
+ <CompanionClickThrough>http://www.tremormedia.com</CompanionClickThrough>
26
+ </Companion>
27
+ <Companion width="728" height="90">
28
+
29
+ <StaticResource creativeType="image/jpeg">http://demo.tremormedia.com/proddev/vast/728x90_banner1.jpg</StaticResource>
30
+ <CompanionClickThrough>http://www.tremormedia.com</CompanionClickThrough>
31
+ </Companion>
32
+ </CompanionAds>
33
+ </Creative>
34
+ </Creatives>
35
+ </Wrapper>
36
+ </Ad>
37
+
38
+ </VAST>
@@ -0,0 +1,111 @@
1
+ <!-- VAST document with two InLine ads -->
2
+ <VAST version="2.0">
3
+ <Ad id="601364">
4
+ <InLine>
5
+ <AdSystem>Acudeo Compatible</AdSystem>
6
+ <AdTitle>VAST 2.0 Instream Test 1</AdTitle>
7
+ <Description>VAST 2.0 Instream Test 1</Description>
8
+ <Error>http://myErrorURL/error</Error>
9
+
10
+ <Impression>http://myTrackingURL/impression</Impression>
11
+ <Creatives>
12
+ <Creative AdID="601364">
13
+ <Linear>
14
+ <Duration>00:00:30</Duration>
15
+ <TrackingEvents>
16
+ <Tracking event="creativeView">http://myTrackingURL/creativeView</Tracking>
17
+
18
+ <Tracking event="start">http://myTrackingURL/start</Tracking>
19
+ <Tracking event="midpoint">http://myTrackingURL/midpoint</Tracking>
20
+ <Tracking event="firstQuartile">http://myTrackingURL/firstQuartile</Tracking>
21
+ <Tracking event="thirdQuartile">http://myTrackingURL/thirdQuartile</Tracking>
22
+ <Tracking event="complete">http://myTrackingURL/complete</Tracking>
23
+ </TrackingEvents>
24
+
25
+ <VideoClicks>
26
+ <ClickThrough>http://www.tremormedia.com</ClickThrough>
27
+ <ClickTracking>http://myTrackingURL/click</ClickTracking>
28
+ </VideoClicks>
29
+ <MediaFiles>
30
+ <MediaFile delivery="progressive" type="video/x-flv" bitrate="500" width="400" height="300" scalable="true" maintainAspectRatio="true">http://cdnp.tremormedia.com/video/acudeo/Carrot_400x300_500kb.flv</MediaFile>
31
+ </MediaFiles>
32
+
33
+ </Linear>
34
+ </Creative>
35
+ <Creative AdID="601364-Companion">
36
+ <CompanionAds>
37
+ <Companion width="300" height="250">
38
+ <StaticResource creativeType="image/jpeg">http://demo.tremormedia.com/proddev/vast/Blistex1.jpg</StaticResource>
39
+ <TrackingEvents>
40
+ <Tracking event="creativeView">http://myTrackingURL/firstCompanionCreativeView</Tracking>
41
+
42
+ </TrackingEvents>
43
+
44
+ <CompanionClickThrough>http://www.tremormedia.com</CompanionClickThrough>
45
+ </Companion>
46
+ <Companion width="728" height="90">
47
+ <StaticResource creativeType="image/jpeg">http://demo.tremormedia.com/proddev/vast/728x90_banner1.jpg</StaticResource>
48
+ <CompanionClickThrough>http://www.tremormedia.com</CompanionClickThrough>
49
+ </Companion>
50
+
51
+ </CompanionAds>
52
+ </Creative>
53
+ </Creatives>
54
+ </InLine>
55
+ </Ad>
56
+
57
+ <Ad id="601365">
58
+ <InLine>
59
+ <AdSystem>Acudeo Compatible</AdSystem>
60
+ <AdTitle>VAST 2.0 Instream Test 1</AdTitle>
61
+ <Description>VAST 2.0 Instream Test 1</Description>
62
+ <Error>http://myErrorURL/error</Error>
63
+
64
+ <Impression>http://myTrackingURL/impression</Impression>
65
+ <Creatives>
66
+ <Creative AdID="601365">
67
+ <Linear>
68
+ <Duration>00:00:30</Duration>
69
+ <TrackingEvents>
70
+ <Tracking event="creativeView">http://myTrackingURL/creativeView</Tracking>
71
+
72
+ <Tracking event="start">http://myTrackingURL/start</Tracking>
73
+ <Tracking event="midpoint">http://myTrackingURL/midpoint</Tracking>
74
+ <Tracking event="firstQuartile">http://myTrackingURL/firstQuartile</Tracking>
75
+ <Tracking event="thirdQuartile">http://myTrackingURL/thirdQuartile</Tracking>
76
+ <Tracking event="complete">http://myTrackingURL/complete</Tracking>
77
+ </TrackingEvents>
78
+
79
+ <VideoClicks>
80
+ <ClickThrough>http://www.tremormedia.com</ClickThrough>
81
+ <ClickTracking>http://myTrackingURL/click</ClickTracking>
82
+ </VideoClicks>
83
+ <MediaFiles>
84
+ <MediaFile delivery="progressive" type="video/x-flv" bitrate="500" width="400" height="300" scalable="true" maintainAspectRatio="true">http://cdnp.tremormedia.com/video/acudeo/Carrot_400x300_500kb.flv</MediaFile>
85
+ </MediaFiles>
86
+
87
+ </Linear>
88
+ </Creative>
89
+ <Creative AdID="601365-Companion">
90
+ <CompanionAds>
91
+ <Companion width="300" height="250">
92
+ <StaticResource creativeType="image/jpeg">http://demo.tremormedia.com/proddev/vast/Blistex1.jpg</StaticResource>
93
+ <TrackingEvents>
94
+ <Tracking event="creativeView">http://myTrackingURL/firstCompanionCreativeView</Tracking>
95
+
96
+ </TrackingEvents>
97
+
98
+ <CompanionClickThrough>http://www.tremormedia.com</CompanionClickThrough>
99
+ </Companion>
100
+ <Companion width="728" height="90">
101
+ <StaticResource creativeType="image/jpeg">http://demo.tremormedia.com/proddev/vast/728x90_banner1.jpg</StaticResource>
102
+ <CompanionClickThrough>http://www.tremormedia.com</CompanionClickThrough>
103
+ </Companion>
104
+
105
+ </CompanionAds>
106
+ </Creative>
107
+ </Creatives>
108
+ </InLine>
109
+ </Ad>
110
+
111
+ </VAST>