Sha256: b42a8dab3021fa0d96b570c23bfb0c38adcbce8f64faa9699c712d22bed52792

Contents?: true

Size: 1.16 KB

Versions: 6

Compression:

Stored size: 1.16 KB

Contents

require 'command_handler'
require 'json'
require 'serializer'

module Beryl
  class Backend
    def call(env)
      req = Rack::Request.new(env)
      case req.path_info
      when '/command'
        [200, { 'Content-Type' => 'application/json; charset=utf-8' }, [handle_command(req)]]
      else
        [200, { 'Content-Type' => 'text/html; charset=utf-8' }, [response]]
      end
    end

    private

    def handle_command(req)
      json = JSON.parse(req.body.read)
      result = CommandHandler.new.handle(json['type'].to_sym, json['payload'])
      Serializer.serialize(result)
    end

    def hydrate_state
      Serializer.serialize(eval(File.read('app/initial_state.rb'))).gsub('"', '"')
    end

    def response
      <<~HEREDOC
      <!DOCTYPE html>
      <html>
        <head>
          <script src="build/app.js"></script>
          <link rel="stylesheet" type="text/css" href="build/style.css">
        </head>
        <body>
          <div id="beryl" data-beryl="#{hydrate_state}" class="bg-color-255-255-255-255 font-color-0-0-0-255 font-size-20 font-open-sanshelveticaverdanasans-serif s e ui s e"></div>
        </body>
      </html>
      HEREDOC
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
beryl-0.2.5 lib/beryl/backend.rb
beryl-0.2.4 lib/beryl/backend.rb
beryl-0.2.3 lib/beryl/backend.rb
beryl-0.2.2 lib/beryl/backend.rb
beryl-0.2.1 lib/beryl/backend.rb
beryl-0.2.0 lib/beryl/backend.rb