Sha256: ce3958c3f570342522d8e019a5ed22614a904750d5d6ce6f2dae016674ac92ed

Contents?: true

Size: 1.13 KB

Versions: 4

Compression:

Stored size: 1.13 KB

Contents

require 'uri'

module Murlsh

  # Recent urls json response builder.
  class JsonBody

    def initialize(config, req, result_set)
      @config, @req, @result_set = config, req, result_set
    end

    # Yield body for Rack.
    def each; yield build; end

    # Recent urls json response builder.
    def build
      if defined?(@body)
        @body
      else
        urls = @result_set.results.map do |mu|
          Murlsh::Plugin.hooks('url_display_pre') do |p|
            p.run mu, @req, @config
          end

          h = mu.attributes

          h['title'] = mu.title_stripped

          # add site root url to relative thumbnail urls
          if h['thumbnail_url'] and
            not URI(h['thumbnail_url']).scheme.to_s.downcase[/https?/]
            h['thumbnail_url'] = URI.join(@config.fetch('root_url'),
              h['thumbnail_url']).to_s
          end

          h['enclosures'] = mu.enclosures.map do |e|
            new_e = e.attributes.reject { |k,v| k == 'url_id' }
            new_e['title'] = e.title_stripped
            new_e
          end

          h
        end
        @body = urls.to_json
      end
    end

  end

end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
murlsh-1.9.3 lib/murlsh/json_body.rb
murlsh-1.9.2 lib/murlsh/json_body.rb
murlsh-1.9.1 lib/murlsh/json_body.rb
murlsh-1.9.0 lib/murlsh/json_body.rb