class Statements::Server
Public Class Methods
new()
click to toggle source
# File lib/statements/server.rb, line 7 def initialize end
render(template, obj = nil)
click to toggle source
# File lib/statements/server.rb, line 46 def self.render(template, obj = nil) @templates ||= {} @templates[template] ||= ERB.new(File.read File.expand_path("../views/#{template}.erb", __FILE__)) @templates[template].result (obj || self).instance_eval { binding } end
Public Instance Methods
call(env)
click to toggle source
# File lib/statements/server.rb, line 11 def call(env) request = Rack::Request.new(env) verb = request.request_method.downcase path = request.path_info[1..-1].split('/') handler_name = "#{verb}_#{path.first || 'index'}".gsub('.', '_') args = [request] + path[1..-1] method = respond_to?(handler_name) && method(handler_name) if method && method.arity == args.length __send__ handler_name, *args else [404, {}, ['Not found']] end end
get_accounts_js(request)
click to toggle source
# File lib/statements/server.rb, line 42 def get_accounts_js(request) js "window.accounts = #{Account.to_json}" end
html(html)
click to toggle source
# File lib/statements/server.rb, line 38 def html(html) serve 'text/html; charset=UTF-8', html end
js(script)
click to toggle source
# File lib/statements/server.rb, line 34 def js(script) serve 'application/x-javascript', script end
json(data)
click to toggle source
# File lib/statements/server.rb, line 30 def json(data) serve 'application/json', JSON.generate(data, quirks_mode: true) end
post_colour_json(request)
click to toggle source
# File lib/statements/server.rb, line 56 def post_colour_json(request) input = JSON.parse(request.body.read) transaction = Transaction.find(input['id']) rescue false if transaction transaction.colour = input['colour'] transaction.save json success: true else 400 end end
post_search_html(request)
click to toggle source
# File lib/statements/server.rb, line 52 def post_search_html(request) html self.class.render 'search', Search.new(JSON.parse request.body.read) end
serve(type, str)
click to toggle source
noinspection RubyStringKeysInHashInspection
# File lib/statements/server.rb, line 26 def serve(type, str) [200, {'Content-Type' => type, 'Content-Length' => str.length.to_s}, [str]] end