bbc_redux 0.4.0.pre → 0.4.3.pre

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.
data/README.md CHANGED
@@ -1,3 +1,5 @@
1
+ # THIS IS PRE RELEASE, DON'T USE IT AS IT PROBABLY WON'T WORK!
2
+
1
3
  # Redux
2
4
 
3
5
  A gem to help navigate the Redux API's and to screen scrape where an API does
@@ -59,7 +61,9 @@ to message us.
59
61
  asset.duration #=> Integer
60
62
  asset.key #=> BBC::Redux::Key
61
63
  asset.name #=> String
64
+ asset.pcrid #=> BBC::Redux::Crid
62
65
  asset.reference #=> String
66
+ asset.scrid #=> BBC::Redux::Crid
63
67
  asset.start #=> DateTime
64
68
  asset.uuid #=> String
65
69
 
@@ -1,5 +1,6 @@
1
1
  require 'virtus'
2
2
  require_relative 'channel'
3
+ require_relative 'crid'
3
4
  require_relative 'key'
4
5
  require_relative 'media_url'
5
6
 
@@ -17,7 +18,9 @@ module BBC
17
18
  # asset.duration #=> Integer
18
19
  # asset.key #=> BBC::Redux::Key
19
20
  # asset.name #=> String
21
+ # asset.pcrid #=> BBC::Redux::Crid
20
22
  # asset.reference #=> String
23
+ # asset.scrid #=> BBC::Redux::Crid
21
24
  # asset.start #=> DateTime
22
25
  # asset.uuid #=> String
23
26
  #
@@ -71,15 +74,31 @@ module BBC
71
74
  alias :title :name
72
75
 
73
76
  # @!attribute [r] uuid
74
- # @return [String] the user's uuid
77
+ # @return [String] the assets's uuid
75
78
  attribute :uuid, String
76
79
 
80
+ # @!attribute [r] crids
81
+ # @return [String] the assets's crids
82
+ attribute :crids, Array[BBC::Redux::Crid], :default => [ ]
83
+
77
84
  # @!attribute [r] key
78
85
  # @return [Key] the asset's access key object
79
86
  def key
80
87
  @key ||= Key.new(access_key)
81
88
  end
82
89
 
90
+ # @!attribute [r] pcrid
91
+ # @return [Key] the asset's programme crid
92
+ def pcrid
93
+ @pcrid ||= crids.find { |c| c.description =~ /programme/ }
94
+ end
95
+
96
+ # @!attribute [r] scrid
97
+ # @return [Key] the asset's series crid
98
+ def scrid
99
+ @scrid ||= crids.find { |c| c.description =~ /series/ }
100
+ end
101
+
83
102
  private
84
103
 
85
104
  def self.has_media_url(type)
@@ -240,7 +240,7 @@ module BBC
240
240
  def url_for(action)
241
241
  case action
242
242
  when :asset
243
- host + '/asset/details'
243
+ host + '/asset/details/extended'
244
244
  when :channels
245
245
  host + '/asset/channel/available'
246
246
  when :channel_categories
@@ -0,0 +1,41 @@
1
+ require 'virtus'
2
+ require_relative 'channel'
3
+ require_relative 'key'
4
+ require_relative 'media_url'
5
+
6
+ module BBC
7
+ module Redux
8
+
9
+ # Redux Crid Object
10
+ #
11
+ # @example Properties of the crid object
12
+ #
13
+ # crid = redux_client.asset('5966413090093319525').pcrid
14
+ #
15
+ # crid.content #=> String
16
+ # crid.description #=> String
17
+ # crid.type #=> String
18
+ #
19
+ # @author Matt Haynes <matt.haynes@bbc.co.uk>
20
+ class Crid
21
+
22
+ include Virtus.value_object
23
+
24
+ # @!attribute [r] content
25
+ # @return [String] the crids content, e.g. crid://fp.bbc.co.uk/LYRJ9T
26
+ attribute :content, String
27
+
28
+ alias :to_s :content
29
+
30
+ # @!attribute [r] description
31
+ # @return [String] the crid's description, e.g. "DTG series CRID"
32
+ attribute :description, String
33
+
34
+ # @!attribute [r] type
35
+ # @return [String] the crid's type byte value, e.g. "0x32"
36
+ attribute :type, String
37
+
38
+ end
39
+
40
+ end
41
+ end
@@ -28,6 +28,18 @@ module BBC
28
28
  property :name
29
29
  property :display_name
30
30
  end
31
+
32
+ # NB, special compensation for api returning crids: nil not crids: []
33
+ crid_reader = lambda { |doc, args|
34
+ self.crids = (doc['crids'] || []).map {|c| BBC::Redux::Crid.new(c) }
35
+ }
36
+
37
+ collection :crids, :reader => crid_reader do
38
+ property :content
39
+ property :description
40
+ property :type
41
+ end
42
+
31
43
  end
32
44
 
33
45
  class Channel < Representable::Decorator
@@ -2,7 +2,7 @@ module BBC
2
2
  module Redux
3
3
 
4
4
  # Library version
5
- VERSION = '0.4.0.pre'
5
+ VERSION = '0.4.3.pre'
6
6
 
7
7
  end
8
8
  end
data/lib/bbc/redux.rb CHANGED
@@ -2,6 +2,7 @@ require_relative 'redux/asset'
2
2
  require_relative 'redux/channel'
3
3
  require_relative 'redux/channel_category'
4
4
  require_relative 'redux/client'
5
+ require_relative 'redux/crid'
5
6
  require_relative 'redux/end_points'
6
7
  require_relative 'redux/key'
7
8
  require_relative 'redux/media_url'
@@ -16,6 +16,16 @@ describe BBC::Redux::Asset do
16
16
  'channel.class' => BBC::Redux::Channel,
17
17
  'channel.display_name' => 'CBeebies',
18
18
  'channel.name' => 'cbeebies',
19
+ 'pcrid.class' => BBC::Redux::Crid,
20
+ 'pcrid.content' => 'crid://fp.bbc.co.uk/4CBRMV',
21
+ 'pcrid.description' => 'DTG programme CRID',
22
+ 'pcrid.to_s' => 'crid://fp.bbc.co.uk/4CBRMV',
23
+ 'pcrid.type' => '0x31',
24
+ 'scrid.class' => BBC::Redux::Crid,
25
+ 'scrid.content' => 'crid://fp.bbc.co.uk/LYRJ9T',
26
+ 'scrid.description' => 'DTG series CRID',
27
+ 'scrid.to_s' => 'crid://fp.bbc.co.uk/LYRJ9T',
28
+ 'scrid.type' => '0x32',
19
29
  :access_key => '1-1397227462-ba632af7af1ad',
20
30
  :description => 'Animated adventures of Pingu. [S]',
21
31
  :disk_reference => '5966413090093319525',
@@ -92,7 +92,7 @@ describe BBC::Redux::Client do
92
92
 
93
93
  it 'takes json from the backend HTTP API and generates an asset object' do
94
94
  expect(http_client).to \
95
- receive(:post).with('https://i.bbcredux.com/asset/details', {
95
+ receive(:post).with('https://i.bbcredux.com/asset/details/extended', {
96
96
  :body => { :reference => reference, :token => token },
97
97
  :followlocation => true,
98
98
  }).and_return(resp)
@@ -104,7 +104,7 @@ describe BBC::Redux::Client do
104
104
 
105
105
  it 'works when given a UUID rather than a disk reference' do
106
106
  expect(http_client).to \
107
- receive(:post).with('https://i.bbcredux.com/asset/details', {
107
+ receive(:post).with('https://i.bbcredux.com/asset/details/extended', {
108
108
  :body => { :uuid => uuid, :token => token },
109
109
  :followlocation => true,
110
110
  }).and_return(resp)
@@ -1,24 +1,36 @@
1
1
  {
2
- "name" : "Pingu",
3
- "channel" : {
4
- "name" : "cbeebies",
5
- "display_name" : "CBeebies"
6
- },
7
- "uuid" : "26a141fc-8511-4fef-aa2b-af1d1de5a75a",
8
- "description" : "Animated adventures of Pingu. [S]",
9
- "tags" : [
10
- {
11
- "text" : "penguin"
12
- },
13
- {
14
- "text" : "not_stoat"
15
- }
16
- ],
17
- "key" : "1-1397227462-ba632af7af1ad",
18
- "timing" : {
19
- "duration" : 300,
20
- "start" : "2014-01-08 06:50:00 +0000"
21
- },
22
- "reference" : 5966413090093319525
2
+ "crids" : [
3
+ {
4
+ "content" : "crid://fp.bbc.co.uk/LYRJ9T",
5
+ "type" : "0x32",
6
+ "description" : "DTG series CRID"
7
+ },
8
+ {
9
+ "content" : "crid://fp.bbc.co.uk/4CBRMV",
10
+ "type" : "0x31",
11
+ "description" : "DTG programme CRID"
12
+ }
13
+ ],
14
+ "name" : "Pingu",
15
+ "channel" : {
16
+ "name" : "cbeebies",
17
+ "display_name" : "CBeebies"
18
+ },
19
+ "uuid" : "26a141fc-8511-4fef-aa2b-af1d1de5a75a",
20
+ "description" : "Animated adventures of Pingu. [S]",
21
+ "tags" : [
22
+ {
23
+ "text" : "penguin"
24
+ },
25
+ {
26
+ "text" : "not_stoat"
27
+ }
28
+ ],
29
+ "key" : "1-1397227462-ba632af7af1ad",
30
+ "timing" : {
31
+ "duration" : 300,
32
+ "start" : "2014-01-08 06:50:00 +0000"
33
+ },
34
+ "reference" : 5966413090093319525
23
35
  }
24
36
 
@@ -30,6 +30,20 @@ describe BBC::Redux do
30
30
  expect(asset.start).to eq(DateTime.parse('2014-01-08 06:50:00 +0000'))
31
31
  expect(asset.uuid).to eq('26a141fc-8511-4fef-aa2b-af1d1de5a75a')
32
32
 
33
+ # Test crids
34
+ expect(asset.pcrid.class).to eq(BBC::Redux::Crid)
35
+ expect(asset.pcrid.content).to eq('crid://fp.bbc.co.uk/4CBRMV')
36
+ expect(asset.pcrid.description).to eq('DTG programme CRID')
37
+ expect(asset.pcrid.type).to eq('0x31')
38
+
39
+ expect(asset.scrid.class).to eq(BBC::Redux::Crid)
40
+ expect(asset.scrid.content).to eq('crid://fp.bbc.co.uk/LYRJ9T')
41
+ expect(asset.scrid.description).to eq('DTG series CRID')
42
+ expect(asset.scrid.type).to eq('0x32')
43
+
44
+ # Special test for broken crid response
45
+ expect(client.asset('5203338276492306280').crids).to eq([])
46
+
33
47
  # Test media url
34
48
  resp = client.http.head(asset.flv_url)
35
49
  expect(resp.code).to eq(200)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bbc_redux
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0.pre
4
+ version: 0.4.3.pre
5
5
  prerelease: 6
6
6
  platform: ruby
7
7
  authors:
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2014-04-23 00:00:00.000000000 Z
14
+ date: 2014-04-29 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rspec
@@ -159,6 +159,7 @@ files:
159
159
  - lib/bbc/redux/channel.rb
160
160
  - lib/bbc/redux/channel_category.rb
161
161
  - lib/bbc/redux/client.rb
162
+ - lib/bbc/redux/crid.rb
162
163
  - lib/bbc/redux/end_points.rb
163
164
  - lib/bbc/redux/key.rb
164
165
  - lib/bbc/redux/media_url.rb
@@ -195,6 +196,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
195
196
  - - ! '>='
196
197
  - !ruby/object:Gem::Version
197
198
  version: '0'
199
+ segments:
200
+ - 0
201
+ hash: 1134618896184121202
198
202
  required_rubygems_version: !ruby/object:Gem::Requirement
199
203
  none: false
200
204
  requirements: