Sha256: 04ffb577e37df2b4bbc478edb22b7c7d2fad2a6c2c5508d270931c2f60d121d7

Contents?: true

Size: 874 Bytes

Versions: 4

Compression:

Stored size: 874 Bytes

Contents

require 'uri'

module Murlsh

  # Recent urls json response builder.
  class JsonBody
    include Murlsh::BuildMd5

    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|
          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['root_url'],
              h['thumbnail_url']).to_s
          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.4.1 lib/murlsh/json_body.rb
murlsh-1.4.0 lib/murlsh/json_body.rb
murlsh-1.3.1 lib/murlsh/json_body.rb
murlsh-1.3.0 lib/murlsh/json_body.rb