trailer_vote-media_types 2.1.0 → 2.2.0
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.
- checksums.yaml +4 -4
- data/.gitignore +12 -12
- data/.rubocop.yml +29 -29
- data/.travis.yml +18 -18
- data/CHANGELOG.md +82 -82
- data/Gemfile +6 -6
- data/Gemfile.lock +5 -5
- data/README.md +118 -118
- data/Rakefile +12 -12
- data/bin/console +16 -16
- data/bin/setup +8 -8
- data/lib/trailer_vote/media_types/audio_fragment.rb +108 -108
- data/lib/trailer_vote/media_types/base_text.rb +22 -22
- data/lib/trailer_vote/media_types/carousel.rb +42 -42
- data/lib/trailer_vote/media_types/client_configuration.rb +35 -35
- data/lib/trailer_vote/media_types/configuration.rb +139 -139
- data/lib/trailer_vote/media_types/errors.rb +31 -31
- data/lib/trailer_vote/media_types/feedback.rb +50 -50
- data/lib/trailer_vote/media_types/feedback_listing.rb +49 -49
- data/lib/trailer_vote/media_types/fingerprint_binary.rb +67 -67
- data/lib/trailer_vote/media_types/interactive_player.rb +33 -33
- data/lib/trailer_vote/media_types/issue.rb +64 -64
- data/lib/trailer_vote/media_types/ordered_fragment.rb +35 -35
- data/lib/trailer_vote/media_types/partials/image_links.rb +30 -30
- data/lib/trailer_vote/media_types/persona.rb +47 -47
- data/lib/trailer_vote/media_types/place.rb +143 -143
- data/lib/trailer_vote/media_types/product.rb +191 -191
- data/lib/trailer_vote/media_types/product_image.rb +96 -96
- data/lib/trailer_vote/media_types/product_lookup.rb +37 -37
- data/lib/trailer_vote/media_types/product_place_link.rb +36 -36
- data/lib/trailer_vote/media_types/product_video.rb +100 -100
- data/lib/trailer_vote/media_types/products_listing.rb +43 -43
- data/lib/trailer_vote/media_types/push_consent.rb +44 -44
- data/lib/trailer_vote/media_types/push_manifest.rb +44 -44
- data/lib/trailer_vote/media_types/push_token_android.rb +41 -41
- data/lib/trailer_vote/media_types/push_token_index.rb +42 -42
- data/lib/trailer_vote/media_types/push_token_ios.rb +41 -41
- data/lib/trailer_vote/media_types/push_trivial_campaign.rb +23 -1
- data/lib/trailer_vote/media_types/release_push_campaign.rb +29 -2
- data/lib/trailer_vote/media_types/sentiment_feedback.rb +100 -100
- data/lib/trailer_vote/media_types/types/boolean.rb +15 -15
- data/lib/trailer_vote/media_types/types/formatted_url.rb +51 -51
- data/lib/trailer_vote/media_types/types/http_url.rb +23 -23
- data/lib/trailer_vote/media_types/types/influx_db_connection_url.rb +10 -10
- data/lib/trailer_vote/media_types/types/iso8601.rb +10 -10
- data/lib/trailer_vote/media_types/types/local_time.rb +11 -11
- data/lib/trailer_vote/media_types/types/product_data_type.rb +15 -15
- data/lib/trailer_vote/media_types/types/product_image_type.rb +25 -25
- data/lib/trailer_vote/media_types/types/product_movie_handler.rb +16 -16
- data/lib/trailer_vote/media_types/types/product_movie_type.rb +17 -17
- data/lib/trailer_vote/media_types/types/uuid_v4.rb +10 -10
- data/lib/trailer_vote/media_types/types/vote_value.rb +17 -17
- data/lib/trailer_vote/media_types/version.rb +1 -1
- data/trailer_vote-media_types.gemspec +2 -2
- metadata +7 -7
|
@@ -1,96 +1,96 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'media_types'
|
|
4
|
-
|
|
5
|
-
require_relative 'base_text'
|
|
6
|
-
require_relative 'types/product_image_type'
|
|
7
|
-
require_relative 'types/boolean'
|
|
8
|
-
require_relative 'types/iso8601'
|
|
9
|
-
require_relative 'types/http_url'
|
|
10
|
-
|
|
11
|
-
module TrailerVote
|
|
12
|
-
module MediaTypes
|
|
13
|
-
class ProductImage < BaseText
|
|
14
|
-
media_type 'product.image', defaults: { suffix: :json, version: 1 }
|
|
15
|
-
|
|
16
|
-
validations do
|
|
17
|
-
version_1_creation = ::MediaTypes::Scheme.new do
|
|
18
|
-
attribute :identifier, String
|
|
19
|
-
attribute :source_url, AnyOf(Types::HttpUrl, String)
|
|
20
|
-
attribute :expires_at, AllowNil(Types::Iso8601), optional: true
|
|
21
|
-
|
|
22
|
-
attribute :content_language, AllowNil(String), optional: true
|
|
23
|
-
attribute :content_region, AllowNil(String), optional: true
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
version_1_base = ::MediaTypes::Scheme.new do
|
|
27
|
-
attribute :updated_at, Types::Iso8601
|
|
28
|
-
|
|
29
|
-
merge version_1_creation
|
|
30
|
-
|
|
31
|
-
attribute :data do
|
|
32
|
-
attribute :processed, Types::Boolean
|
|
33
|
-
attribute :type, Types::ProductImageType
|
|
34
|
-
|
|
35
|
-
not_strict
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
link :self do
|
|
39
|
-
attribute :type, Types::ProductImageType
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
%i[original thumbnail xlarge large medium small xsmall].each do |size|
|
|
43
|
-
link size, allow_nil: true, optional: true do
|
|
44
|
-
attribute :content_digest, String
|
|
45
|
-
attribute :width, Numeric
|
|
46
|
-
attribute :height, Numeric
|
|
47
|
-
end
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
version 1 do
|
|
52
|
-
attribute :product_image do
|
|
53
|
-
merge version_1_base
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
view 'create' do
|
|
57
|
-
attribute :product_image do
|
|
58
|
-
merge version_1_creation
|
|
59
|
-
not_strict
|
|
60
|
-
end
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
view 'collection' do
|
|
64
|
-
attribute :product_images do
|
|
65
|
-
collection :_embedded, version_1_base, allow_empty: true
|
|
66
|
-
not_strict
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
view :index do
|
|
71
|
-
attribute :product_images do
|
|
72
|
-
collection :_index, allow_empty: true do
|
|
73
|
-
attribute :href, Types::HttpUrl
|
|
74
|
-
attribute :type, Types::ProductImageType
|
|
75
|
-
not_strict
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
not_strict
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
end
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
registrations :product_image do
|
|
85
|
-
view 'create', :create_product_image
|
|
86
|
-
view 'index', :product_image_urls
|
|
87
|
-
view 'collection', :product_images
|
|
88
|
-
|
|
89
|
-
versions 1
|
|
90
|
-
|
|
91
|
-
type_alias 'product-image'
|
|
92
|
-
type_alias 'image'
|
|
93
|
-
end
|
|
94
|
-
end
|
|
95
|
-
end
|
|
96
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'media_types'
|
|
4
|
+
|
|
5
|
+
require_relative 'base_text'
|
|
6
|
+
require_relative 'types/product_image_type'
|
|
7
|
+
require_relative 'types/boolean'
|
|
8
|
+
require_relative 'types/iso8601'
|
|
9
|
+
require_relative 'types/http_url'
|
|
10
|
+
|
|
11
|
+
module TrailerVote
|
|
12
|
+
module MediaTypes
|
|
13
|
+
class ProductImage < BaseText
|
|
14
|
+
media_type 'product.image', defaults: { suffix: :json, version: 1 }
|
|
15
|
+
|
|
16
|
+
validations do
|
|
17
|
+
version_1_creation = ::MediaTypes::Scheme.new do
|
|
18
|
+
attribute :identifier, String
|
|
19
|
+
attribute :source_url, AnyOf(Types::HttpUrl, String)
|
|
20
|
+
attribute :expires_at, AllowNil(Types::Iso8601), optional: true
|
|
21
|
+
|
|
22
|
+
attribute :content_language, AllowNil(String), optional: true
|
|
23
|
+
attribute :content_region, AllowNil(String), optional: true
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
version_1_base = ::MediaTypes::Scheme.new do
|
|
27
|
+
attribute :updated_at, Types::Iso8601
|
|
28
|
+
|
|
29
|
+
merge version_1_creation
|
|
30
|
+
|
|
31
|
+
attribute :data do
|
|
32
|
+
attribute :processed, Types::Boolean
|
|
33
|
+
attribute :type, Types::ProductImageType
|
|
34
|
+
|
|
35
|
+
not_strict
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
link :self do
|
|
39
|
+
attribute :type, Types::ProductImageType
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
%i[original thumbnail xlarge large medium small xsmall].each do |size|
|
|
43
|
+
link size, allow_nil: true, optional: true do
|
|
44
|
+
attribute :content_digest, String
|
|
45
|
+
attribute :width, Numeric
|
|
46
|
+
attribute :height, Numeric
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
version 1 do
|
|
52
|
+
attribute :product_image do
|
|
53
|
+
merge version_1_base
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
view 'create' do
|
|
57
|
+
attribute :product_image do
|
|
58
|
+
merge version_1_creation
|
|
59
|
+
not_strict
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
view 'collection' do
|
|
64
|
+
attribute :product_images do
|
|
65
|
+
collection :_embedded, version_1_base, allow_empty: true
|
|
66
|
+
not_strict
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
view :index do
|
|
71
|
+
attribute :product_images do
|
|
72
|
+
collection :_index, allow_empty: true do
|
|
73
|
+
attribute :href, Types::HttpUrl
|
|
74
|
+
attribute :type, Types::ProductImageType
|
|
75
|
+
not_strict
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
not_strict
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
registrations :product_image do
|
|
85
|
+
view 'create', :create_product_image
|
|
86
|
+
view 'index', :product_image_urls
|
|
87
|
+
view 'collection', :product_images
|
|
88
|
+
|
|
89
|
+
versions 1
|
|
90
|
+
|
|
91
|
+
type_alias 'product-image'
|
|
92
|
+
type_alias 'image'
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
end
|
|
@@ -1,37 +1,37 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require_relative 'base_text'
|
|
4
|
-
require 'media_types/scheme/any_of'
|
|
5
|
-
|
|
6
|
-
module TrailerVote
|
|
7
|
-
module MediaTypes
|
|
8
|
-
|
|
9
|
-
##
|
|
10
|
-
# Media Types for Product Lookups
|
|
11
|
-
#
|
|
12
|
-
# The product lookup is used to find products by means of an authority and identifier. An identifier **MUST** be
|
|
13
|
-
# unique for that authority. For example, on TMDb each movie has (at least) one identifier, but no two movies share
|
|
14
|
-
# a TMDb identifier.
|
|
15
|
-
#
|
|
16
|
-
# Each product on TrailerVote can have any number of authority-identifier pairs, and a client **SHOULD** lookup a
|
|
17
|
-
# product which each pair known simultaneously. For example, many movies on TMDb are also on IMDB and have an IMDB
|
|
18
|
-
# identifier.
|
|
19
|
-
#
|
|
20
|
-
class ProductLookup < BaseText
|
|
21
|
-
media_type 'product.lookup', defaults: { suffix: :json, version: 1 }
|
|
22
|
-
|
|
23
|
-
validations do
|
|
24
|
-
version 1 do
|
|
25
|
-
collection 'product_identifiers', expected_type: nil do
|
|
26
|
-
attribute :authority, String
|
|
27
|
-
attribute :identifier, String
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
registrations(:product_lookup) do
|
|
33
|
-
type_alias 'product-lookup'
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative 'base_text'
|
|
4
|
+
require 'media_types/scheme/any_of'
|
|
5
|
+
|
|
6
|
+
module TrailerVote
|
|
7
|
+
module MediaTypes
|
|
8
|
+
|
|
9
|
+
##
|
|
10
|
+
# Media Types for Product Lookups
|
|
11
|
+
#
|
|
12
|
+
# The product lookup is used to find products by means of an authority and identifier. An identifier **MUST** be
|
|
13
|
+
# unique for that authority. For example, on TMDb each movie has (at least) one identifier, but no two movies share
|
|
14
|
+
# a TMDb identifier.
|
|
15
|
+
#
|
|
16
|
+
# Each product on TrailerVote can have any number of authority-identifier pairs, and a client **SHOULD** lookup a
|
|
17
|
+
# product which each pair known simultaneously. For example, many movies on TMDb are also on IMDB and have an IMDB
|
|
18
|
+
# identifier.
|
|
19
|
+
#
|
|
20
|
+
class ProductLookup < BaseText
|
|
21
|
+
media_type 'product.lookup', defaults: { suffix: :json, version: 1 }
|
|
22
|
+
|
|
23
|
+
validations do
|
|
24
|
+
version 1 do
|
|
25
|
+
collection 'product_identifiers', expected_type: nil do
|
|
26
|
+
attribute :authority, String
|
|
27
|
+
attribute :identifier, String
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
registrations(:product_lookup) do
|
|
33
|
+
type_alias 'product-lookup'
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -1,36 +1,36 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require_relative 'base_text'
|
|
4
|
-
require_relative 'types/http_url'
|
|
5
|
-
|
|
6
|
-
module TrailerVote
|
|
7
|
-
module MediaTypes
|
|
8
|
-
class ProductPlaceLink < BaseText
|
|
9
|
-
media_type 'product_place_link', defaults: { suffix: :json, version: 1 }
|
|
10
|
-
|
|
11
|
-
validations do
|
|
12
|
-
version 1 do
|
|
13
|
-
|
|
14
|
-
attribute :product_place_link do
|
|
15
|
-
link :place
|
|
16
|
-
link :product
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
view 'create' do
|
|
20
|
-
attribute :place, Types::HttpUrl
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
registrations :product_place_link do
|
|
26
|
-
view 'collection', :product_place_links
|
|
27
|
-
view 'create', :create_product_place_link
|
|
28
|
-
view 'index', :product_place_link_urls
|
|
29
|
-
|
|
30
|
-
type_alias 'place_product_link'
|
|
31
|
-
type_alias 'place-product-link'
|
|
32
|
-
type_alias 'product-place-link'
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative 'base_text'
|
|
4
|
+
require_relative 'types/http_url'
|
|
5
|
+
|
|
6
|
+
module TrailerVote
|
|
7
|
+
module MediaTypes
|
|
8
|
+
class ProductPlaceLink < BaseText
|
|
9
|
+
media_type 'product_place_link', defaults: { suffix: :json, version: 1 }
|
|
10
|
+
|
|
11
|
+
validations do
|
|
12
|
+
version 1 do
|
|
13
|
+
|
|
14
|
+
attribute :product_place_link do
|
|
15
|
+
link :place
|
|
16
|
+
link :product
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
view 'create' do
|
|
20
|
+
attribute :place, Types::HttpUrl
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
registrations :product_place_link do
|
|
26
|
+
view 'collection', :product_place_links
|
|
27
|
+
view 'create', :create_product_place_link
|
|
28
|
+
view 'index', :product_place_link_urls
|
|
29
|
+
|
|
30
|
+
type_alias 'place_product_link'
|
|
31
|
+
type_alias 'place-product-link'
|
|
32
|
+
type_alias 'product-place-link'
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -1,100 +1,100 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'media_types'
|
|
4
|
-
|
|
5
|
-
require_relative 'base_text'
|
|
6
|
-
require_relative 'types/boolean'
|
|
7
|
-
require_relative 'types/product_movie_type'
|
|
8
|
-
require_relative 'types/product_movie_handler'
|
|
9
|
-
require_relative 'types/iso8601'
|
|
10
|
-
require_relative 'types/http_url'
|
|
11
|
-
|
|
12
|
-
module TrailerVote
|
|
13
|
-
module MediaTypes
|
|
14
|
-
class ProductVideo < BaseText
|
|
15
|
-
media_type 'product.video', defaults: { suffix: :json, version: 1 }
|
|
16
|
-
|
|
17
|
-
validations do
|
|
18
|
-
version 1 do
|
|
19
|
-
version_1_creation = ::MediaTypes::Scheme.new do
|
|
20
|
-
attribute :identifier, String
|
|
21
|
-
attribute :source_url, AnyOf(Types::HttpUrl, String)
|
|
22
|
-
attribute :expires_at, AllowNil(Types::Iso8601), optional: true
|
|
23
|
-
|
|
24
|
-
attribute :content_language, AllowNil(String), optional: true
|
|
25
|
-
attribute :content_region, AllowNil(String), optional: true
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
version_1_base = ::MediaTypes::Scheme.new do
|
|
29
|
-
attribute :updated_at, Types::Iso8601
|
|
30
|
-
|
|
31
|
-
merge version_1_creation
|
|
32
|
-
|
|
33
|
-
attribute :data do
|
|
34
|
-
attribute :processed, Types::Boolean
|
|
35
|
-
attribute :transcoded, Types::Boolean
|
|
36
|
-
attribute :type, Types::ProductMovieType
|
|
37
|
-
attribute :as, Types::ProductMovieHandler
|
|
38
|
-
|
|
39
|
-
not_strict
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
link :self do
|
|
43
|
-
attribute :type, Types::ProductMovieType
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
link :audio_fragment do
|
|
47
|
-
attribute :content_digest, String
|
|
48
|
-
end
|
|
49
|
-
link :direct, allow_nil: true
|
|
50
|
-
|
|
51
|
-
# link :original do
|
|
52
|
-
# attribute :content_digest, String
|
|
53
|
-
# attribute :width, Numeric
|
|
54
|
-
# attribute :height, Numeric
|
|
55
|
-
# end
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
attribute :product_video do
|
|
59
|
-
merge version_1_base
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
view 'create' do
|
|
63
|
-
attribute :product_video do
|
|
64
|
-
merge version_1_creation
|
|
65
|
-
not_strict
|
|
66
|
-
end
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
view 'collection' do
|
|
70
|
-
attribute :product_videos do
|
|
71
|
-
collection :_embedded, version_1_base, allow_empty: true
|
|
72
|
-
not_strict
|
|
73
|
-
end
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
view :index do
|
|
77
|
-
attribute :product_videos do
|
|
78
|
-
collection :_index, allow_empty: true do
|
|
79
|
-
attribute :href, Types::HttpUrl
|
|
80
|
-
attribute :type, Types::ProductMovieType
|
|
81
|
-
not_strict
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
not_strict
|
|
85
|
-
end
|
|
86
|
-
end
|
|
87
|
-
end
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
registrations :product_video do
|
|
91
|
-
view 'create', :create_product_video
|
|
92
|
-
view 'index', :product_video_urls
|
|
93
|
-
view 'collection', :product_videos
|
|
94
|
-
|
|
95
|
-
type_alias 'product-video'
|
|
96
|
-
type_alias 'video'
|
|
97
|
-
end
|
|
98
|
-
end
|
|
99
|
-
end
|
|
100
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'media_types'
|
|
4
|
+
|
|
5
|
+
require_relative 'base_text'
|
|
6
|
+
require_relative 'types/boolean'
|
|
7
|
+
require_relative 'types/product_movie_type'
|
|
8
|
+
require_relative 'types/product_movie_handler'
|
|
9
|
+
require_relative 'types/iso8601'
|
|
10
|
+
require_relative 'types/http_url'
|
|
11
|
+
|
|
12
|
+
module TrailerVote
|
|
13
|
+
module MediaTypes
|
|
14
|
+
class ProductVideo < BaseText
|
|
15
|
+
media_type 'product.video', defaults: { suffix: :json, version: 1 }
|
|
16
|
+
|
|
17
|
+
validations do
|
|
18
|
+
version 1 do
|
|
19
|
+
version_1_creation = ::MediaTypes::Scheme.new do
|
|
20
|
+
attribute :identifier, String
|
|
21
|
+
attribute :source_url, AnyOf(Types::HttpUrl, String)
|
|
22
|
+
attribute :expires_at, AllowNil(Types::Iso8601), optional: true
|
|
23
|
+
|
|
24
|
+
attribute :content_language, AllowNil(String), optional: true
|
|
25
|
+
attribute :content_region, AllowNil(String), optional: true
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
version_1_base = ::MediaTypes::Scheme.new do
|
|
29
|
+
attribute :updated_at, Types::Iso8601
|
|
30
|
+
|
|
31
|
+
merge version_1_creation
|
|
32
|
+
|
|
33
|
+
attribute :data do
|
|
34
|
+
attribute :processed, Types::Boolean
|
|
35
|
+
attribute :transcoded, Types::Boolean
|
|
36
|
+
attribute :type, Types::ProductMovieType
|
|
37
|
+
attribute :as, Types::ProductMovieHandler
|
|
38
|
+
|
|
39
|
+
not_strict
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
link :self do
|
|
43
|
+
attribute :type, Types::ProductMovieType
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
link :audio_fragment do
|
|
47
|
+
attribute :content_digest, String
|
|
48
|
+
end
|
|
49
|
+
link :direct, allow_nil: true
|
|
50
|
+
|
|
51
|
+
# link :original do
|
|
52
|
+
# attribute :content_digest, String
|
|
53
|
+
# attribute :width, Numeric
|
|
54
|
+
# attribute :height, Numeric
|
|
55
|
+
# end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
attribute :product_video do
|
|
59
|
+
merge version_1_base
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
view 'create' do
|
|
63
|
+
attribute :product_video do
|
|
64
|
+
merge version_1_creation
|
|
65
|
+
not_strict
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
view 'collection' do
|
|
70
|
+
attribute :product_videos do
|
|
71
|
+
collection :_embedded, version_1_base, allow_empty: true
|
|
72
|
+
not_strict
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
view :index do
|
|
77
|
+
attribute :product_videos do
|
|
78
|
+
collection :_index, allow_empty: true do
|
|
79
|
+
attribute :href, Types::HttpUrl
|
|
80
|
+
attribute :type, Types::ProductMovieType
|
|
81
|
+
not_strict
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
not_strict
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
registrations :product_video do
|
|
91
|
+
view 'create', :create_product_video
|
|
92
|
+
view 'index', :product_video_urls
|
|
93
|
+
view 'collection', :product_videos
|
|
94
|
+
|
|
95
|
+
type_alias 'product-video'
|
|
96
|
+
type_alias 'video'
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
end
|
|
@@ -1,43 +1,43 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require_relative 'base_text'
|
|
4
|
-
require_relative 'partials/image_links'
|
|
5
|
-
require_relative 'types/iso8601'
|
|
6
|
-
|
|
7
|
-
module TrailerVote
|
|
8
|
-
module MediaTypes
|
|
9
|
-
class ProductsListing < BaseText
|
|
10
|
-
media_type 'products_listing'
|
|
11
|
-
|
|
12
|
-
defaults do
|
|
13
|
-
suffix :json
|
|
14
|
-
version 1
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
validations do
|
|
18
|
-
version 1 do
|
|
19
|
-
attribute :products_listing do
|
|
20
|
-
collection :items, allow_empty: true do
|
|
21
|
-
attribute :title, AllowNil(String)
|
|
22
|
-
attribute :publish_date, AllowNil(Types::Iso8601)
|
|
23
|
-
|
|
24
|
-
link :product
|
|
25
|
-
|
|
26
|
-
attribute :image, expected_type: AllowNil(::Hash), allow_empty: true, optional: true do
|
|
27
|
-
attribute :_embedded, expected_type: AllowNil(::Hash), allow_empty: true do
|
|
28
|
-
merge Partials::IMAGE_LINKS
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
link :self
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
registrations :products_listing do
|
|
39
|
-
type_alias 'products-listing'
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative 'base_text'
|
|
4
|
+
require_relative 'partials/image_links'
|
|
5
|
+
require_relative 'types/iso8601'
|
|
6
|
+
|
|
7
|
+
module TrailerVote
|
|
8
|
+
module MediaTypes
|
|
9
|
+
class ProductsListing < BaseText
|
|
10
|
+
media_type 'products_listing'
|
|
11
|
+
|
|
12
|
+
defaults do
|
|
13
|
+
suffix :json
|
|
14
|
+
version 1
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
validations do
|
|
18
|
+
version 1 do
|
|
19
|
+
attribute :products_listing do
|
|
20
|
+
collection :items, allow_empty: true do
|
|
21
|
+
attribute :title, AllowNil(String)
|
|
22
|
+
attribute :publish_date, AllowNil(Types::Iso8601)
|
|
23
|
+
|
|
24
|
+
link :product
|
|
25
|
+
|
|
26
|
+
attribute :image, expected_type: AllowNil(::Hash), allow_empty: true, optional: true do
|
|
27
|
+
attribute :_embedded, expected_type: AllowNil(::Hash), allow_empty: true do
|
|
28
|
+
merge Partials::IMAGE_LINKS
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
link :self
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
registrations :products_listing do
|
|
39
|
+
type_alias 'products-listing'
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|