class URI::MATRIX
A matrix: URI
according to MSC2312
Attributes
action[R]
mxid[R]
mxid2[R]
via[R]
Public Class Methods
new(*args)
click to toggle source
Calls superclass method
# File lib/matrix_sdk/util/uri.rb, line 22 def initialize(*args) super(*args) @action = nil @authority = nil @mxid = nil @mxid2 = nil @via = nil raise InvalidComponentError, 'missing opaque part for matrix URL' if !@opaque && !@path if @path @authority = @host @authority += ":#{@port}" if @port else @path, @query = @opaque.split('?') @query, @fragment = @query.split('#') if @query&.include? '#' @path, @fragment = @path.split('#') if @path&.include? '#' @path = "/#{path}" @opaque = nil end components = @path.delete_prefix('/').split('/', -1) raise InvalidComponentError, 'component count must be 2 or 4' if components.size != 2 && components.size != 4 sigil = case components.shift when 'u', 'user' '@' when 'r', 'room' '#' when 'roomid' '!' else raise InvalidComponentError, 'invalid component in path' end component = components.shift raise InvalidComponentError, "component can't be empty" if component.nil? || component.empty? @mxid = MatrixSdk::MXID.new("#{sigil}#{component}") if components.size == 2 sigil2 = case components.shift when 'e', 'event' '$' else raise InvalidComponentError, 'invalid component in path' end component = components.shift raise InvalidComponentError, "component can't be empty" if component.nil? || component.empty? @mxid2 = MatrixSdk::MXID.new("#{sigil2}#{component}") end return unless @query @action = @query.match(/action=([^&]+)/)&.captures&.first&.to_sym @via = @query.scan(/via=([^&]+)/)&.flatten&.compact end
Public Instance Methods
mxid2?()
click to toggle source
# File lib/matrix_sdk/util/uri.rb, line 82 def mxid2? !@mxid2.nil? end