Sha256: 4caa0fdc84fd3676ed1f2666c1a938b3bf14f136c803532ae0d0121722b89113

Contents?: true

Size: 1.05 KB

Versions: 19

Compression:

Stored size: 1.05 KB

Contents

module JsChat
  class Error < RuntimeError
    def initialize(code_key, message)
      @message = message
      @code = JsChat::Errors::Codes.invert[code_key]
    end

    # Note: This shouldn't really include 'display' directives
    def to_json
      { 'display' => 'error', 'error' => { 'message' => @message, 'code' => @code } }.to_json
    end
  end

  module Errors
    class InvalidName < JsChat::Error ; end
    class MessageTooLong < JsChat::Error ; end
    class InvalidCookie < JsChat::Error ; end

    Codes = {
      # 1xx: User errors
      100 => :name_taken,
      101 => :invalid_name,
      104 => :not_online,
      105 => :identity_required,
      106 => :already_identified,
      107 => :invalid_cookie,
      # 2xx: Room errors
      200 => :already_joined,
      201 => :invalid_room,
      202 => :not_in_room,
      204 => :room_not_available,
      # 3xx: Message errors
      300 => :to_required,
      301 => :message_too_long,
      # 5xx: Other errors
      500 => :invalid_request,
      501 => :flooding,
      502 => :ping_out
    }
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
jschat-0.3.6 lib/jschat/errors.rb
jschat-0.3.5 lib/jschat/errors.rb
jschat-0.3.3 lib/jschat/errors.rb
jschat-0.3.2 lib/jschat/errors.rb
jschat-0.3.1 lib/jschat/errors.rb
jschat-0.3.0 lib/jschat/errors.rb
jschat-0.2.9 lib/jschat/errors.rb
jschat-0.2.8 lib/jschat/errors.rb
jschat-0.2.7 lib/jschat/errors.rb
jschat-0.2.6 lib/jschat/errors.rb
jschat-0.2.5 lib/jschat/errors.rb
jschat-0.2.4 lib/jschat/errors.rb
jschat-0.2.3 lib/jschat/errors.rb
jschat-0.2.2 lib/jschat/errors.rb
jschat-0.2.1 lib/jschat/errors.rb
jschat-0.2.0 lib/jschat/errors.rb
jschat-0.1.5 lib/jschat/errors.rb
jschat-0.1.2 lib/jschat/errors.rb
jschat-0.1.1 lib/jschat/errors.rb