poms 0.0.9 → 0.0.10

Sign up to get free protection for your applications and to get access to all the features.
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