Sha256: 45c2ed83f7137bbf4297f553800286a8575d27e304c6227e5568a870da5f43ea

Contents?: true

Size: 853 Bytes

Versions: 1

Compression:

Stored size: 853 Bytes

Contents

require 'sinatra/base'

module TowerBridgeLifts
    class Server < Sinatra::Base

      helpers Helpers
      enable :logging
      set    :public_folder, 'web'
    
      tblifts = Base.new
      view    = View.new

      get '/' do
        tblifts.fetch if tblifts.expired?
        @tblifts = tblifts
        @view = view
        erb :index, views: settings.public_folder
      end


      get '/api/v1/:command' do
        content_type :json
        command = params['command']
        options = Rack::Utils.parse_query(request.query_string)
        options = Hash[ options.map{|k,v| [k.to_sym, (Integer(v) rescue v)]} ]

        if Base::ALLOWED_COMMANDS.include?(command)
          tblifts.fetch if tblifts.expired?
          view.render(tblifts, command, options, :json)
        else 
          error 404, 'oops'
        end
      end

    end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
tower_bridge_lifts-1.0.0 lib/tower_bridge_lifts/server.rb