wildcard-pair 0.3.1 → 0.4.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/wildcard-pair/Article.rb +3 -62
- data/lib/wildcard-pair/ArticleCard.rb +5 -39
- data/lib/wildcard-pair/Card.rb +82 -0
- data/lib/wildcard-pair/Color.rb +4 -32
- data/lib/wildcard-pair/Creator.rb +13 -0
- data/lib/wildcard-pair/ImageCard.rb +52 -0
- data/lib/wildcard-pair/LinkCard.rb +40 -0
- data/lib/wildcard-pair/Media/Image.rb +15 -26
- data/lib/wildcard-pair/Media/Video.rb +4 -28
- data/lib/wildcard-pair/Object.rb +35 -0
- data/lib/wildcard-pair/ObjectWithMedia.rb +39 -0
- data/lib/wildcard-pair/Offer.rb +2 -32
- data/lib/wildcard-pair/Price.rb +3 -30
- data/lib/wildcard-pair/Product.rb +2 -31
- data/lib/wildcard-pair/ProductCard.rb +5 -37
- data/lib/wildcard-pair/Rating.rb +2 -31
- data/lib/wildcard-pair/Review.rb +2 -59
- data/lib/wildcard-pair/ReviewCard.rb +5 -38
- data/lib/wildcard-pair/Summary.rb +13 -0
- data/lib/wildcard-pair/SummaryCard.rb +40 -0
- data/lib/wildcard-pair/Target.rb +12 -0
- data/lib/wildcard-pair/VideoCard.rb +6 -40
- metadata +12 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 00458fca5a7f7e4b7a07f28f969214f1e595afa3
|
4
|
+
data.tar.gz: f6cc5d383fb3a2541c85248c95b0bf10a2bd518d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7c538305caef48cd730255822332f46f83283367cb9846f19ee480e2f456f070febee96eede8914040e928684a802cb2435017d9a3ebf3d6c326617d7837ecf3
|
7
|
+
data.tar.gz: 04f44392320122bf777549b00747a2d7ec39b22cdb755665c171dfbc208754434ff5c7849c70061bef3567e36127f3c7cac9d139b97c3b1de6cf521bb6bf8772
|
@@ -1,16 +1,9 @@
|
|
1
1
|
#!/usr/bin/env ruby -wKU
|
2
2
|
|
3
|
-
|
4
|
-
require_relative 'hash_mappable.rb'
|
5
|
-
require_relative 'Media.rb'
|
3
|
+
require_relative 'ObjectWithMedia.rb'
|
6
4
|
|
7
5
|
module WildcardPair
|
8
|
-
class Article
|
9
|
-
|
10
|
-
include ActiveModel::Validations
|
11
|
-
include ActiveModel::Serializers::JSON
|
12
|
-
include WildcardPair::HashMappable
|
13
|
-
include WildcardPair::Media
|
6
|
+
class Article < WildcardPair::ObjectWithMedia
|
14
7
|
|
15
8
|
# required fields
|
16
9
|
attr_accessor :title, :html_content
|
@@ -18,21 +11,8 @@ module WildcardPair
|
|
18
11
|
attr_accessor :publication_date, :abstract_content, :source, :author,
|
19
12
|
:updated_date, :is_breaking, :app_link_android, :app_link_ios
|
20
13
|
|
21
|
-
attr_reader :media
|
22
|
-
|
23
14
|
validates :title, presence: true
|
24
|
-
validates :
|
25
|
-
validate :validate_media
|
26
|
-
|
27
|
-
def initialize(attributes = {})
|
28
|
-
attributes.each do |name, value|
|
29
|
-
send("#{name}=", value)
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
def attributes
|
34
|
-
instance_values
|
35
|
-
end
|
15
|
+
validates :abstract_content, presence: true
|
36
16
|
|
37
17
|
def metatags=(metatags)
|
38
18
|
if metatags.nil? || !metatags.is_a?(Hash)
|
@@ -47,44 +27,5 @@ module WildcardPair
|
|
47
27
|
self.app_link_ios=metatags['applink_ios']
|
48
28
|
self.app_link_android=metatags['applink_android']
|
49
29
|
end
|
50
|
-
|
51
|
-
def media=(media)
|
52
|
-
if media.is_a? Video
|
53
|
-
@media = map_hash(media, Media::Video.new)
|
54
|
-
elsif media.is_a? Image
|
55
|
-
@media = map_hash(media, Media::Image.new)
|
56
|
-
elsif media.is_a? Hash
|
57
|
-
if media[:type] == 'video'
|
58
|
-
@media = map_hash(media, Media::Video.new)
|
59
|
-
elsif media[:type] == 'image'
|
60
|
-
@media = map_hash(media, Media::Image.new)
|
61
|
-
else
|
62
|
-
@media = media
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
def validate_media
|
68
|
-
if @media.nil? then return end
|
69
|
-
|
70
|
-
if !@media.is_a? Media or !@media.valid?
|
71
|
-
errors.add(:media, "Media is invalid")
|
72
|
-
return false
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
#exclude validation fields in the JSON output
|
77
|
-
def as_json(options={})
|
78
|
-
super(options.merge({:except => [:errors, :validation_context]}))
|
79
|
-
end
|
80
|
-
|
81
|
-
def to_json(options={})
|
82
|
-
if self.valid?
|
83
|
-
super(options)
|
84
|
-
else
|
85
|
-
raise "Article is not valid - please remedy the following errors:" << self.errors.messages.to_s
|
86
|
-
end
|
87
|
-
end
|
88
|
-
|
89
30
|
end
|
90
31
|
end
|
@@ -1,44 +1,24 @@
|
|
1
1
|
#!/usr/bin/env ruby -wKU
|
2
2
|
|
3
|
-
|
4
|
-
require_relative 'hash_mappable.rb'
|
5
|
-
require_relative 'Media.rb'
|
3
|
+
require_relative 'Card.rb'
|
6
4
|
|
7
5
|
module WildcardPair
|
8
|
-
class ArticleCard
|
6
|
+
class ArticleCard < WildcardPair::Card
|
9
7
|
private
|
10
8
|
|
11
|
-
attr_accessor :article
|
9
|
+
attr_accessor :article
|
12
10
|
|
13
11
|
public
|
14
12
|
|
15
|
-
include ActiveModel::Validations
|
16
|
-
include ActiveModel::Serializers::JSON
|
17
|
-
include WildcardPair::HashMappable
|
18
13
|
include WildcardPair::Media
|
19
14
|
|
20
|
-
|
21
|
-
attr_reader :article, :card_type, :pair_version
|
15
|
+
attr_reader :article
|
22
16
|
|
23
|
-
validates :web_url, presence: true
|
24
17
|
validate :validate_article
|
25
18
|
|
26
19
|
def initialize(attributes = {})
|
27
|
-
|
28
|
-
send("#{name}=", value)
|
29
|
-
end
|
30
|
-
|
20
|
+
super
|
31
21
|
@card_type = 'article'
|
32
|
-
|
33
|
-
if !Gem.loaded_specs['wildcard-pair'].nil?
|
34
|
-
@pair_version = Gem.loaded_specs['wildcard-pair'].version.to_s
|
35
|
-
else
|
36
|
-
@pair_version = "unknown"
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
def attributes
|
41
|
-
instance_values
|
42
22
|
end
|
43
23
|
|
44
24
|
def populate_from_metatags(web_url)
|
@@ -65,20 +45,6 @@ module WildcardPair
|
|
65
45
|
end
|
66
46
|
end
|
67
47
|
end
|
68
|
-
|
69
|
-
#exclude validation fields in the JSON output
|
70
|
-
def as_json(options={})
|
71
|
-
super(options.merge({:except => [:errors, :validation_context]}))
|
72
|
-
end
|
73
|
-
|
74
|
-
def to_json(options={})
|
75
|
-
if self.valid?
|
76
|
-
super(options)
|
77
|
-
else
|
78
|
-
raise "Article Card is not valid - please remedy the following errors:" << self.errors.messages.to_s
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
48
|
end
|
83
49
|
end
|
84
50
|
|
@@ -0,0 +1,82 @@
|
|
1
|
+
require 'active_model'
|
2
|
+
require_relative 'hash_mappable.rb'
|
3
|
+
require_relative 'Creator.rb'
|
4
|
+
|
5
|
+
module WildcardPair
|
6
|
+
class Card
|
7
|
+
private
|
8
|
+
|
9
|
+
attr_accessor :card_type, :pair_version, :creator
|
10
|
+
|
11
|
+
public
|
12
|
+
|
13
|
+
include ActiveModel::Validations
|
14
|
+
include ActiveModel::Serializers::JSON
|
15
|
+
include WildcardPair::HashMappable
|
16
|
+
|
17
|
+
attr_accessor :web_url, :keywords, :app_link_android, :app_link_ios
|
18
|
+
attr_reader :card_type, :pair_version, :creator
|
19
|
+
|
20
|
+
validates :web_url, presence: true
|
21
|
+
validate :validate_keywords
|
22
|
+
validate :validate_creator
|
23
|
+
|
24
|
+
def initialize(attributes = {})
|
25
|
+
attributes.each do |name, value|
|
26
|
+
send("#{name}=", value)
|
27
|
+
end
|
28
|
+
|
29
|
+
if !Gem.loaded_specs['wildcard-pair'].nil?
|
30
|
+
@pair_version = Gem.loaded_specs['wildcard-pair'].version.to_s
|
31
|
+
else
|
32
|
+
@pair_version = "unknown"
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def attributes
|
37
|
+
instance_values
|
38
|
+
end
|
39
|
+
|
40
|
+
def validate_keywords
|
41
|
+
if !@keywords.nil? and !@keywords.instance_of? Array
|
42
|
+
errors.add(:keywords, "Keywords must be an array of strings")
|
43
|
+
return
|
44
|
+
end
|
45
|
+
|
46
|
+
if !@keywords.nil?
|
47
|
+
@keywords.each do |k|
|
48
|
+
if !k.instance_of? String
|
49
|
+
errors.add(:keywords, "Keywords must be an array of strings")
|
50
|
+
return
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def creator=(creator)
|
57
|
+
@creator = map_hash(creator, WildcardPair::Creator.new)
|
58
|
+
end
|
59
|
+
|
60
|
+
def validate_creator
|
61
|
+
if @creator.nil? then return end
|
62
|
+
|
63
|
+
if !@creator.is_a? Creator or !@creator.valid?
|
64
|
+
errors.add(:creator, "Creator is invalid")
|
65
|
+
return false
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
#exclude validation fields in the JSON output
|
70
|
+
def as_json(options={})
|
71
|
+
super(options.merge({:except => [:errors, :validation_context]}))
|
72
|
+
end
|
73
|
+
|
74
|
+
def to_json(options={})
|
75
|
+
if self.valid?
|
76
|
+
super(options)
|
77
|
+
else
|
78
|
+
raise self.card_type.capitalize + " Card is not valid - please remedy the following errors:" << self.errors.messages.to_s
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
data/lib/wildcard-pair/Color.rb
CHANGED
@@ -1,41 +1,13 @@
|
|
1
|
+
#!/usr/bin/env ruby -wKU
|
1
2
|
|
2
|
-
|
3
|
-
require_relative 'hash_mappable.rb'
|
3
|
+
require_relative 'Object.rb'
|
4
4
|
|
5
5
|
module WildcardPair
|
6
|
-
class Color
|
7
|
-
include ActiveModel::Validations
|
8
|
-
include ActiveModel::Serializers::JSON
|
9
|
-
include WildcardPair::HashMappable
|
6
|
+
class Color < WildcardPair::Object
|
10
7
|
|
11
8
|
attr_accessor :display_name, :swatch_url, :value, :mapping_color
|
12
9
|
|
10
|
+
validates :display_name, presence: true
|
13
11
|
validates :mapping_color, allow_nil: true, inclusion: {in: %w(beige black blue bronze brown gold green gray metallic multicolored offwhite orange pink purple red silver transparent turquoise white yellow)}
|
14
|
-
|
15
|
-
def initialize(attributes = {})
|
16
|
-
|
17
|
-
attributes.each do |name, value|
|
18
|
-
send("#{name}=", value)
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
def attributes
|
23
|
-
instance_values
|
24
|
-
end
|
25
|
-
|
26
|
-
#exclude validation fields in the JSON output
|
27
|
-
def as_json(options={})
|
28
|
-
super(options.merge({:except => [:errors, :validation_context]}))
|
29
|
-
end
|
30
|
-
|
31
|
-
|
32
|
-
def to_json(options = {})
|
33
|
-
if self.valid?
|
34
|
-
super(options)
|
35
|
-
else
|
36
|
-
raise "Color is not valid - please remedy the following errors:" << self.errors.messages.to_s
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
12
|
end
|
41
13
|
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
#!/usr/bin/env ruby -wKU
|
2
|
+
|
3
|
+
require_relative 'Object.rb'
|
4
|
+
|
5
|
+
module WildcardPair
|
6
|
+
class Creator < WildcardPair::Object
|
7
|
+
|
8
|
+
attr_accessor :name, :favicon, :ios_app_store_url, :android_app_store_url, :url
|
9
|
+
|
10
|
+
validates :name, presence: true
|
11
|
+
validates :favicon, presence: true
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
#!/usr/bin/env ruby -wKU
|
2
|
+
|
3
|
+
require_relative 'Card.rb'
|
4
|
+
|
5
|
+
module WildcardPair
|
6
|
+
class ImageCard < WildcardPair::Card
|
7
|
+
private
|
8
|
+
|
9
|
+
attr_accessor :media
|
10
|
+
|
11
|
+
public
|
12
|
+
|
13
|
+
include WildcardPair::Media
|
14
|
+
|
15
|
+
attr_reader :media
|
16
|
+
|
17
|
+
validate :validate_media
|
18
|
+
|
19
|
+
def initialize(attributes = {})
|
20
|
+
super
|
21
|
+
@card_type = 'image'
|
22
|
+
end
|
23
|
+
|
24
|
+
def populate_from_metatags(web_url)
|
25
|
+
@web_url=web_url
|
26
|
+
metatags = WildcardPair::ExtractMetaTags.extract(@web_url)
|
27
|
+
|
28
|
+
##now that we've extracted metatags, let's create an Image object with it
|
29
|
+
self.media=WildcardPair::Media::Image.new metatags: metatags
|
30
|
+
self.app_link_ios = metatags['applink_ios']
|
31
|
+
self.app_link_android = metatags['applink_android']
|
32
|
+
end
|
33
|
+
|
34
|
+
def media=(media)
|
35
|
+
@media = map_hash(media, WildcardPair::Media::Image.new)
|
36
|
+
end
|
37
|
+
|
38
|
+
def validate_media
|
39
|
+
if @media.nil? || !@media.is_a?(Image)
|
40
|
+
errors.add(:media, "An image is required")
|
41
|
+
return
|
42
|
+
end
|
43
|
+
|
44
|
+
if !@media.valid?
|
45
|
+
@media.errors.each do |error, msg|
|
46
|
+
errors["media[%s]" % error] = msg = msg
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
#!/usr/bin/env ruby -wKU
|
2
|
+
|
3
|
+
require_relative 'Card.rb'
|
4
|
+
|
5
|
+
module WildcardPair
|
6
|
+
class LinkCard < WildcardPair::Card
|
7
|
+
private
|
8
|
+
|
9
|
+
attr_accessor :target
|
10
|
+
|
11
|
+
public
|
12
|
+
|
13
|
+
attr_reader :target
|
14
|
+
|
15
|
+
validate :validate_target
|
16
|
+
|
17
|
+
def initialize(attributes = {})
|
18
|
+
super
|
19
|
+
@card_type = 'link'
|
20
|
+
end
|
21
|
+
|
22
|
+
def target=(target)
|
23
|
+
@target = map_hash(target, WildcardPair::Target.new)
|
24
|
+
end
|
25
|
+
|
26
|
+
def validate_target
|
27
|
+
if @target.nil? || !@target.is_a?(Target)
|
28
|
+
errors.add(:target, "A target is required")
|
29
|
+
return
|
30
|
+
end
|
31
|
+
|
32
|
+
if !@target.valid?
|
33
|
+
@target.errors.each do |error, msg|
|
34
|
+
errors["media[%s]" % error] = msg = msg
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
end
|
@@ -1,46 +1,35 @@
|
|
1
1
|
#!/usr/bin/env ruby -wKU
|
2
2
|
|
3
|
-
require 'active_model'
|
4
|
-
require_relative '../hash_mappable.rb'
|
5
3
|
require_relative '../Media.rb'
|
4
|
+
require_relative '../Object.rb'
|
6
5
|
|
7
6
|
module WildcardPair::Media
|
8
|
-
class Image
|
7
|
+
class Image < WildcardPair::Object
|
9
8
|
|
10
|
-
include ActiveModel::Validations
|
11
|
-
include ActiveModel::Serializers::JSON
|
12
|
-
include WildcardPair::HashMappable
|
13
9
|
include WildcardPair::Media
|
14
10
|
|
15
|
-
attr_accessor :image_url, :image_caption, :type
|
11
|
+
attr_accessor :image_url, :image_caption, :type,
|
12
|
+
:title, :author, :width, :height, :publication_date
|
16
13
|
|
17
14
|
validates :image_url, presence: true
|
18
15
|
validates :type, presence: true, inclusion: {in: %w(image), message: 'incorrect media type specified'}
|
16
|
+
validates :width, allow_nil: true, numericality: {only_integer: true, greater_than_or_equal_to: 0}
|
17
|
+
validates :height, allow_nil: true, numericality: {only_integer: true, greater_than_or_equal_to: 0}
|
19
18
|
|
20
19
|
def initialize(attributes = {})
|
21
|
-
|
22
|
-
send("#{name}=", value)
|
23
|
-
end
|
24
|
-
|
20
|
+
super
|
25
21
|
@type = 'image'
|
26
22
|
end
|
27
23
|
|
28
|
-
def
|
29
|
-
|
30
|
-
|
24
|
+
def metatags=(metatags)
|
25
|
+
if metatags.nil? || !metatags.is_a?(Hash)
|
26
|
+
return
|
27
|
+
end
|
31
28
|
|
32
|
-
|
33
|
-
|
34
|
-
|
29
|
+
#see what you can set based on metatags
|
30
|
+
self.title=metatags['title']
|
31
|
+
self.image_caption=metatags['description']
|
32
|
+
self.image_url=metatags['image_url']
|
35
33
|
end
|
36
|
-
|
37
|
-
def to_json(options={})
|
38
|
-
if self.valid?
|
39
|
-
super(options)
|
40
|
-
else
|
41
|
-
raise "Image is not valid - please remedy the following errors:" << self.errors.messages.to_s
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
34
|
end
|
46
35
|
end
|
@@ -1,14 +1,11 @@
|
|
1
1
|
#!/usr/bin/env ruby -wKU
|
2
2
|
|
3
|
-
|
4
|
-
require_relative '../
|
3
|
+
require_relative '../Media.rb'
|
4
|
+
require_relative '../Object.rb'
|
5
5
|
|
6
6
|
module WildcardPair::Media
|
7
|
-
class Video
|
7
|
+
class Video < WildcardPair::Object
|
8
8
|
|
9
|
-
include ActiveModel::Validations
|
10
|
-
include ActiveModel::Serializers::JSON
|
11
|
-
include WildcardPair::HashMappable
|
12
9
|
include WildcardPair::Media
|
13
10
|
|
14
11
|
# required fields
|
@@ -25,17 +22,10 @@ module WildcardPair::Media
|
|
25
22
|
validates :type, presence: true, inclusion: {in: %w(video), message: 'incorrect media type specified'}
|
26
23
|
|
27
24
|
def initialize(attributes = {})
|
28
|
-
|
29
|
-
send("#{name}=", value)
|
30
|
-
end
|
31
|
-
|
25
|
+
super
|
32
26
|
@type = 'video'
|
33
27
|
end
|
34
28
|
|
35
|
-
def attributes
|
36
|
-
instance_values
|
37
|
-
end
|
38
|
-
|
39
29
|
def metatags=(metatags)
|
40
30
|
if metatags.nil? || !metatags.is_a?(Hash)
|
41
31
|
return
|
@@ -52,19 +42,5 @@ module WildcardPair::Media
|
|
52
42
|
self.app_link_ios=metatags['applink_ios']
|
53
43
|
self.app_link_android=metatags['applink_android']
|
54
44
|
end
|
55
|
-
|
56
|
-
#exclude validation fields in the JSON output
|
57
|
-
def as_json(options={})
|
58
|
-
super(options.merge({:except => [:errors, :validation_context]}))
|
59
|
-
end
|
60
|
-
|
61
|
-
def to_json(options={})
|
62
|
-
if self.valid?
|
63
|
-
super(options)
|
64
|
-
else
|
65
|
-
raise "Video is not valid - please remedy the following errors:" << self.errors.messages.to_s
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
45
|
end
|
70
46
|
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
#!/usr/bin/env ruby -wKU
|
2
|
+
|
3
|
+
require 'active_model'
|
4
|
+
require_relative 'hash_mappable.rb'
|
5
|
+
|
6
|
+
module WildcardPair
|
7
|
+
class Object
|
8
|
+
include ActiveModel::Validations
|
9
|
+
include ActiveModel::Serializers::JSON
|
10
|
+
include WildcardPair::HashMappable
|
11
|
+
|
12
|
+
def initialize(attributes = {})
|
13
|
+
attributes.each do |name, value|
|
14
|
+
send("#{name}=", value)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def attributes
|
19
|
+
instance_values
|
20
|
+
end
|
21
|
+
|
22
|
+
#exclude validation fields in the JSON output
|
23
|
+
def as_json(options={})
|
24
|
+
super(options.merge({:except => [:errors, :validation_context]}))
|
25
|
+
end
|
26
|
+
|
27
|
+
def to_json(options={})
|
28
|
+
if self.valid?
|
29
|
+
super(options)
|
30
|
+
else
|
31
|
+
raise self.class.to_s + " is not valid - please remedy the following errors:" << self.errors.messages.to_s
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
#!/usr/bin/env ruby -wKU
|
2
|
+
|
3
|
+
require_relative 'Object.rb'
|
4
|
+
require_relative 'Media.rb'
|
5
|
+
|
6
|
+
module WildcardPair
|
7
|
+
class ObjectWithMedia < WildcardPair::Object
|
8
|
+
|
9
|
+
include WildcardPair::Media
|
10
|
+
|
11
|
+
attr_reader :media
|
12
|
+
validate :validate_media
|
13
|
+
|
14
|
+
def media=(media)
|
15
|
+
if media.is_a? Video
|
16
|
+
@media = map_hash(media, Media::Video.new)
|
17
|
+
elsif media.is_a? Image
|
18
|
+
@media = map_hash(media, Media::Image.new)
|
19
|
+
elsif media.is_a? Hash
|
20
|
+
if media[:type] == 'video'
|
21
|
+
@media = map_hash(media, Media::Video.new)
|
22
|
+
elsif media[:type] == 'image'
|
23
|
+
@media = map_hash(media, Media::Image.new)
|
24
|
+
else
|
25
|
+
@media = media
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def validate_media
|
31
|
+
if @media.nil? then return end
|
32
|
+
|
33
|
+
if !@media.is_a? Media or !@media.valid?
|
34
|
+
errors.add(:media, "Media is invalid")
|
35
|
+
return false
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
data/lib/wildcard-pair/Offer.rb
CHANGED
@@ -1,12 +1,7 @@
|
|
1
|
-
|
2
|
-
require 'active_model'
|
3
|
-
require_relative 'hash_mappable.rb'
|
1
|
+
require_relative 'Object.rb'
|
4
2
|
|
5
3
|
module WildcardPair
|
6
|
-
class Offer
|
7
|
-
include ActiveModel::Validations
|
8
|
-
include ActiveModel::Serializers::JSON
|
9
|
-
include WildcardPair::HashMappable
|
4
|
+
class Offer < WildcardPair::Object
|
10
5
|
|
11
6
|
attr_accessor :description, :availability, :quantity, :weight, :weight_units, :offer_id, :sale_start_date, :sale_end_date, :expiration_date
|
12
7
|
|
@@ -19,12 +14,6 @@ module WildcardPair
|
|
19
14
|
validates :quantity, allow_nil: true, numericality: {only_integer: true, greater_than_or_equal_to: 0}
|
20
15
|
|
21
16
|
validate :validatePrices
|
22
|
-
|
23
|
-
def initialize(attributes = {})
|
24
|
-
attributes.each do |name, value|
|
25
|
-
send("#{name}=", value)
|
26
|
-
end
|
27
|
-
end
|
28
17
|
|
29
18
|
def metatags=(metatags)
|
30
19
|
if metatags.nil? || !metatags.is_a?(Hash)
|
@@ -49,10 +38,6 @@ module WildcardPair
|
|
49
38
|
@shipping_cost = map_hash(shipping_cost, WildcardPair::Price.new)
|
50
39
|
end
|
51
40
|
|
52
|
-
def attributes
|
53
|
-
instance_values
|
54
|
-
end
|
55
|
-
|
56
41
|
def geographic_availability=(geographic_availability)
|
57
42
|
@geographic_availability ||= Array.new
|
58
43
|
|
@@ -83,20 +68,5 @@ module WildcardPair
|
|
83
68
|
end
|
84
69
|
end
|
85
70
|
end
|
86
|
-
|
87
|
-
#exclude validation fields in the JSON output
|
88
|
-
def as_json(options={})
|
89
|
-
super(options.merge({:except => [:errors, :validation_context]}))
|
90
|
-
end
|
91
|
-
|
92
|
-
|
93
|
-
def to_json(options = {})
|
94
|
-
if self.valid?
|
95
|
-
super(options)
|
96
|
-
else
|
97
|
-
raise "Offer is not valid - please remedy the following errors:" << self.errors.messages.to_s
|
98
|
-
end
|
99
|
-
end
|
100
|
-
|
101
71
|
end
|
102
72
|
end
|
data/lib/wildcard-pair/Price.rb
CHANGED
@@ -1,44 +1,17 @@
|
|
1
|
-
|
2
|
-
require_relative 'hash_mappable.rb'
|
3
|
-
require 'active_model'
|
1
|
+
require_relative 'Object.rb'
|
4
2
|
|
5
3
|
module WildcardPair
|
6
|
-
class Price
|
7
|
-
include ActiveModel::Validations
|
8
|
-
include ActiveModel::Serializers::JSON
|
9
|
-
include WildcardPair::HashMappable
|
4
|
+
class Price < WildcardPair::Object
|
10
5
|
|
11
6
|
attr_accessor :price, :currency
|
12
7
|
|
13
8
|
validates :price, presence: true, numericality: {greater_than_or_equal_to: 0}
|
14
9
|
|
15
10
|
def initialize(attributes = {})
|
16
|
-
|
17
11
|
#let's set currency to USD by default
|
18
12
|
@currency = "USD"
|
19
13
|
|
20
|
-
|
21
|
-
send("#{name}=", value)
|
22
|
-
end
|
14
|
+
super
|
23
15
|
end
|
24
|
-
|
25
|
-
def attributes
|
26
|
-
instance_values
|
27
|
-
end
|
28
|
-
|
29
|
-
#exclude validation fields in the JSON output
|
30
|
-
def as_json(options={})
|
31
|
-
super(options.merge({:except => [:errors, :validation_context]}))
|
32
|
-
end
|
33
|
-
|
34
|
-
|
35
|
-
def to_json(options = {})
|
36
|
-
if self.valid?
|
37
|
-
super(options)
|
38
|
-
else
|
39
|
-
raise "Price is not valid - please remedy the following errors:" << self.errors.messages.to_s
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
16
|
end
|
44
17
|
end
|
@@ -1,14 +1,9 @@
|
|
1
1
|
#!/usr/bin/env ruby -wKU
|
2
2
|
|
3
|
-
|
4
|
-
require_relative 'hash_mappable.rb'
|
3
|
+
require_relative 'Object.rb'
|
5
4
|
|
6
5
|
module WildcardPair
|
7
|
-
class Product
|
8
|
-
|
9
|
-
include ActiveModel::Validations
|
10
|
-
include ActiveModel::Serializers::JSON
|
11
|
-
include WildcardPair::HashMappable
|
6
|
+
class Product < WildcardPair::Object
|
12
7
|
|
13
8
|
attr_accessor :name, :merchant, :brand, :description, :gender, :rating, :rating_scale, :rating_count, :sizes, :model, :app_link_ios, :app_link_android
|
14
9
|
attr_reader :colors, :images, :related_items, :referenced_items, :options
|
@@ -20,16 +15,6 @@ module WildcardPair
|
|
20
15
|
validate :validateColors
|
21
16
|
validate :validateImages
|
22
17
|
|
23
|
-
def initialize(attributes = {})
|
24
|
-
attributes.each do |name, value|
|
25
|
-
send("#{name}=", value)
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
def attributes
|
30
|
-
instance_values
|
31
|
-
end
|
32
|
-
|
33
18
|
def metatags=(metatags)
|
34
19
|
if metatags.nil? || !metatags.is_a?(Hash)
|
35
20
|
return
|
@@ -114,19 +99,5 @@ module WildcardPair
|
|
114
99
|
return
|
115
100
|
end
|
116
101
|
end
|
117
|
-
|
118
|
-
#exclude validation fields in the JSON output
|
119
|
-
def as_json(options={})
|
120
|
-
super(options.merge({:except => [:errors, :validation_context]}))
|
121
|
-
end
|
122
|
-
|
123
|
-
def to_json(options={})
|
124
|
-
if self.valid?
|
125
|
-
super(options)
|
126
|
-
else
|
127
|
-
raise "Product is not valid - please remedy the following errors:" << self.errors.messages.to_s
|
128
|
-
end
|
129
|
-
end
|
130
|
-
|
131
102
|
end
|
132
103
|
end
|
@@ -1,43 +1,23 @@
|
|
1
1
|
#!/usr/bin/env ruby -wKU
|
2
2
|
|
3
|
-
|
4
|
-
require_relative 'hash_mappable.rb'
|
3
|
+
require_relative 'Card.rb'
|
5
4
|
|
6
5
|
module WildcardPair
|
7
|
-
class ProductCard
|
6
|
+
class ProductCard < WildcardPair::Card
|
8
7
|
private
|
9
8
|
|
10
|
-
attr_accessor :offers, :product
|
9
|
+
attr_accessor :offers, :product
|
11
10
|
|
12
11
|
public
|
13
12
|
|
14
|
-
|
15
|
-
include ActiveModel::Serializers::JSON
|
16
|
-
include WildcardPair::HashMappable
|
13
|
+
attr_reader :offers, :product
|
17
14
|
|
18
|
-
attr_accessor :web_url
|
19
|
-
attr_reader :offers, :card_type, :pair_version, :product
|
20
|
-
|
21
|
-
validates :web_url, presence: true
|
22
15
|
validate :validateOffers
|
23
16
|
validate :validateProduct
|
24
17
|
|
25
18
|
def initialize(attributes = {})
|
26
|
-
|
27
|
-
send("#{name}=", value)
|
28
|
-
end
|
29
|
-
|
19
|
+
super
|
30
20
|
@card_type = 'product'
|
31
|
-
|
32
|
-
if !Gem.loaded_specs['wildcard-pair'].nil?
|
33
|
-
@pair_version = Gem.loaded_specs['wildcard-pair'].version.to_s
|
34
|
-
else
|
35
|
-
@pair_version = "unknown"
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
def attributes
|
40
|
-
instance_values
|
41
21
|
end
|
42
22
|
|
43
23
|
def populate_from_metatags(web_url)
|
@@ -99,18 +79,6 @@ module WildcardPair
|
|
99
79
|
end
|
100
80
|
end
|
101
81
|
|
102
|
-
#exclude validation fields in the JSON output
|
103
|
-
def as_json(options={})
|
104
|
-
super(options.merge({:except => [:errors, :validation_context]}))
|
105
|
-
end
|
106
|
-
|
107
|
-
def to_json(options={})
|
108
|
-
if self.valid?
|
109
|
-
super(options)
|
110
|
-
else
|
111
|
-
raise "Product Card is not valid - please remedy the following errors:" << self.errors.messages.to_s
|
112
|
-
end
|
113
|
-
end
|
114
82
|
|
115
83
|
end
|
116
84
|
end
|
data/lib/wildcard-pair/Rating.rb
CHANGED
@@ -1,14 +1,9 @@
|
|
1
1
|
#!/usr/bin/env ruby -wKU
|
2
2
|
|
3
|
-
|
4
|
-
require_relative 'hash_mappable.rb'
|
3
|
+
require_relative 'Object.rb'
|
5
4
|
|
6
5
|
module WildcardPair
|
7
|
-
class Rating
|
8
|
-
|
9
|
-
include ActiveModel::Validations
|
10
|
-
include ActiveModel::Serializers::JSON
|
11
|
-
include WildcardPair::HashMappable
|
6
|
+
class Rating < WildcardPair::Object
|
12
7
|
|
13
8
|
# required fields
|
14
9
|
attr_accessor :rating, :minimum_rating, :maximum_rating
|
@@ -19,29 +14,5 @@ module WildcardPair
|
|
19
14
|
validates :minimum_rating, presence: true, numericality: {greater_than_or_equal_to: 0}
|
20
15
|
validates :maximum_rating, presence: true, numericality: {greater_than_or_equal_to: 0}
|
21
16
|
validates :number_of_ratings, allow_nil: true, numericality: {only_integer: true, greater_than_or_equal_to: 0}
|
22
|
-
|
23
|
-
def initialize(attributes = {})
|
24
|
-
attributes.each do |name, value|
|
25
|
-
send("#{name}=", value)
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
def attributes
|
30
|
-
instance_values
|
31
|
-
end
|
32
|
-
|
33
|
-
#exclude validation fields in the JSON output
|
34
|
-
def as_json(options={})
|
35
|
-
super(options.merge({:except => [:errors, :validation_context]}))
|
36
|
-
end
|
37
|
-
|
38
|
-
def to_json(options={})
|
39
|
-
if self.valid?
|
40
|
-
super(options)
|
41
|
-
else
|
42
|
-
raise "Video is not valid - please remedy the following errors:" << self.errors.messages.to_s
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
17
|
end
|
47
18
|
end
|
data/lib/wildcard-pair/Review.rb
CHANGED
@@ -1,16 +1,9 @@
|
|
1
1
|
#!/usr/bin/env ruby -wKU
|
2
2
|
|
3
|
-
|
4
|
-
require_relative 'hash_mappable.rb'
|
5
|
-
require_relative 'Media.rb'
|
3
|
+
require_relative 'ObjectWithMedia.rb'
|
6
4
|
|
7
5
|
module WildcardPair
|
8
|
-
class Review
|
9
|
-
|
10
|
-
include ActiveModel::Validations
|
11
|
-
include ActiveModel::Serializers::JSON
|
12
|
-
include WildcardPair::HashMappable
|
13
|
-
include WildcardPair::Media
|
6
|
+
class Review < WildcardPair::ObjectWithMedia
|
14
7
|
|
15
8
|
# required fields
|
16
9
|
attr_accessor :title, :html_content
|
@@ -23,7 +16,6 @@ module WildcardPair
|
|
23
16
|
validates :title, presence: true
|
24
17
|
validates :html_content, presence: true
|
25
18
|
|
26
|
-
validate :validate_media
|
27
19
|
validate :validate_rating
|
28
20
|
|
29
21
|
def metatags=(metatags)
|
@@ -40,45 +32,10 @@ module WildcardPair
|
|
40
32
|
self.app_link_android=metatags['applink_android']
|
41
33
|
end
|
42
34
|
|
43
|
-
def media=(media)
|
44
|
-
if media.is_a? Video
|
45
|
-
@media = map_hash(media, Media::Video.new)
|
46
|
-
elsif media.is_a? Image
|
47
|
-
@media = map_hash(media, Media::Image.new)
|
48
|
-
elsif media.is_a? Hash
|
49
|
-
if media[:type] == 'video'
|
50
|
-
@media = map_hash(media, Media::Video.new)
|
51
|
-
elsif media[:type] == 'image'
|
52
|
-
@media = map_hash(media, Media::Image.new)
|
53
|
-
else
|
54
|
-
@media = media
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
def validate_media
|
60
|
-
if @media.nil? then return end
|
61
|
-
|
62
|
-
if !@media.is_a? Media or !@media.valid?
|
63
|
-
errors.add(:media, "Media is invalid")
|
64
|
-
return false
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
35
|
def rating=(rating)
|
69
36
|
@rating = map_hash(rating, WildcardPair::Rating.new)
|
70
37
|
end
|
71
38
|
|
72
|
-
def initialize(attributes = {})
|
73
|
-
attributes.each do |name, value|
|
74
|
-
send("#{name}=", value)
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
def attributes
|
79
|
-
instance_values
|
80
|
-
end
|
81
|
-
|
82
39
|
def validate_rating
|
83
40
|
if @rating.nil? then return end
|
84
41
|
|
@@ -87,19 +44,5 @@ module WildcardPair
|
|
87
44
|
return false
|
88
45
|
end
|
89
46
|
end
|
90
|
-
|
91
|
-
#exclude validation fields in the JSON output
|
92
|
-
def as_json(options={})
|
93
|
-
super(options.merge({:except => [:errors, :validation_context]}))
|
94
|
-
end
|
95
|
-
|
96
|
-
def to_json(options={})
|
97
|
-
if self.valid?
|
98
|
-
super(options)
|
99
|
-
else
|
100
|
-
raise "Video is not valid - please remedy the following errors:" << self.errors.messages.to_s
|
101
|
-
end
|
102
|
-
end
|
103
|
-
|
104
47
|
end
|
105
48
|
end
|
@@ -1,42 +1,22 @@
|
|
1
1
|
#!/usr/bin/env ruby -wKU
|
2
2
|
|
3
|
-
|
4
|
-
require_relative 'hash_mappable.rb'
|
3
|
+
require_relative 'Card.rb'
|
5
4
|
|
6
5
|
module WildcardPair
|
7
|
-
class ReviewCard
|
6
|
+
class ReviewCard < WildcardPair::Card
|
8
7
|
private
|
9
8
|
|
10
|
-
attr_accessor :review
|
9
|
+
attr_accessor :review
|
11
10
|
|
12
11
|
public
|
13
12
|
|
14
|
-
|
15
|
-
include ActiveModel::Serializers::JSON
|
16
|
-
include WildcardPair::HashMappable
|
13
|
+
attr_reader :review
|
17
14
|
|
18
|
-
attr_accessor :web_url
|
19
|
-
attr_reader :review, :card_type, :pair_version
|
20
|
-
|
21
|
-
validates :web_url, presence: true
|
22
15
|
validate :validate_review
|
23
16
|
|
24
17
|
def initialize(attributes = {})
|
25
|
-
|
26
|
-
send("#{name}=", value)
|
27
|
-
end
|
28
|
-
|
18
|
+
super
|
29
19
|
@card_type = 'review'
|
30
|
-
|
31
|
-
if !Gem.loaded_specs['wildcard-pair'].nil?
|
32
|
-
@pair_version = Gem.loaded_specs['wildcard-pair'].version.to_s
|
33
|
-
else
|
34
|
-
@pair_version = "unknown"
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
def attributes
|
39
|
-
instance_values
|
40
20
|
end
|
41
21
|
|
42
22
|
def populate_from_metatags(web_url)
|
@@ -64,19 +44,6 @@ module WildcardPair
|
|
64
44
|
end
|
65
45
|
end
|
66
46
|
|
67
|
-
#exclude validation fields in the JSON output
|
68
|
-
def as_json(options={})
|
69
|
-
super(options.merge({:except => [:errors, :validation_context]}))
|
70
|
-
end
|
71
|
-
|
72
|
-
def to_json(options={})
|
73
|
-
if self.valid?
|
74
|
-
super(options)
|
75
|
-
else
|
76
|
-
raise "Review Card is not valid - please remedy the following errors:" << self.errors.messages.to_s
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
47
|
end
|
81
48
|
end
|
82
49
|
|
@@ -0,0 +1,13 @@
|
|
1
|
+
#!/usr/bin/env ruby -wKU
|
2
|
+
|
3
|
+
require_relative 'ObjectWithMedia.rb'
|
4
|
+
|
5
|
+
module WildcardPair
|
6
|
+
class Summary < WildcardPair::ObjectWithMedia
|
7
|
+
|
8
|
+
attr_accessor :title, :description
|
9
|
+
|
10
|
+
validates :title, presence: true
|
11
|
+
validates :description, presence: true
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
#!/usr/bin/env ruby -wKU
|
2
|
+
|
3
|
+
require_relative 'Card.rb'
|
4
|
+
|
5
|
+
module WildcardPair
|
6
|
+
class SummaryCard < WildcardPair::Card
|
7
|
+
private
|
8
|
+
|
9
|
+
attr_accessor :summary
|
10
|
+
|
11
|
+
public
|
12
|
+
|
13
|
+
attr_reader :summary
|
14
|
+
|
15
|
+
validate :validate_summary
|
16
|
+
|
17
|
+
def initialize(attributes = {})
|
18
|
+
super
|
19
|
+
@card_type = 'summary'
|
20
|
+
end
|
21
|
+
|
22
|
+
def summary=(summary)
|
23
|
+
@summary = map_hash(summary, WildcardPair::Summary.new)
|
24
|
+
end
|
25
|
+
|
26
|
+
def validate_summary
|
27
|
+
if @summary.nil? || !@summary.is_a?(Summary)
|
28
|
+
errors.add(:summary, "A summary is required")
|
29
|
+
return
|
30
|
+
end
|
31
|
+
|
32
|
+
if !@summary.valid?
|
33
|
+
@summary.errors.each do |error, msg|
|
34
|
+
errors["summary[%s]" % error] = msg
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
@@ -1,44 +1,24 @@
|
|
1
1
|
#!/usr/bin/env ruby -wKU
|
2
2
|
|
3
|
-
|
4
|
-
require_relative 'hash_mappable.rb'
|
5
|
-
require_relative 'Media.rb'
|
3
|
+
require_relative 'Card.rb'
|
6
4
|
|
7
5
|
module WildcardPair
|
8
|
-
class VideoCard
|
6
|
+
class VideoCard < WildcardPair::Card
|
9
7
|
private
|
10
8
|
|
11
|
-
attr_accessor :media
|
9
|
+
attr_accessor :media
|
12
10
|
|
13
11
|
public
|
14
12
|
|
15
|
-
include ActiveModel::Validations
|
16
|
-
include ActiveModel::Serializers::JSON
|
17
|
-
include WildcardPair::HashMappable
|
18
13
|
include WildcardPair::Media
|
19
14
|
|
20
|
-
|
21
|
-
attr_reader :media, :card_type, :pair_version
|
15
|
+
attr_reader :media
|
22
16
|
|
23
|
-
validates :web_url, presence: true
|
24
17
|
validate :validate_media
|
25
18
|
|
26
19
|
def initialize(attributes = {})
|
27
|
-
|
28
|
-
send("#{name}=", value)
|
29
|
-
end
|
30
|
-
|
20
|
+
super
|
31
21
|
@card_type = 'video'
|
32
|
-
|
33
|
-
if !Gem.loaded_specs['wildcard-pair'].nil?
|
34
|
-
@pair_version = Gem.loaded_specs['wildcard-pair'].version.to_s
|
35
|
-
else
|
36
|
-
@pair_version = "unknown"
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
def attributes
|
41
|
-
instance_values
|
42
22
|
end
|
43
23
|
|
44
24
|
def populate_from_metatags(web_url)
|
@@ -66,19 +46,5 @@ module WildcardPair
|
|
66
46
|
end
|
67
47
|
end
|
68
48
|
|
69
|
-
#exclude validation fields in the JSON output
|
70
|
-
def as_json(options={})
|
71
|
-
super(options.merge({:except => [:errors, :validation_context]}))
|
72
|
-
end
|
73
|
-
|
74
|
-
def to_json(options={})
|
75
|
-
if self.valid?
|
76
|
-
super(options)
|
77
|
-
else
|
78
|
-
raise "Video Card is not valid - please remedy the following errors:" << self.errors.messages.to_s
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
49
|
end
|
83
|
-
end
|
84
|
-
|
50
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wildcard-pair
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Karthik Senthil
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-02-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: statsd-ruby
|
@@ -81,10 +81,16 @@ files:
|
|
81
81
|
- lib/wildcard-pair.rb
|
82
82
|
- lib/wildcard-pair/Article.rb
|
83
83
|
- lib/wildcard-pair/ArticleCard.rb
|
84
|
+
- lib/wildcard-pair/Card.rb
|
84
85
|
- lib/wildcard-pair/Color.rb
|
86
|
+
- lib/wildcard-pair/Creator.rb
|
87
|
+
- lib/wildcard-pair/ImageCard.rb
|
88
|
+
- lib/wildcard-pair/LinkCard.rb
|
85
89
|
- lib/wildcard-pair/Media.rb
|
86
90
|
- lib/wildcard-pair/Media/Image.rb
|
87
91
|
- lib/wildcard-pair/Media/Video.rb
|
92
|
+
- lib/wildcard-pair/Object.rb
|
93
|
+
- lib/wildcard-pair/ObjectWithMedia.rb
|
88
94
|
- lib/wildcard-pair/Offer.rb
|
89
95
|
- lib/wildcard-pair/Price.rb
|
90
96
|
- lib/wildcard-pair/Product.rb
|
@@ -94,6 +100,9 @@ files:
|
|
94
100
|
- lib/wildcard-pair/Rating.rb
|
95
101
|
- lib/wildcard-pair/Review.rb
|
96
102
|
- lib/wildcard-pair/ReviewCard.rb
|
103
|
+
- lib/wildcard-pair/Summary.rb
|
104
|
+
- lib/wildcard-pair/SummaryCard.rb
|
105
|
+
- lib/wildcard-pair/Target.rb
|
97
106
|
- lib/wildcard-pair/VideoCard.rb
|
98
107
|
- lib/wildcard-pair/hash_mappable.rb
|
99
108
|
- lib/wildcard-pair/util/extract_metatags.rb
|
@@ -117,7 +126,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
117
126
|
version: '0'
|
118
127
|
requirements: []
|
119
128
|
rubyforge_project:
|
120
|
-
rubygems_version: 2.
|
129
|
+
rubygems_version: 2.2.2
|
121
130
|
signing_key:
|
122
131
|
specification_version: 4
|
123
132
|
summary: Wildcard Pair Ruby SDK
|