poms 1.0.1 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/Gemfile.lock +11 -3
- data/README.md +12 -0
- data/lib/poms/api/auth.rb +40 -0
- data/lib/poms/api/request.rb +44 -0
- data/lib/poms/merged_series.rb +5 -4
- data/lib/poms/version.rb +1 -1
- data/poms.gemspec +4 -5
- data/spec/fixtures/vcr_cassettes/poms/builderless/broadcast_starts_at/returns_a_datetime.yml +17 -17
- data/spec/fixtures/vcr_cassettes/poms/builderless/clip/has_a_position.yml +16 -16
- data/spec/fixtures/vcr_cassettes/poms/builderless/clip/has_a_title.yml +16 -16
- data/spec/fixtures/vcr_cassettes/poms/builderless/clip/has_a_video_url.yml +16 -16
- data/spec/fixtures/vcr_cassettes/poms/builderless/clip/has_an_image_id.yml +17 -17
- data/spec/fixtures/vcr_cassettes/poms/fetch_broadcasts_fetch_current_broadcast_fetches_the_current_broadcast.yml +17 -17
- data/spec/fixtures/vcr_cassettes/poms/fetch_broadcasts_fetch_next_broadcast_and_key_fetches_the_current_broadcast.yml +68 -0
- data/spec/fixtures/vcr_cassettes/poms/fetch_broadcasts_fetch_next_broadcast_and_key_returns_the_key.yml +68 -0
- data/spec/fixtures/vcr_cassettes/poms/merged_series/turns_the_json_into_a_hash.yml +19 -19
- data/spec/fixtures/vcr_cassettes/poms_fetch/a_broadcast_has_scheduled_events_with_last_with_starts_at.yml +13 -13
- data/spec/fixtures/vcr_cassettes/poms_fetch/a_clip_has_a_title.yml +16 -16
- data/spec/fixtures/vcr_cassettes/poms_fetch/an_aankeiler_has_images.yml +13 -13
- data/spec/fixtures/vcr_cassettes/poms_fetch_current_broadcast/has_a_mid.yml +16 -16
- data/spec/fixtures/vcr_cassettes/poms_fetch_current_broadcast/has_a_title.yml +16 -16
- data/spec/fixtures/vcr_cassettes/poms_fetch_current_broadcast/has_scheduled_events_with_last_with_starts_at.yml +16 -16
- data/spec/fixtures/vcr_cassettes/poms_fetch_current_broadcast_and_key/has_a_broadcast_with_a_mid.yml +16 -16
- data/spec/fixtures/vcr_cassettes/poms_fetch_current_broadcast_and_key/has_a_key.yml +16 -16
- data/spec/fixtures/vcr_cassettes/poms_fetch_group/has_a_child_with_a_media_type.yml +409 -383
- data/spec/fixtures/vcr_cassettes/poms_fetch_group/has_a_child_with_a_title.yml +409 -383
- data/spec/fixtures/vcr_cassettes/poms_fetch_playlist_clips/creates_an_array_of_clips.yml +987 -906
- data/spec/lib/poms/api/auth_spec.rb +34 -0
- data/spec/lib/poms/api/request_spec.rb +30 -0
- data/spec/lib/poms/builderless/clip_spec.rb +2 -2
- data/spec/lib/poms/merged_series_spec.rb +8 -10
- data/spec/lib/poms/views_spec.rb +2 -2
- data/spec/lib/poms_spec.rb +14 -14
- data/spec/spec_helper.rb +4 -4
- metadata +14 -18
- data/spec/fixtures/vcr_cassettes/poms/builderless/broadcast/has_a_position.yml +0 -43
- data/spec/fixtures/vcr_cassettes/poms/builderless/broadcast/has_a_title.yml +0 -43
- data/spec/fixtures/vcr_cassettes/poms/builderless/broadcast/has_a_video_url.yml +0 -43
- data/spec/fixtures/vcr_cassettes/poms/builderless/broadcast/has_an_image_id.yml +0 -43
- data/spec/fixtures/vcr_cassettes/poms/merged_series/is_enumerable.yml +0 -46
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ea2f8a418ece2d7e6a781048eface1f3e59718a8
|
4
|
+
data.tar.gz: 119fe18a3cbed68a20e9cedcd65eb4462633b213
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f443e47960ae7bacf500761fac52a7474adbc4cf9f3152b26c28495887b2d079da37c07ae124aa2968f80c1a8d2afc87ff536f673770673ddac28b3a20825e1e
|
7
|
+
data.tar.gz: 1d3a79509b18fcd9f5e489bd5e870407293a560f3073d7714fc766d7a07d750dea74154fd3a6a3ba70066bfa0f20d24707b45a7eecff0102d035d466d74b48f4
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
# Poms Release notes
|
2
2
|
|
3
|
+
## 1.1.0
|
4
|
+
|
5
|
+
* Updated README with usage instruction.
|
6
|
+
* [#21] Allow access to the Poms API. This functionality is only used for merging series at this point.
|
7
|
+
|
3
8
|
## 1.0.1
|
4
9
|
|
5
10
|
* [#20](https://github.com/brightin/poms/pull/20) Return schedule event `starts_at` as DateTime.
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
poms (1.
|
4
|
+
poms (1.1.0)
|
5
5
|
activesupport
|
6
6
|
|
7
7
|
GEM
|
@@ -13,15 +13,17 @@ GEM
|
|
13
13
|
minitest (~> 5.1)
|
14
14
|
thread_safe (~> 0.3, >= 0.3.4)
|
15
15
|
tzinfo (~> 1.1)
|
16
|
+
addressable (2.4.0)
|
16
17
|
ast (2.2.0)
|
17
18
|
astrolabe (1.3.1)
|
18
19
|
parser (~> 2.2)
|
19
20
|
celluloid (0.16.0)
|
20
21
|
timers (~> 4.0.0)
|
21
22
|
coderay (1.1.0)
|
23
|
+
crack (0.4.3)
|
24
|
+
safe_yaml (~> 1.0.0)
|
22
25
|
diff-lcs (1.2.5)
|
23
26
|
fabrication (2.12.2)
|
24
|
-
fakeweb (1.3.0)
|
25
27
|
ffi (1.9.8)
|
26
28
|
formatador (0.2.5)
|
27
29
|
guard (2.12.5)
|
@@ -38,6 +40,7 @@ GEM
|
|
38
40
|
guard (~> 2.1)
|
39
41
|
guard-compat (~> 1.1)
|
40
42
|
rspec (>= 2.99.0, < 4.0)
|
43
|
+
hashdiff (0.2.3)
|
41
44
|
hitimes (1.2.2)
|
42
45
|
i18n (0.7.0)
|
43
46
|
json (1.8.2)
|
@@ -84,6 +87,7 @@ GEM
|
|
84
87
|
rainbow (>= 1.99.1, < 3.0)
|
85
88
|
ruby-progressbar (~> 1.4)
|
86
89
|
ruby-progressbar (1.7.5)
|
90
|
+
safe_yaml (1.0.4)
|
87
91
|
shellany (0.0.1)
|
88
92
|
slop (3.6.0)
|
89
93
|
thor (0.19.1)
|
@@ -94,6 +98,10 @@ GEM
|
|
94
98
|
tzinfo (1.2.2)
|
95
99
|
thread_safe (~> 0.1)
|
96
100
|
vcr (2.9.3)
|
101
|
+
webmock (1.22.6)
|
102
|
+
addressable (>= 2.3.6)
|
103
|
+
crack (>= 0.3.2)
|
104
|
+
hashdiff
|
97
105
|
|
98
106
|
PLATFORMS
|
99
107
|
ruby
|
@@ -101,7 +109,6 @@ PLATFORMS
|
|
101
109
|
DEPENDENCIES
|
102
110
|
bundler (~> 1.3)
|
103
111
|
fabrication
|
104
|
-
fakeweb
|
105
112
|
guard
|
106
113
|
guard-rspec
|
107
114
|
poms!
|
@@ -110,3 +117,4 @@ DEPENDENCIES
|
|
110
117
|
rubocop (~> 0.34.1)
|
111
118
|
timecop
|
112
119
|
vcr
|
120
|
+
webmock
|
data/README.md
CHANGED
@@ -17,6 +17,18 @@ Or install it yourself as:
|
|
17
17
|
|
18
18
|
$ gem install poms
|
19
19
|
|
20
|
+
## Usage
|
21
|
+
|
22
|
+
The `Poms` module contains various ways to query the Poms CouchDB service. The simplest way to get something is to use the `fetch` function, which takes a MID.
|
23
|
+
|
24
|
+
Poms.fetch('mid')
|
25
|
+
|
26
|
+
This returns an OpenStruct-like object that wraps the json of the Poms response.
|
27
|
+
|
28
|
+
For some more advanced querying, you can use functions like `fetch_clip` which also takes a MID, but returns a `Clip` object, that is a little easier to work with.
|
29
|
+
|
30
|
+
You can also query collections in a way to get back multiple episodes. This is tied to the views in the Poms CouchDB service and is documented on the wiki of the NPO.
|
31
|
+
|
20
32
|
## Contributing
|
21
33
|
|
22
34
|
1. Fork it
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module Poms
|
2
|
+
module Api
|
3
|
+
# This module can be used to create an authentication header for the Poms
|
4
|
+
# API.
|
5
|
+
#
|
6
|
+
# see: http://wiki.publiekeomroep.nl/display/npoapi/Algemeen
|
7
|
+
module Auth
|
8
|
+
# Create an auth header for the Poms API. This is a codified string
|
9
|
+
# consisting of a message that is hashed with a secret.
|
10
|
+
#
|
11
|
+
# @see message
|
12
|
+
# @param secret The Poms API secret key
|
13
|
+
# @param message The message that needs to be hashed.
|
14
|
+
def self.encode(secret, message)
|
15
|
+
sha256 = OpenSSL::Digest.new('sha256')
|
16
|
+
digest = OpenSSL::HMAC.digest(sha256, secret, message)
|
17
|
+
Base64.encode64(digest)
|
18
|
+
end
|
19
|
+
|
20
|
+
# Creates the header that is used for authenticating a request to the Poms
|
21
|
+
# API.
|
22
|
+
#
|
23
|
+
# @param uri The uri that is being requested
|
24
|
+
# @param origin The origin header
|
25
|
+
# @param date The date as an RFC822 string
|
26
|
+
# @param params The url params as a ruby hash
|
27
|
+
def self.message(uri, origin, date, params = {})
|
28
|
+
params_string = params.sort.map do |key, value|
|
29
|
+
"#{key}:#{value}"
|
30
|
+
end.join(',') if params.present?
|
31
|
+
[
|
32
|
+
"origin:#{origin}",
|
33
|
+
"x-npo-date:#{date}",
|
34
|
+
"uri:#{uri}",
|
35
|
+
params_string
|
36
|
+
].compact.join(',')
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'poms/api/auth'
|
2
|
+
|
3
|
+
module Poms
|
4
|
+
module Api
|
5
|
+
# A request to the Poms API. Does the authentication and allows you to
|
6
|
+
# execute the request.
|
7
|
+
class Request
|
8
|
+
# Create a new request to the Poms API. The request is initialized with a
|
9
|
+
# URI to be called and the key, secret and origin that are needed for
|
10
|
+
# authentication.
|
11
|
+
#
|
12
|
+
# @param uri The full URI to call on the Poms API
|
13
|
+
# @param key The api key
|
14
|
+
# @param secret The secret that goes with the api key
|
15
|
+
# @param origin The whitelisted origin for this api key
|
16
|
+
def initialize(uri, key, secret, origin)
|
17
|
+
@uri = uri
|
18
|
+
@path = URI(@uri).path
|
19
|
+
@key = key
|
20
|
+
@secret = secret
|
21
|
+
@origin = origin
|
22
|
+
end
|
23
|
+
|
24
|
+
# Executes the request.
|
25
|
+
def call
|
26
|
+
open(@uri, headers)
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
def headers
|
32
|
+
date = Time.now.rfc822
|
33
|
+
origin = @origin
|
34
|
+
message = Auth.message(@path, @origin, date)
|
35
|
+
encoded_message = Auth.encode(@secret, message)
|
36
|
+
{
|
37
|
+
'Origin' => origin,
|
38
|
+
'X-NPO-Date' => date,
|
39
|
+
'Authorization' => "NPO #{@key}:#{encoded_message}"
|
40
|
+
}
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
data/lib/poms/merged_series.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'poms/api/request'
|
2
2
|
require 'timeout'
|
3
3
|
|
4
4
|
module Poms
|
@@ -6,7 +6,8 @@ module Poms
|
|
6
6
|
module MergedSeries
|
7
7
|
extend self
|
8
8
|
|
9
|
-
|
9
|
+
TEST_URL = 'https://rs-test.poms.omroep.nl/v1/api/media/redirects/'.freeze
|
10
|
+
PRODUCTION_URL = 'https://rs.poms.omroep.nl/v1/api/media/redirects/'.freeze
|
10
11
|
|
11
12
|
# Gets the merged serie mids as a hash. Expects a JSON response from
|
12
13
|
# the server with a `map` key.
|
@@ -15,9 +16,9 @@ module Poms
|
|
15
16
|
#
|
16
17
|
# @param api_url the API url to query
|
17
18
|
# @return [Hash] a hash with old_mid => new_mid pairs
|
18
|
-
def serie_mids(api_url =
|
19
|
+
def serie_mids(api_url = PRODUCTION_URL, key = '', secret = '', origin = '')
|
19
20
|
Timeout.timeout(3) do
|
20
|
-
data =
|
21
|
+
data = Poms::Api::Request.new(api_url, key, secret, origin).call.read
|
21
22
|
JSON.parse(data).fetch('map')
|
22
23
|
end
|
23
24
|
rescue OpenURI::HTTPError, JSON::ParserError, Timeout::Error => e
|
data/lib/poms/version.rb
CHANGED
data/poms.gemspec
CHANGED
@@ -7,11 +7,10 @@ require 'rake'
|
|
7
7
|
Gem::Specification.new do |spec|
|
8
8
|
spec.name = 'poms'
|
9
9
|
spec.version = Poms::VERSION
|
10
|
-
spec.authors = ['Tom Kruijsen'
|
11
|
-
spec.email = ['tom@brightin.nl'
|
12
|
-
'tijn@brightin.nl']
|
10
|
+
spec.authors = ['Tom Kruijsen']
|
11
|
+
spec.email = ['tom@brightin.nl']
|
13
12
|
spec.description = 'Interface to POMS CouchDB API'
|
14
|
-
spec.summary = '
|
13
|
+
spec.summary = 'Interface to POMS CouchDB API'
|
15
14
|
spec.homepage = 'https://github.com/brightin/poms'
|
16
15
|
spec.license = 'MIT'
|
17
16
|
|
@@ -24,7 +23,7 @@ Gem::Specification.new do |spec|
|
|
24
23
|
spec.add_development_dependency 'rspec'
|
25
24
|
spec.add_development_dependency 'guard'
|
26
25
|
spec.add_development_dependency 'guard-rspec'
|
27
|
-
spec.add_development_dependency '
|
26
|
+
spec.add_development_dependency 'webmock'
|
28
27
|
spec.add_development_dependency 'fabrication'
|
29
28
|
spec.add_development_dependency 'rubocop', '~> 0.34.1'
|
30
29
|
spec.add_development_dependency 'timecop'
|
data/spec/fixtures/vcr_cassettes/poms/builderless/broadcast_starts_at/returns_a_datetime.yml
CHANGED
@@ -2,41 +2,41 @@
|
|
2
2
|
http_interactions:
|
3
3
|
- request:
|
4
4
|
method: get
|
5
|
-
uri: http://docs.poms.omroep.nl/media/_design/media/_view/broadcasts-by-channel-and-start?descending=true&endkey=%5B%22OPVO%22%
|
5
|
+
uri: http://docs.poms.omroep.nl/media/_design/media/_view/broadcasts-by-channel-and-start?descending=true&endkey=%5B%22OPVO%22,%201444046400000%5D&include_docs=true&limit=1&reduce=false&startkey=%5B%22OPVO%22,%201444132800000%5D
|
6
6
|
body:
|
7
7
|
encoding: US-ASCII
|
8
8
|
string: ''
|
9
9
|
headers:
|
10
|
-
|
10
|
+
Accept-Encoding:
|
11
11
|
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
12
|
-
|
12
|
+
Accept:
|
13
13
|
- "*/*"
|
14
|
-
|
14
|
+
User-Agent:
|
15
15
|
- Ruby
|
16
16
|
response:
|
17
17
|
status:
|
18
18
|
code: 200
|
19
19
|
message: OK
|
20
20
|
headers:
|
21
|
-
|
22
|
-
- Tue,
|
23
|
-
|
21
|
+
Date:
|
22
|
+
- Tue, 09 Feb 2016 11:02:28 GMT
|
23
|
+
Server:
|
24
24
|
- CouchDB/1.6.1 (Erlang OTP/R15B01)
|
25
|
-
|
26
|
-
- '"
|
27
|
-
|
25
|
+
Etag:
|
26
|
+
- '"32Y7KHAFUNQKIXXS10QE1MBD0"'
|
27
|
+
Content-Type:
|
28
28
|
- text/plain; charset=utf-8
|
29
|
-
|
29
|
+
Cache-Control:
|
30
30
|
- must-revalidate
|
31
|
-
|
31
|
+
X-Proxyinstancename:
|
32
32
|
- poms1b
|
33
|
-
|
34
|
-
- balancer://poms3cluster=balancer.
|
35
|
-
|
33
|
+
Set-Cookie:
|
34
|
+
- balancer://poms3cluster=balancer.poms1madb; path=/;
|
35
|
+
Transfer-Encoding:
|
36
36
|
- chunked
|
37
37
|
body:
|
38
38
|
encoding: UTF-8
|
39
|
-
string: "{\"total_rows\":
|
39
|
+
string: "{\"total_rows\":937833,\"offset\":241709,\"rows\":[\r\n{\"id\":\"T_POW_02983987\",\"key\":[\"OPVO\",1444128900000],\"value\":null,\"doc\":{\"_id\":\"T_POW_02983987\",\"_rev\":\"20-2580d71f807a2182a6e5298231166a69\",\"objectType\":\"program\",\"mid\":\"T_POW_02983987\",\"creationDate\":1442487246008,\"lastModified\":1452873713621,\"sortDate\":1444128900000,\"urn\":\"urn:vpro:media:program:62586944\",\"embeddable\":true,\"broadcasters\":[\"KRO-NCRV\"],\"titles\":[{\"value\":\"Peperbollen\",\"owner\":\"MIS\",\"type\":\"MAIN\"},{\"value\":\"Alle
|
40
40
|
begin is moeilijk\",\"owner\":\"MIS\",\"type\":\"SUB\"}],\"descriptions\":[{\"value\":\"Een
|
41
41
|
groepje kinderen dat zich de Peperbollen noemt bestrijdt misdaad en onrecht.
|
42
42
|
Ze hebben hun hoofdkwartier in een magazijnencomplex in het havendistrict
|
@@ -48,6 +48,6 @@ http_interactions:
|
|
48
48
|
ondertitels\",\"guideDay\":1452812400000,\"start\":1452837300000,\"duration\":1658000,\"poProgID\":\"T_POW_02983987\",\"channel\":\"OPVO\",\"urnRef\":\"urn:vpro:media:program:62586944\",\"midRef\":\"T_POW_02983987\"},{\"textSubtitles\":\"Teletekst
|
49
49
|
ondertitels\",\"guideDay\":1452812400000,\"start\":1452849900000,\"duration\":1658000,\"poProgID\":\"T_POW_02983987\",\"channel\":\"OPVO\",\"urnRef\":\"urn:vpro:media:program:62586944\",\"midRef\":\"T_POW_02983987\"},{\"textSubtitles\":\"Teletekst
|
50
50
|
ondertitels\",\"guideDay\":1453071600000,\"start\":1453148100000,\"duration\":1658000,\"poProgID\":\"T_POW_02983987\",\"channel\":\"OPVO\",\"urnRef\":\"urn:vpro:media:program:62586944\",\"midRef\":\"T_POW_02983987\"}],\"publishDate\":1452873995581,\"workflow\":\"PUBLISHED\",\"type\":\"BROADCAST\",\"avType\":\"VIDEO\"}}\r\n]}\n"
|
51
|
-
http_version:
|
51
|
+
http_version:
|
52
52
|
recorded_at: Tue, 06 Oct 2015 12:00:00 GMT
|
53
53
|
recorded_with: VCR 2.9.3
|
@@ -7,37 +7,37 @@ http_interactions:
|
|
7
7
|
encoding: US-ASCII
|
8
8
|
string: ''
|
9
9
|
headers:
|
10
|
-
|
10
|
+
Accept-Encoding:
|
11
11
|
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
12
|
-
|
12
|
+
Accept:
|
13
13
|
- "*/*"
|
14
|
-
|
14
|
+
User-Agent:
|
15
15
|
- Ruby
|
16
16
|
response:
|
17
17
|
status:
|
18
18
|
code: 200
|
19
19
|
message: OK
|
20
20
|
headers:
|
21
|
-
|
22
|
-
-
|
23
|
-
|
21
|
+
Date:
|
22
|
+
- Tue, 09 Feb 2016 11:02:28 GMT
|
23
|
+
Server:
|
24
24
|
- CouchDB/1.6.1 (Erlang OTP/R15B01)
|
25
|
-
|
26
|
-
- '"
|
27
|
-
|
25
|
+
Etag:
|
26
|
+
- '"8-427f3fcb3d9b620ddcd3e9387a4e67c2"'
|
27
|
+
Content-Type:
|
28
28
|
- text/plain; charset=utf-8
|
29
|
-
|
30
|
-
- '
|
31
|
-
|
29
|
+
Content-Length:
|
30
|
+
- '1634'
|
31
|
+
Cache-Control:
|
32
32
|
- must-revalidate
|
33
|
-
|
33
|
+
X-Proxyinstancename:
|
34
34
|
- poms1b
|
35
|
-
|
35
|
+
Set-Cookie:
|
36
36
|
- balancer://poms3cluster=balancer.poms1s1db; path=/;
|
37
37
|
body:
|
38
38
|
encoding: UTF-8
|
39
39
|
string: |
|
40
|
-
{"_id":"WO_NPO_1950962","_rev":"
|
41
|
-
http_version:
|
40
|
+
{"_id":"WO_NPO_1950962","_rev":"8-427f3fcb3d9b620ddcd3e9387a4e67c2","objectType":"program","mid":"WO_NPO_1950962","creationDate":1442490263679,"lastModified":1447947725305,"sortDate":1442490263679,"urn":"urn:vpro:media:program:62589080","embeddable":true,"broadcasters":["NPO"],"titles":[{"value":"De wielen van de bus","owner":"BROADCASTER","type":"MAIN"},{"value":"De wielen van de bus","owner":"BROADCASTER","type":"SUB"}],"descriptions":[{"value":"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"},{"midRef":"POMS_S_NTR_3191139","urnRef":"urn:vpro:media:group:70383463","type":"SERIES"}],"memberOf":[{"midRef":"POMS_S_NPO_2015412","urnRef":"urn:vpro:media:group:62589310","type":"PLAYLIST","index":2,"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":1454339417687,"workflow":"PUBLISHED","type":"CLIP","avType":"VIDEO"}
|
41
|
+
http_version:
|
42
42
|
recorded_at: Tue, 06 Oct 2015 12:00:00 GMT
|
43
43
|
recorded_with: VCR 2.9.3
|
@@ -7,37 +7,37 @@ http_interactions:
|
|
7
7
|
encoding: US-ASCII
|
8
8
|
string: ''
|
9
9
|
headers:
|
10
|
-
|
10
|
+
Accept-Encoding:
|
11
11
|
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
12
|
-
|
12
|
+
Accept:
|
13
13
|
- "*/*"
|
14
|
-
|
14
|
+
User-Agent:
|
15
15
|
- Ruby
|
16
16
|
response:
|
17
17
|
status:
|
18
18
|
code: 200
|
19
19
|
message: OK
|
20
20
|
headers:
|
21
|
-
|
22
|
-
-
|
23
|
-
|
21
|
+
Date:
|
22
|
+
- Tue, 09 Feb 2016 11:02:28 GMT
|
23
|
+
Server:
|
24
24
|
- CouchDB/1.6.1 (Erlang OTP/R15B01)
|
25
|
-
|
26
|
-
- '"
|
27
|
-
|
25
|
+
Etag:
|
26
|
+
- '"8-427f3fcb3d9b620ddcd3e9387a4e67c2"'
|
27
|
+
Content-Type:
|
28
28
|
- text/plain; charset=utf-8
|
29
|
-
|
30
|
-
- '
|
31
|
-
|
29
|
+
Content-Length:
|
30
|
+
- '1634'
|
31
|
+
Cache-Control:
|
32
32
|
- must-revalidate
|
33
|
-
|
33
|
+
X-Proxyinstancename:
|
34
34
|
- poms1b
|
35
|
-
|
35
|
+
Set-Cookie:
|
36
36
|
- balancer://poms3cluster=balancer.poms1s1db; path=/;
|
37
37
|
body:
|
38
38
|
encoding: UTF-8
|
39
39
|
string: |
|
40
|
-
{"_id":"WO_NPO_1950962","_rev":"
|
41
|
-
http_version:
|
40
|
+
{"_id":"WO_NPO_1950962","_rev":"8-427f3fcb3d9b620ddcd3e9387a4e67c2","objectType":"program","mid":"WO_NPO_1950962","creationDate":1442490263679,"lastModified":1447947725305,"sortDate":1442490263679,"urn":"urn:vpro:media:program:62589080","embeddable":true,"broadcasters":["NPO"],"titles":[{"value":"De wielen van de bus","owner":"BROADCASTER","type":"MAIN"},{"value":"De wielen van de bus","owner":"BROADCASTER","type":"SUB"}],"descriptions":[{"value":"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"},{"midRef":"POMS_S_NTR_3191139","urnRef":"urn:vpro:media:group:70383463","type":"SERIES"}],"memberOf":[{"midRef":"POMS_S_NPO_2015412","urnRef":"urn:vpro:media:group:62589310","type":"PLAYLIST","index":2,"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":1454339417687,"workflow":"PUBLISHED","type":"CLIP","avType":"VIDEO"}
|
41
|
+
http_version:
|
42
42
|
recorded_at: Tue, 06 Oct 2015 12:00:00 GMT
|
43
43
|
recorded_with: VCR 2.9.3
|
@@ -7,37 +7,37 @@ http_interactions:
|
|
7
7
|
encoding: US-ASCII
|
8
8
|
string: ''
|
9
9
|
headers:
|
10
|
-
|
10
|
+
Accept-Encoding:
|
11
11
|
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
12
|
-
|
12
|
+
Accept:
|
13
13
|
- "*/*"
|
14
|
-
|
14
|
+
User-Agent:
|
15
15
|
- Ruby
|
16
16
|
response:
|
17
17
|
status:
|
18
18
|
code: 200
|
19
19
|
message: OK
|
20
20
|
headers:
|
21
|
-
|
22
|
-
-
|
23
|
-
|
21
|
+
Date:
|
22
|
+
- Tue, 09 Feb 2016 11:02:28 GMT
|
23
|
+
Server:
|
24
24
|
- CouchDB/1.6.1 (Erlang OTP/R15B01)
|
25
|
-
|
26
|
-
- '"
|
27
|
-
|
25
|
+
Etag:
|
26
|
+
- '"8-427f3fcb3d9b620ddcd3e9387a4e67c2"'
|
27
|
+
Content-Type:
|
28
28
|
- text/plain; charset=utf-8
|
29
|
-
|
30
|
-
- '
|
31
|
-
|
29
|
+
Content-Length:
|
30
|
+
- '1634'
|
31
|
+
Cache-Control:
|
32
32
|
- must-revalidate
|
33
|
-
|
33
|
+
X-Proxyinstancename:
|
34
34
|
- poms1b
|
35
|
-
|
35
|
+
Set-Cookie:
|
36
36
|
- balancer://poms3cluster=balancer.poms1madb; path=/;
|
37
37
|
body:
|
38
38
|
encoding: UTF-8
|
39
39
|
string: |
|
40
|
-
{"_id":"WO_NPO_1950962","_rev":"
|
41
|
-
http_version:
|
40
|
+
{"_id":"WO_NPO_1950962","_rev":"8-427f3fcb3d9b620ddcd3e9387a4e67c2","objectType":"program","mid":"WO_NPO_1950962","creationDate":1442490263679,"lastModified":1447947725305,"sortDate":1442490263679,"urn":"urn:vpro:media:program:62589080","embeddable":true,"broadcasters":["NPO"],"titles":[{"value":"De wielen van de bus","owner":"BROADCASTER","type":"MAIN"},{"value":"De wielen van de bus","owner":"BROADCASTER","type":"SUB"}],"descriptions":[{"value":"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"},{"midRef":"POMS_S_NTR_3191139","urnRef":"urn:vpro:media:group:70383463","type":"SERIES"}],"memberOf":[{"midRef":"POMS_S_NPO_2015412","urnRef":"urn:vpro:media:group:62589310","type":"PLAYLIST","index":2,"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":1454339417687,"workflow":"PUBLISHED","type":"CLIP","avType":"VIDEO"}
|
41
|
+
http_version:
|
42
42
|
recorded_at: Tue, 06 Oct 2015 12:00:00 GMT
|
43
43
|
recorded_with: VCR 2.9.3
|