module DirectchatSessionCodec
DirectchatSessionCodec — serialize and sanitize directchat session payloads. Public: sanitize_line, stringify, symbolize Depends: (none) Tests: test/lib/directchat_session_codec_test.rb
Public Instance Methods
Source
# File lib/directchat/session_codec.rb, line 11 def sanitize_line(text) cleaned = text.to_s.delete("\000").gsub(/\r\n?|\n/, " ").squeeze(" ").strip cleaned.empty? ? nil : cleaned end
Source
# File lib/directchat/session_codec.rb, line 16 def stringify(session) { "id" => session[:id] || session["id"], "channel" => session[:channel] || session["channel"], "requester" => session[:requester] || session["requester"], "assignments" => Array(session[:assignments] || session["assignments"]).map do |entry| { "bot" => entry[:bot] || entry["bot"], "participant" => entry[:participant] || entry["participant"], "invited_at" => entry[:invited_at] || entry["invited_at"] } end, "created_at" => session[:created_at] || session["created_at"], "status" => session[:status] || session["status"] || "active", "bot_count" => session[:bot_count] || session["bot_count"] }.compact end
Source
# File lib/directchat/session_codec.rb, line 34 def symbolize(session) return nil unless session.is_a?(Hash) { id: session["id"] || session[:id], channel: session["channel"] || session[:channel], requester: session["requester"] || session[:requester], assignments: Array(session["assignments"] || session[:assignments]).map do |entry| { bot: entry["bot"] || entry[:bot], participant: entry["participant"] || entry[:participant], invited_at: entry["invited_at"] || entry[:invited_at] } end, created_at: session["created_at"] || session[:created_at], status: session["status"] || session[:status], bot_count: session["bot_count"] || session[:bot_count] } end