Sha256: d8285d22f51dd509906d6d50e485160b541874e37e618c4b595c2355ef9b4ba2
Contents?: true
Size: 1.23 KB
Versions: 2
Compression:
Stored size: 1.23 KB
Contents
# frozen_string_literal: true require "securerandom" require "json" module Shatter module Web class Server class << self attr_reader :application attr_writer :application end def self.call(env) request = Rack::Request.new(env) path = env["PATH_INFO"] if env["PATH_INFO"] == "/callbacks" uuid = env['QUERY_STRING'].split("=")[1] response_for(uuid) elsif env["PATH_INFO"] == "/base_time" [200, {}, [""]] else params = JSON.parse(request.body.read, {symbolize_names: true}) uuid = SecureRandom.uuid future = application.new.async.route(uuid, path, params) future.add_observer(:server_call_result, self) [200, { "delay" => "20", "location" => "/callbacks?uuid=#{uuid}" }, []] end end def self.server_call_result(time, value, error) return if error.nil? Shatter.logger.error "#{ error }" end def self.response_for(uuid) response = application.new.response_for(uuid) return [200, {}, [response.to_json]] unless response.nil? [200, { "delay" => "100", "location" => "/callbacks?uuid=#{uuid}" }, []] end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
shatter-rb-0.0.2 | lib/shatter/web/server.rb |
shatter-rb-0.0.1 | lib/shatter/web/server.rb |