class Net::IMAP::SASL::ClientAdapter

此 API 是实验性的,可能会发生更改。

待办事项:与更多客户端一起使用,以验证 API 是否可以容纳它们。

表示 SASL::AuthenticationExchange 的客户端。 默认情况下,大多数方法只是委托给 client。 客户端应继承 SASL::ClientAdapter 并根据需要覆盖方法,以使其 API 的语义与此 API 相匹配。

子类还应该在默认的 ProtocolAdapters::Generic 不够用时包含协议适配器混合。

协议要求

RFC4422 §4 列出了协议规范提供 SASL 的要求。 在可能的情况下,ClientAdapter 会将这些要求的处理委托给 SASL::ProtocolAdapters

属性

client[R]

处理与协议服务器通信的客户端。

默认情况下,大多数 ClientAdapter 方法只是委托给 client

command_proc[R]

command_proc 可用于避免在 client 上公开私有方法。 它的值由传递给 ::new 的块设置,并且由 run_command 的默认实现使用。 覆盖 run_command 的子类可以使用 command_proc 用于他们发现有用的任何其他目的。

run_command 的默认实现中,会使用协议的身份验证 command 名称、mechanism 名称、一个可选的 initial_response 参数和一个 continuations 块调用 command_proccommand_proc 必须使用发送给它的参数运行协议命令,yield 每个延续的有效负载,使用每个 yield 的结果响应延续,并返回命令的成功结果。不成功的结果必须引发异常。

公共类方法

new(client, &command_proc) 点击以切换源代码

默认情况下,这只是设置 clientcommand_proc 属性。 子类可以覆盖它,例如:自动设置相应的 command_proc

# File net-imap-0.5.4/lib/net/imap/sasl/client_adapter.rb, line 56
def initialize(client, &command_proc)
  @client, @command_proc = client, command_proc
end

公共实例方法

auth_capable?(mechanism) 点击以切换源代码

服务器是否声明支持 mechanism

# File net-imap-0.5.4/lib/net/imap/sasl/client_adapter.rb, line 76
def_delegator :client, :auth_capable?
authenticate(...) 点击以切换源代码

尝试将 client 验证到服务器。

默认情况下,这只是委托给 AuthenticationExchange.authenticate

# File net-imap-0.5.4/lib/net/imap/sasl/client_adapter.rb, line 64
def authenticate(...) AuthenticationExchange.authenticate(self, ...) end
drop_connection() 点击以切换源代码

正常断开连接,根据需要发送“LOGOUT”命令。

# File net-imap-0.5.4/lib/net/imap/sasl/client_adapter.rb, line 113
def_delegator :client, :drop_connection
drop_connection!() 点击以切换源代码

突然断开连接,在不注销的情况下关闭套接字。

# File net-imap-0.5.4/lib/net/imap/sasl/client_adapter.rb, line 118
def_delegator :client, :drop_connection!
host() 点击以切换源代码

客户端连接到的主机名。

# File net-imap-0.5.4/lib/net/imap/sasl/client_adapter.rb, line 99
def_delegator :client, :host
port() 点击以切换源代码

客户端连接到的目标端口。

# File net-imap-0.5.4/lib/net/imap/sasl/client_adapter.rb, line 104
def_delegator :client, :port
response_errors() 点击以切换源代码

返回由 run_command 引发的服务器响应错误数组。此数组中的异常不会断开连接。

# File net-imap-0.5.4/lib/net/imap/sasl/client_adapter.rb, line 108
def response_errors; [] end
run_command(mechanism, initial_response = nil, &continuations_handler) 点击以切换源代码

使用 command_name(请参阅 SASL::ProtocolAdapters::Generic#command_name)、mechanisminitial_response 和一个 continuations_handler 块调用 command_procinitial_response 是可选的;当它为 nil 时,它不会被发送到 command_proc。

yield 每个延续有效负载,使用每个 yield 的结果响应服务器,并返回结果。 不成功的结果必须引发异常。 该块中的异常必须导致命令失败。

覆盖此项的子类可以使用不同的 command_proc

# File net-imap-0.5.4/lib/net/imap/sasl/client_adapter.rb, line 90
def run_command(mechanism, initial_response = nil, &continuations_handler)
  command_proc or raise Error, "initialize with block or override"
  args = [command_name, mechanism, initial_response].compact
  command_proc.call(*args, &continuations_handler)
end
sasl_ir_capable?() 点击以切换源代码

协议、服务器和客户端是否都支持初始响应?

# File net-imap-0.5.4/lib/net/imap/sasl/client_adapter.rb, line 69
def_delegator :client, :sasl_ir_capable?