Sha256: 6681c00ffde6f3e983f07e29f6c65befe6f876891772604d884be5528bf674f5

Contents?: true

Size: 959 Bytes

Versions: 6

Compression:

Stored size: 959 Bytes

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
        end
        @body = urls.to_json
      end
    end

  end

end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
murlsh-1.8.0 lib/murlsh/json_body.rb
murlsh-1.7.1 lib/murlsh/json_body.rb
murlsh-1.7.0 lib/murlsh/json_body.rb
murlsh-1.6.1 lib/murlsh/json_body.rb
murlsh-1.6.0 lib/murlsh/json_body.rb
murlsh-1.5.0 lib/murlsh/json_body.rb