Sha256: ba9b9c90afeb4c7d37fd4153c4a3437f26b8e634c1301cb09e085f776c88c20a

Contents?: true

Size: 1.26 KB

Versions: 10

Compression:

Stored size: 1.26 KB

Contents

require 'sinatra'
require 'nokogiri'

module Opener
  class Scorer
    class Server < Sinatra::Base

      post '/' do
        output            = Output.new
        output.uuid       = params[:request_id]
        output.text       = OutputProcessor.new(params[:input]).process.to_json
        output.save
      end

      get '/' do
        if params[:request_id]
          redirect "#{url("/")}#{params[:request_id]}"
        else
          erb :index
        end
      end

      get '/:request_id' do
        unless params[:request_id] == 'favicon.ico'
          begin
            output = Output.find_by_uuid(params[:request_id])

            if output
              content_type(:json)
              scores = JSON.parse(output.text)
              body( {:uuid=>output.uuid, :scores=>scores}.to_json)
            else
              halt(404, "No record found for ID #{params[:request_id]}")
            end
          rescue => error
            error_callback = params[:error_callback]

            submit_error(error_callback, error.message) if error_callback

            raise(error)
          end
        end
      end

      private

      def submit_error(url, message)
        HTTPClient.post(url, :body => {:error => message})
      end
    end # Server
  end # Scorer
end # Opener

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
opener-scorer-1.1.5 lib/opener/scorer/server.rb
opener-scorer-1.1.4 lib/opener/scorer/server.rb
opener-scorer-1.1.2 lib/opener/scorer/server.rb
opener-scorer-1.1.1 lib/opener/scorer/server.rb
opener-scorer-1.1.0 lib/opener/scorer/server.rb
opener-scorer-1.0.9 lib/opener/scorer/server.rb
opener-scorer-1.0.8 lib/opener/scorer/server.rb
opener-scorer-1.0.7 lib/opener/scorer/server.rb
opener-scorer-1.0.6 lib/opener/scorer/server.rb
opener-scorer-1.0.5 lib/opener/scorer/server.rb