Sha256: 55b4b9fedb604352020a965ccbff133019f712146d3ebaae636fd5322f45e87a

Contents?: true

Size: 666 Bytes

Versions: 7

Compression:

Stored size: 666 Bytes

Contents

require 'rack'

require 'murlsh'

module Murlsh

  # Redirect to a random url from the database.
  class RandomServer < Server

    # Redirect to a random url from the database optionally matching a query.
    #
    # Redirect to root url if no urls match.
    def get(req)
      all_results = Murlsh::UrlResultSet.new(req['q'], 1, 1)

      url = if all_results.total_entries > 0
        Murlsh::UrlResultSet.new(req['q'],
          rand(all_results.total_entries) + 1, 1).results[0].url
      else
        config.fetch('root_url')
      end

      resp = Rack::Response.new("<a href=\"#{url}\">#{url}</a>")
      resp.redirect(url)

      resp
    end

  end

end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
murlsh-1.9.3 lib/murlsh/random_server.rb
murlsh-1.9.2 lib/murlsh/random_server.rb
murlsh-1.9.1 lib/murlsh/random_server.rb
murlsh-1.9.0 lib/murlsh/random_server.rb
murlsh-1.8.0 lib/murlsh/random_server.rb
murlsh-1.7.1 lib/murlsh/random_server.rb
murlsh-1.7.0 lib/murlsh/random_server.rb