class Sana
Ukagaka SHIORI submodule ‘Sana’
Constants
- Charset
- Sender
Attributes
charset[RW]
default Charset
header value
dirpath[R]
the ghost/master path
events[R]
events object
sender[RW]
default Sender
header value
Public Class Methods
new(events = Kernel)
click to toggle source
initialize Sana
@param [Object] events event definitions
# File lib/sana.rb, line 16 def initialize(events = Kernel) @events = events @charset = 'UTF-8' @sender = 'Sana' end
Public Instance Methods
load(dirpath)
click to toggle source
SHIORI load() @param [String] dirpath the ghost/master directory path
# File lib/sana.rb, line 24 def load(dirpath) @dirpath = dirpath events.public_send(:_load, dirpath) end
request(request_str)
click to toggle source
SHIORI request() @param [String] request_str SHIORI Request @return [String] SHIORI Response
# File lib/sana.rb, line 37 def request(request_str) request = Shioruby.parse_request(request_str) if request.version[0] == '2' return build_response Sana::ResponseHelper.bad_request end begin response = events.public_send(request.ID, request) rescue => error raise unless error.is_a?(NoMethodError) && error.name.to_s == request.ID end case response when OpenStruct build_response response else build_response Sana::ResponseHelper.ok response end rescue => error case error when Shioruby::ParseError build_response Sana::ResponseHelper.bad_request else build_response Sana::ResponseHelper.internal_server_error end end
unload()
click to toggle source
SHIORI unload()
# File lib/sana.rb, line 30 def unload events.public_send(:_unload) end
Private Instance Methods
build_response(response)
click to toggle source
# File lib/sana.rb, line 63 def build_response(response) response.version ||= '3.0' response.code ||= response.Value.to_s.empty? ? 204 : 200 response.Charset = response.Charset || charset response.Sender = response.Sender || sender Shioruby.build_response(response) end