Class: Takagi::CoAP::Registries::Response

Inherits:
Base
  • Object
show all
Defined in:
lib/takagi/coap/registries/response.rb

Overview

CoAP Response Code Registry (RFC 7252 ยง12.1.2)

Extensible registry for CoAP response codes. Plugins can register custom response codes without modifying core code.

Examples:

Using predefined codes

Takagi::CoAP::Registries::Response::CONTENT    # => 69 (2.05)
Takagi::CoAP::Registries::Response::NOT_FOUND  # => 132 (4.04)

Registering a custom code

Takagi::CoAP::Registries::Response.register(231, '7.07 Custom', :custom)
Takagi::CoAP::Registries::Response::CUSTOM  # => 231

Looking up code names

Takagi::CoAP::Registries::Response.name_for(69)  # => "2.05 Content"

Class Method Summary collapse

Methods inherited from Base

all, clear!, each_value, inherited, metadata_for, name_for, register, registered?, rfc_for, value_for, values

Class Method Details

.class_for(code) ⇒ Integer

Get the response class (2, 4, 5, etc.)

Parameters:

  • code (Integer)

    Response code

Returns:

  • (Integer)

    Class number



52
53
54
# File 'lib/takagi/coap/registries/response.rb', line 52

def self.class_for(code)
  code / 32
end

.client_error?(code) ⇒ Boolean

Check if code is a client error (4.xx)

Parameters:

  • code (Integer)

    Response code

Returns:

  • (Boolean)

    true if client error



66
67
68
# File 'lib/takagi/coap/registries/response.rb', line 66

def self.client_error?(code)
  class_for(code) == 4
end

.error?(code) ⇒ Boolean

Check if code is any error (4.xx or 5.xx)

Parameters:

  • code (Integer)

    Response code

Returns:

  • (Boolean)

    true if error



80
81
82
# File 'lib/takagi/coap/registries/response.rb', line 80

def self.error?(code)
  client_error?(code) || server_error?(code)
end

.server_error?(code) ⇒ Boolean

Check if code is a server error (5.xx)

Parameters:

  • code (Integer)

    Response code

Returns:

  • (Boolean)

    true if server error



73
74
75
# File 'lib/takagi/coap/registries/response.rb', line 73

def self.server_error?(code)
  class_for(code) == 5
end

.success?(code) ⇒ Boolean

Check if code is a success (2.xx)

Parameters:

  • code (Integer)

    Response code

Returns:

  • (Boolean)

    true if success



59
60
61
# File 'lib/takagi/coap/registries/response.rb', line 59

def self.success?(code)
  class_for(code) == 2
end

.valid?(code) ⇒ Boolean

Check if code is a valid response code

Parameters:

  • code (Integer)

    Code to check

Returns:

  • (Boolean)

    true if valid response code



87
88
89
# File 'lib/takagi/coap/registries/response.rb', line 87

def self.valid?(code)
  code.between?(64, 191) && registered?(code)
end