class RSSendy::Feed
Constants
- InvalidFeedError
- PROPERTIES
- REQUIREMENTS
Attributes
doc[R]
html_template[R]
items[R]
response[R]
subject[W]
Public Class Methods
content(cont=nil)
click to toggle source
# File lib/rssendy.rb, line 48 def content(cont=nil) return @__cont_blk__ unless cont @__cont_blk__ = ->(doc) {doc.instance_eval(cont.sub(/^doc\./, ''))} end
new(opts={})
click to toggle source
# File lib/rssendy.rb, line 59 def initialize(opts={}) PROPERTIES.each do |property| send("#{property}=", opts[property] || self.class.send(property)) end @subject = opts.fetch(:subject, self.class.subject) @content = opts.fetch(:content, self.class.content) @rss_subject = !!rss_subject end
subject(subj=nil)
click to toggle source
# File lib/rssendy.rb, line 53 def subject(subj=nil) return @__subject__ unless subj @__subject__ = subj end
Public Instance Methods
build_template()
click to toggle source
# File lib/rssendy.rb, line 94 def build_template raise InvalidFeedError, "No template set" unless template tmpl = ERB.new(File.read(template)) @html_template = tmpl.result(binding) end
content()
click to toggle source
# File lib/rssendy.rb, line 72 def content return @content if Proc === @content || @content.nil? _cont = @content.dup @content = ->(doc) { doc.instance_eval(_cont.sub(/^doc\./, '')) } end
missing_keys()
click to toggle source
# File lib/rssendy.rb, line 112 def missing_keys REQUIREMENTS.reject {|prop| send(prop)} end
post()
click to toggle source
# File lib/rssendy.rb, line 101 def post raise InvalidFeedError, "Feed invalid. Missing keys: #{missing_keys.inspect}" unless valid? sendy = ::Cindy.new host, api_key sendy.create_campaign(build_opts) end
pull!()
click to toggle source
# File lib/rssendy.rb, line 86 def pull! raise InvalidFeedError, "Feed invalid. Missing keys: #{missing_keys.inspect}" unless valid? @response = open(url).read @doc = Nokogiri(@response) @items = content[@doc] end
subject()
click to toggle source
# File lib/rssendy.rb, line 78 def subject return @subject unless rss_subject? && !(Proc === @subject) return unless @subject _subj = @subject.dup @subject = ->(doc) { doc.instance_eval(_subj.sub(/^doc\./, '')) } end
valid?()
click to toggle source
# File lib/rssendy.rb, line 108 def valid? REQUIREMENTS.all? {|prop| send(prop)} end
Private Instance Methods
build_opts()
click to toggle source
# File lib/rssendy.rb, line 122 def build_opts { from_name: from_name, from_email: from_email, reply_to: reply_to, subject: rss_subject? ? subject[doc] : subject, html_text: build_template }.tap {|opts| %i(plain_text list_ids brand_id send_campaign).each do |property| val = send(property) opts[property] = val if val end } end
rss_subject?()
click to toggle source
# File lib/rssendy.rb, line 118 def rss_subject? rss_subject end