Sha256: 899dac6aa4beeb05f733094c23feb1560de6608db4aa9e2f9386b1e57d4a4dff

Contents?: true

Size: 889 Bytes

Versions: 2

Compression:

Stored size: 889 Bytes

Contents

require 'sinatra/base'
require 'base64'
require 'uri'

module Monocle
  class Server < Sinatra::Base
    post '/:type/:id.:format' do
      view_object(params[:type], params[:id])
    end

    get '/:type/:id.gif' do
      view_object(params[:type], params[:id])
      content_type('image/gif')
      Base64.decode64('R0lGODlhAQABAPAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==')
    end

    get '/:type/click/:redirect_to/:id' do
      click_object(params[:type], params[:id], params[:redirect_to])
    end

    def view_object(type, id)
      if object = type.classify.constantize.find(id)
        object.view!
        'o_0 +1'
      else
        'o_0'
      end
    end

    def click_object(type, id, redirect_to)
      if object = type.classify.constantize.find(id)
        object.click!
        redirect(Base64.decode64(URI.unescape(redirect_to)), 301)
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
monocle-0.2.6 lib/monocle/server.rb
monocle-0.2.5 lib/monocle/server.rb