Class: SimpleRSS::JsonEntryNormalizer
- Inherits:
-
Object
- Object
- SimpleRSS::JsonEntryNormalizer
- Defined in:
- lib/simple-rss/json_entry_normalizer.rb
Constant Summary collapse
- RFC3339_TIMESTAMP =
/\A\d{4}-\d{2}-\d{2}[tT] (?:[01]\d|2[0-3]):[0-5]\d:(?:[0-5]\d|60)(?:\.\d+)? (?:[zZ]|[+-](?:[01]\d|2[0-3]):[0-5]\d)\z/x- FIELDS =
{ title: "title", content_html: "content_html", content_text: "content_text", summary: "summary" }.freeze
- URL_FIELDS =
%i[url external_url image banner_image].freeze
Instance Method Summary collapse
- #entry ⇒ Object
-
#initialize(item, feed, source_url: nil) ⇒ JsonEntryNormalizer
constructor
A new instance of JsonEntryNormalizer.
Constructor Details
#initialize(item, feed, source_url: nil) ⇒ JsonEntryNormalizer
Returns a new instance of JsonEntryNormalizer.
23 24 25 26 27 28 29 30 |
# File 'lib/simple-rss/json_entry_normalizer.rb', line 23 def initialize(item, feed, source_url: nil) @item = item @feed = feed @source_url = source_url || feed["feed_url"] @issues = [] #: Array[Hash[Symbol, untyped]] @sources = {} #: Hash[Symbol, untyped] @values = { raw: item, issues: @issues, field_sources: @sources } #: Hash[Symbol, untyped] end |
Instance Method Details
#entry ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/simple-rss/json_entry_normalizer.rb', line 33 def entry assign(:identifier, @item["id"].to_s, "id") FIELDS.each { |field, source| assign(field, @item[source], source) } URL_FIELDS.each { |field| assign(field, resolve_url(@item[field.to_s], field, field.to_s), field.to_s) } assign(:published_at, read_date("date_published", :published_at), "date_published") assign(:updated_at, read_date("date_modified", :updated_at), "date_modified") @values[:summary_type] = :text if @item["summary"] @values[:content_base_url] = @values[:url] || @source_url read_language read_categories @values[:attachments] = (@item["attachments"] || []).each_with_index.map { |, index| (, index) } @values[:links] = %i[url external_url].filter_map do |field| next unless @values[field] { url: @values[field], rel: field == :url ? "alternate" : "related", media_type: nil, source: field.to_s, raw: @item[field.to_s] } end SimpleRSS::NormalizedEntry.new(@values) end |