poms 0.0.9 → 0.0.10

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.
Files changed (33) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +19 -2
  3. data/lib/poms.rb +22 -2
  4. data/lib/poms/builderless/broadcast.rb +36 -0
  5. data/lib/poms/builderless/clip.rb +36 -0
  6. data/lib/poms/connect.rb +13 -0
  7. data/lib/poms/fields.rb +22 -0
  8. data/lib/poms/version.rb +1 -1
  9. data/lib/poms/views.rb +24 -0
  10. data/poms.gemspec +2 -0
  11. data/spec/fixtures/vcr_cassettes/poms/builderless/clip/has_a_position.yml +43 -0
  12. data/spec/fixtures/vcr_cassettes/poms/builderless/clip/has_a_title.yml +43 -0
  13. data/spec/fixtures/vcr_cassettes/poms/builderless/clip/has_a_video_url.yml +43 -0
  14. data/spec/fixtures/vcr_cassettes/poms/builderless/clip/has_an_image_id.yml +43 -0
  15. data/spec/fixtures/vcr_cassettes/poms/fetch_broadcasts_fetch_current_broadcast_fetches_the_current_broadcast.yml +60 -0
  16. data/spec/fixtures/vcr_cassettes/poms_fetch/a_broadcast_has_scheduled_events_with_last_with_starts_at.yml +43 -0
  17. data/spec/fixtures/vcr_cassettes/poms_fetch/a_clip_has_a_title.yml +43 -0
  18. data/spec/fixtures/vcr_cassettes/poms_fetch/an_aankeiler_has_images.yml +43 -0
  19. data/spec/fixtures/vcr_cassettes/poms_fetch_current_broadcast/has_a_mid.yml +51 -0
  20. data/spec/fixtures/vcr_cassettes/poms_fetch_current_broadcast/has_a_title.yml +51 -0
  21. data/spec/fixtures/vcr_cassettes/poms_fetch_current_broadcast/has_scheduled_events_with_last_with_starts_at.yml +51 -0
  22. data/spec/fixtures/vcr_cassettes/poms_fetch_current_broadcast_and_key/has_a_broadcast_with_a_mid.yml +51 -0
  23. data/spec/fixtures/vcr_cassettes/poms_fetch_current_broadcast_and_key/has_a_key.yml +51 -0
  24. data/spec/fixtures/vcr_cassettes/poms_fetch_group/has_a_child_with_a_media_type.yml +422 -0
  25. data/spec/fixtures/vcr_cassettes/poms_fetch_group/has_a_child_with_a_title.yml +422 -0
  26. data/spec/fixtures/vcr_cassettes/poms_fetch_playlist_clips/creates_an_array_of_clips.yml +970 -0
  27. data/spec/integration/poms_spec.rb +75 -0
  28. data/spec/lib/poms/{buider_spec.rb → builder_spec.rb} +0 -0
  29. data/spec/lib/poms/builderless/clip_spec.rb +20 -0
  30. data/spec/lib/poms/views_spec.rb +14 -2
  31. data/spec/lib/poms_spec.rb +7 -1
  32. data/spec/spec_helper.rb +23 -0
  33. metadata +72 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fa3133cb42150a77d4b5ba7dafe188cee908d1f8
4
- data.tar.gz: 7fe2a8a6e7533ef3b7c5867ced37c96202e768d4
3
+ metadata.gz: 8d88b5950a24b290c42a49e6ca6a94954acbd34c
4
+ data.tar.gz: 12f31608e9c7511c5bfbf8e454986d605a50d93d
5
5
  SHA512:
6
- metadata.gz: 6e95b7a7dd490080822ebd11a78d002ac9b03c1d6b5497a4777baca53f80fae3e4de2d2861fda84740c3b8c4138c4aafd800b99b34fa45682e56dfc3a1f9f765
7
- data.tar.gz: 940d70a5e91e3eb6d78cc928213b913a44c9f6a1e1f6a111ae5d293b0ab7a654d6a17e8cfe044a51077292f45a19f6cf2f4c65ba2a8b5cf7d8eaaa05cb3e2081
6
+ metadata.gz: 1a829adaf9187590258ea1f8c4ab25f87caa3823fbcc112e7b9764b8680746a3c76e2ee29eb20435aa342559a39a9ab4e8e841495c2cda12cd697f68e5863ccf
7
+ data.tar.gz: ec1957d987c22eca71960f423ce0d23d440766ebab9207fa6c03263383466df78fb61ff8577816c717fd6c062eaeade84cd4be8a18e19585ea0ef57654ca9885
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- poms (0.0.8)
4
+ poms (0.0.10)
5
5
  activesupport
6
6
 
7
7
  GEM
@@ -13,6 +13,9 @@ GEM
13
13
  minitest (~> 5.1)
14
14
  thread_safe (~> 0.3, >= 0.3.4)
15
15
  tzinfo (~> 1.1)
16
+ ast (2.1.0)
17
+ astrolabe (1.3.1)
18
+ parser (~> 2.2)
16
19
  celluloid (0.16.0)
17
20
  timers (~> 4.0.0)
18
21
  coderay (1.1.0)
@@ -44,15 +47,19 @@ GEM
44
47
  rb-inotify (>= 0.9)
45
48
  lumberjack (1.0.9)
46
49
  method_source (0.8.2)
47
- minitest (5.5.1)
50
+ minitest (5.7.0)
48
51
  nenv (0.2.0)
49
52
  notiffany (0.0.6)
50
53
  nenv (~> 0.1)
51
54
  shellany (~> 0.0)
55
+ parser (2.2.3.0)
56
+ ast (>= 1.1, < 3.0)
57
+ powerpack (0.1.1)
52
58
  pry (0.10.1)
53
59
  coderay (~> 1.1.0)
54
60
  method_source (~> 0.8.1)
55
61
  slop (~> 3.4)
62
+ rainbow (2.0.0)
56
63
  rake (10.4.2)
57
64
  rb-fsevent (0.9.4)
58
65
  rb-inotify (0.9.5)
@@ -70,6 +77,13 @@ GEM
70
77
  diff-lcs (>= 1.2.0, < 2.0)
71
78
  rspec-support (~> 3.2.0)
72
79
  rspec-support (3.2.2)
80
+ rubocop (0.34.2)
81
+ astrolabe (~> 1.3)
82
+ parser (>= 2.2.2.5, < 3.0)
83
+ powerpack (~> 0.1)
84
+ rainbow (>= 1.99.1, < 3.0)
85
+ ruby-progressbar (~> 1.4)
86
+ ruby-progressbar (1.7.5)
73
87
  shellany (0.0.1)
74
88
  slop (3.6.0)
75
89
  thor (0.19.1)
@@ -79,6 +93,7 @@ GEM
79
93
  hitimes
80
94
  tzinfo (1.2.2)
81
95
  thread_safe (~> 0.1)
96
+ vcr (2.9.3)
82
97
 
83
98
  PLATFORMS
84
99
  ruby
@@ -92,4 +107,6 @@ DEPENDENCIES
92
107
  poms!
93
108
  rake
94
109
  rspec
110
+ rubocop
95
111
  timecop
112
+ vcr
@@ -9,9 +9,16 @@ require 'poms/broadcast'
9
9
  require 'poms/season'
10
10
  require 'poms/series'
11
11
  require 'poms/views'
12
+ require 'poms/fields'
13
+ require 'poms/builderless/broadcast'
14
+ require 'poms/builderless/clip'
12
15
 
13
16
  module Poms
17
+ extend Poms::Views
18
+ extend Poms::Fields
14
19
  extend self
20
+
21
+
15
22
  URL = 'http://docs.poms.omroep.nl'
16
23
  MEDIA_PATH = '/media/'
17
24
  BROADCASTS_VIEW_PATH = '/media/_design/media/_view/broadcasts-by-broadcaster-and-start'
@@ -27,6 +34,17 @@ module Poms
27
34
  Poms::Builder.process_hash hash
28
35
  end
29
36
 
37
+ def fetch_clip(mid)
38
+ clip_hash = fetch_raw_json(mid)
39
+ Poms::Builderless::Clip.new(clip_hash)
40
+ end
41
+
42
+ def fetch_playlist_clips(mid)
43
+ uri = Poms::Views.by_group(mid)
44
+ playlist_hash = get_bare_json(uri)
45
+ playlist_hash['rows'].map { |hash| Poms::Builderless::Clip.new(hash['doc']) }
46
+ end
47
+
30
48
  def fetch_raw_json(mid)
31
49
  uri = [MEDIA_PATH, mid].join
32
50
  get_json(uri)
@@ -70,8 +88,10 @@ module Poms
70
88
  end
71
89
 
72
90
  def fetch_current_broadcast(channel)
73
- hash = get_json(channel_and_start_uri(channel, Time.now, 1.day.ago, {limit: 1, descending: true}))
74
- get_first_broadcast(hash)
91
+ uri = Poms::Views.broadcasts_by_channel_and_start(channel)
92
+ hash = get_bare_json(uri)
93
+ row = hash['rows'].first
94
+ Builderless::Broadcast.new(row['doc']) if row
75
95
  end
76
96
 
77
97
  def fetch_current_broadcast_and_key(channel)
@@ -0,0 +1,36 @@
1
+ require 'poms/fields'
2
+
3
+ module Poms
4
+ module Builderless
5
+ # A single broadcast fetched from Poms
6
+ class Broadcast
7
+ def initialize(hash)
8
+ @hash = hash
9
+ end
10
+
11
+ def title
12
+ Fields.title(@hash)
13
+ end
14
+
15
+ def mid
16
+ @hash['mid']
17
+ end
18
+
19
+ def schedule_events
20
+ @hash['scheduleEvents'].map do |event|
21
+ Event.new(event)
22
+ end
23
+ end
24
+ end
25
+
26
+ class Event
27
+ def initialize(hash)
28
+ @hash = hash
29
+ end
30
+
31
+ def starts_at
32
+ @hash['start']
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,36 @@
1
+ require 'poms/fields'
2
+
3
+ module Poms
4
+ module Builderless
5
+ # A single broadcast fetched from Poms
6
+ class Clip
7
+ def initialize(hash)
8
+ @hash = hash
9
+ end
10
+
11
+ def title
12
+ Fields.title(@hash)
13
+ end
14
+
15
+ def mid
16
+ @hash['mid']
17
+ end
18
+
19
+ def video_url
20
+ return unless @hash['locations']
21
+ @hash['locations'].first['programUrl']
22
+ end
23
+
24
+ def position
25
+ return unless @hash['memberOf']
26
+ @hash['memberOf'].first['index']
27
+ end
28
+
29
+ def image_id
30
+ images = Fields.images(@hash)
31
+ return unless images
32
+ Fields.image_id(images.first)
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,13 @@
1
+ module Poms
2
+ module Connect
3
+
4
+ def get_json(uri)
5
+ begin
6
+ JSON.parse(open(uri).read)
7
+ rescue OpenURI::HTTPError => e
8
+ raise e unless e.message.match(/404/)
9
+ nil
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,22 @@
1
+ module Poms
2
+ # Gets fields from Poms results
3
+ module Fields
4
+ extend self
5
+
6
+ # Returns the title, main by default
7
+ def title(item, options = { type: 'MAIN' })
8
+ item['titles'].find { |title| title['type'] == options[:type] }['value']
9
+ end
10
+
11
+ # Returns the images from the hash
12
+ def images(item)
13
+ item['images']
14
+ end
15
+
16
+ # Extracts the image id from an image hash
17
+ # Expects a hash of just an image from POMS
18
+ def image_id(image)
19
+ image['imageUri'].split(':').last
20
+ end
21
+ end
22
+ end
@@ -1,3 +1,3 @@
1
1
  module Poms
2
- VERSION = "0.0.9"
2
+ VERSION = '0.0.10'
3
3
  end
@@ -1,8 +1,16 @@
1
+ require 'poms/connect'
2
+
1
3
  # Constructs urls for Poms
2
4
  module Poms
3
5
  module Views
6
+ include Poms::Connect
4
7
  extend self
5
8
 
9
+ def get(mid)
10
+ uri = "#{base_url}/media/#{mid}"
11
+ get_json(uri)
12
+ end
13
+
6
14
  def by_group(mid)
7
15
  args = {
8
16
  key: "\"#{mid}\"",
@@ -12,6 +20,18 @@ module Poms
12
20
  construct_view_url('by-group', args)
13
21
  end
14
22
 
23
+ def broadcasts_by_channel_and_start(channel, start_time = Time.now, end_time = 1.day.ago, limit = 1, descending = true)
24
+ args = {
25
+ startkey: "[\"#{channel}\", #{to_poms_timestamp(start_time)}]",
26
+ endkey: "[\"#{channel}\", #{to_poms_timestamp(end_time)}]",
27
+ limit: limit,
28
+ descending: descending,
29
+ reduce: false,
30
+ include_docs: true
31
+ }
32
+ construct_view_url('broadcasts-by-channel-and-start', args)
33
+ end
34
+
15
35
  private
16
36
 
17
37
  def base_url
@@ -25,5 +45,9 @@ module Poms
25
45
  def construct_view_url(view, args)
26
46
  "#{base_url}#{view_path}#{view}?#{args.to_query}"
27
47
  end
48
+
49
+ def to_poms_timestamp(timestamp)
50
+ timestamp.to_i * 1000
51
+ end
28
52
  end
29
53
  end
@@ -25,6 +25,8 @@ Gem::Specification.new do |spec|
25
25
  spec.add_development_dependency "guard-rspec"
26
26
  spec.add_development_dependency "fakeweb"
27
27
  spec.add_development_dependency "fabrication"
28
+ spec.add_development_dependency "rubocop"
28
29
  spec.add_development_dependency "timecop"
30
+ spec.add_development_dependency "vcr"
29
31
  spec.add_dependency "activesupport"
30
32
  end
@@ -0,0 +1,43 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://docs.poms.omroep.nl/media/WO_NPO_1950962
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ accept-encoding:
11
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
+ accept:
13
+ - "*/*"
14
+ user-agent:
15
+ - Ruby
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ date:
22
+ - Fri, 23 Oct 2015 12:11:04 GMT
23
+ server:
24
+ - CouchDB/1.6.1 (Erlang OTP/R15B01)
25
+ etag:
26
+ - '"4-594e55601c906f36434b21bc9db51c90"'
27
+ content-type:
28
+ - text/plain; charset=utf-8
29
+ content-length:
30
+ - '1569'
31
+ cache-control:
32
+ - must-revalidate
33
+ x-proxyinstancename:
34
+ - poms1b
35
+ set-cookie:
36
+ - balancer://poms3cluster=balancer.poms1s1db; path=/;
37
+ body:
38
+ encoding: UTF-8
39
+ string: |
40
+ {"_id":"WO_NPO_1950962","_rev":"4-594e55601c906f36434b21bc9db51c90","objectType":"program","mid":"WO_NPO_1950962","creationDate":1442490263679,"lastModified":1442491591146,"sortDate":1442490263679,"urn":"urn:vpro:media:program:62589080","embeddable":true,"broadcasters":["NPO"],"titles":[{"value":"Liedje: de wielen van de bus","owner":"BROADCASTER","type":"MAIN"},{"value":"Liedje: de wielen van de bus","owner":"BROADCASTER","type":"SUB"}],"descriptions":[{"value":"Liedje: de wielen van de bus","owner":"BROADCASTER","type":"MAIN"}],"genres":["Jeugd"],"countries":[],"languages":[],"duration":60000,"descendantOf":[{"midRef":"POMS_S_NPO_2015412","urnRef":"urn:vpro:media:group:62589310","type":"PLAYLIST"}],"memberOf":[{"midRef":"POMS_S_NPO_2015412","urnRef":"urn:vpro:media:group:62589310","type":"PLAYLIST","index":1,"highlighted":false,"added":1442490529409}],"locations":[{"programUrl":"http://download.omroep.nl/npo/zappelin/DWVZ_AFL_86_De_wielen_van_de_bus.mp4","avAttributes":{"bitrate":1000000,"avFileFormat":"MP4"},"owner":"BROADCASTER","creationDate":1442490345785,"lastModified":1442490345864,"workflow":"PUBLISHED","urn":"urn:vpro:media:location:62589229"}],"images":[{"title":"Wielen van de bus","description":"wielen van de bus","imageUri":"urn:vpro:image:653515","height":259,"width":559,"owner":"BROADCASTER","type":"PORTRAIT","highlighted":true,"creationDate":1442491591052,"lastModified":1442491591141,"workflow":"PUBLISHED","urn":"urn:vpro:media:image:62590127"}],"publishDate":1442491834775,"workflow":"PUBLISHED","type":"CLIP","avType":"VIDEO"}
41
+ http_version: '1.1'
42
+ recorded_at: Tue, 06 Oct 2015 12:00:00 GMT
43
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,43 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://docs.poms.omroep.nl/media/WO_NPO_1950962
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ accept-encoding:
11
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
+ accept:
13
+ - "*/*"
14
+ user-agent:
15
+ - Ruby
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ date:
22
+ - Fri, 23 Oct 2015 12:11:04 GMT
23
+ server:
24
+ - CouchDB/1.6.1 (Erlang OTP/R15B01)
25
+ etag:
26
+ - '"4-594e55601c906f36434b21bc9db51c90"'
27
+ content-type:
28
+ - text/plain; charset=utf-8
29
+ content-length:
30
+ - '1569'
31
+ cache-control:
32
+ - must-revalidate
33
+ x-proxyinstancename:
34
+ - poms1b
35
+ set-cookie:
36
+ - balancer://poms3cluster=balancer.poms1s1db; path=/;
37
+ body:
38
+ encoding: UTF-8
39
+ string: |
40
+ {"_id":"WO_NPO_1950962","_rev":"4-594e55601c906f36434b21bc9db51c90","objectType":"program","mid":"WO_NPO_1950962","creationDate":1442490263679,"lastModified":1442491591146,"sortDate":1442490263679,"urn":"urn:vpro:media:program:62589080","embeddable":true,"broadcasters":["NPO"],"titles":[{"value":"Liedje: de wielen van de bus","owner":"BROADCASTER","type":"MAIN"},{"value":"Liedje: de wielen van de bus","owner":"BROADCASTER","type":"SUB"}],"descriptions":[{"value":"Liedje: de wielen van de bus","owner":"BROADCASTER","type":"MAIN"}],"genres":["Jeugd"],"countries":[],"languages":[],"duration":60000,"descendantOf":[{"midRef":"POMS_S_NPO_2015412","urnRef":"urn:vpro:media:group:62589310","type":"PLAYLIST"}],"memberOf":[{"midRef":"POMS_S_NPO_2015412","urnRef":"urn:vpro:media:group:62589310","type":"PLAYLIST","index":1,"highlighted":false,"added":1442490529409}],"locations":[{"programUrl":"http://download.omroep.nl/npo/zappelin/DWVZ_AFL_86_De_wielen_van_de_bus.mp4","avAttributes":{"bitrate":1000000,"avFileFormat":"MP4"},"owner":"BROADCASTER","creationDate":1442490345785,"lastModified":1442490345864,"workflow":"PUBLISHED","urn":"urn:vpro:media:location:62589229"}],"images":[{"title":"Wielen van de bus","description":"wielen van de bus","imageUri":"urn:vpro:image:653515","height":259,"width":559,"owner":"BROADCASTER","type":"PORTRAIT","highlighted":true,"creationDate":1442491591052,"lastModified":1442491591141,"workflow":"PUBLISHED","urn":"urn:vpro:media:image:62590127"}],"publishDate":1442491834775,"workflow":"PUBLISHED","type":"CLIP","avType":"VIDEO"}
41
+ http_version: '1.1'
42
+ recorded_at: Tue, 06 Oct 2015 12:00:00 GMT
43
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,43 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://docs.poms.omroep.nl/media/WO_NPO_1950962
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ accept-encoding:
11
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
+ accept:
13
+ - "*/*"
14
+ user-agent:
15
+ - Ruby
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ date:
22
+ - Fri, 23 Oct 2015 12:11:04 GMT
23
+ server:
24
+ - CouchDB/1.6.1 (Erlang OTP/R15B01)
25
+ etag:
26
+ - '"4-594e55601c906f36434b21bc9db51c90"'
27
+ content-type:
28
+ - text/plain; charset=utf-8
29
+ content-length:
30
+ - '1569'
31
+ cache-control:
32
+ - must-revalidate
33
+ x-proxyinstancename:
34
+ - poms1b
35
+ set-cookie:
36
+ - balancer://poms3cluster=balancer.poms1madb; path=/;
37
+ body:
38
+ encoding: UTF-8
39
+ string: |
40
+ {"_id":"WO_NPO_1950962","_rev":"4-594e55601c906f36434b21bc9db51c90","objectType":"program","mid":"WO_NPO_1950962","creationDate":1442490263679,"lastModified":1442491591146,"sortDate":1442490263679,"urn":"urn:vpro:media:program:62589080","embeddable":true,"broadcasters":["NPO"],"titles":[{"value":"Liedje: de wielen van de bus","owner":"BROADCASTER","type":"MAIN"},{"value":"Liedje: de wielen van de bus","owner":"BROADCASTER","type":"SUB"}],"descriptions":[{"value":"Liedje: de wielen van de bus","owner":"BROADCASTER","type":"MAIN"}],"genres":["Jeugd"],"countries":[],"languages":[],"duration":60000,"descendantOf":[{"midRef":"POMS_S_NPO_2015412","urnRef":"urn:vpro:media:group:62589310","type":"PLAYLIST"}],"memberOf":[{"midRef":"POMS_S_NPO_2015412","urnRef":"urn:vpro:media:group:62589310","type":"PLAYLIST","index":1,"highlighted":false,"added":1442490529409}],"locations":[{"programUrl":"http://download.omroep.nl/npo/zappelin/DWVZ_AFL_86_De_wielen_van_de_bus.mp4","avAttributes":{"bitrate":1000000,"avFileFormat":"MP4"},"owner":"BROADCASTER","creationDate":1442490345785,"lastModified":1442490345864,"workflow":"PUBLISHED","urn":"urn:vpro:media:location:62589229"}],"images":[{"title":"Wielen van de bus","description":"wielen van de bus","imageUri":"urn:vpro:image:653515","height":259,"width":559,"owner":"BROADCASTER","type":"PORTRAIT","highlighted":true,"creationDate":1442491591052,"lastModified":1442491591141,"workflow":"PUBLISHED","urn":"urn:vpro:media:image:62590127"}],"publishDate":1442491834775,"workflow":"PUBLISHED","type":"CLIP","avType":"VIDEO"}
41
+ http_version: '1.1'
42
+ recorded_at: Tue, 06 Oct 2015 12:00:00 GMT
43
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,43 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://docs.poms.omroep.nl/media/WO_NPO_1950962
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ accept-encoding:
11
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
+ accept:
13
+ - "*/*"
14
+ user-agent:
15
+ - Ruby
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ date:
22
+ - Fri, 23 Oct 2015 12:11:04 GMT
23
+ server:
24
+ - CouchDB/1.6.1 (Erlang OTP/R15B01)
25
+ etag:
26
+ - '"4-594e55601c906f36434b21bc9db51c90"'
27
+ content-type:
28
+ - text/plain; charset=utf-8
29
+ content-length:
30
+ - '1569'
31
+ cache-control:
32
+ - must-revalidate
33
+ x-proxyinstancename:
34
+ - poms1b
35
+ set-cookie:
36
+ - balancer://poms3cluster=balancer.poms1s1db; path=/;
37
+ body:
38
+ encoding: UTF-8
39
+ string: |
40
+ {"_id":"WO_NPO_1950962","_rev":"4-594e55601c906f36434b21bc9db51c90","objectType":"program","mid":"WO_NPO_1950962","creationDate":1442490263679,"lastModified":1442491591146,"sortDate":1442490263679,"urn":"urn:vpro:media:program:62589080","embeddable":true,"broadcasters":["NPO"],"titles":[{"value":"Liedje: de wielen van de bus","owner":"BROADCASTER","type":"MAIN"},{"value":"Liedje: de wielen van de bus","owner":"BROADCASTER","type":"SUB"}],"descriptions":[{"value":"Liedje: de wielen van de bus","owner":"BROADCASTER","type":"MAIN"}],"genres":["Jeugd"],"countries":[],"languages":[],"duration":60000,"descendantOf":[{"midRef":"POMS_S_NPO_2015412","urnRef":"urn:vpro:media:group:62589310","type":"PLAYLIST"}],"memberOf":[{"midRef":"POMS_S_NPO_2015412","urnRef":"urn:vpro:media:group:62589310","type":"PLAYLIST","index":1,"highlighted":false,"added":1442490529409}],"locations":[{"programUrl":"http://download.omroep.nl/npo/zappelin/DWVZ_AFL_86_De_wielen_van_de_bus.mp4","avAttributes":{"bitrate":1000000,"avFileFormat":"MP4"},"owner":"BROADCASTER","creationDate":1442490345785,"lastModified":1442490345864,"workflow":"PUBLISHED","urn":"urn:vpro:media:location:62589229"}],"images":[{"title":"Wielen van de bus","description":"wielen van de bus","imageUri":"urn:vpro:image:653515","height":259,"width":559,"owner":"BROADCASTER","type":"PORTRAIT","highlighted":true,"creationDate":1442491591052,"lastModified":1442491591141,"workflow":"PUBLISHED","urn":"urn:vpro:media:image:62590127"}],"publishDate":1442491834775,"workflow":"PUBLISHED","type":"CLIP","avType":"VIDEO"}
41
+ http_version: '1.1'
42
+ recorded_at: Tue, 06 Oct 2015 12:00:00 GMT
43
+ recorded_with: VCR 2.9.3